Не работает goto при ошибке 3021

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Не работает goto при ошибке 3021

Сообщение Slavicos » 22.11.2005 (Вт) 9:27

Код: Выделить всё
Private Sub ShowData()
Dim intI As Integer
On Error GoTo ERROR
For intI = 1 To intColls Step 1
Me.Text(intI).Text = T.Fields(Me.Label(intI).Caption)
Next intI
ERROR:
If Err.Number = 3021 Then
MsgBox ("ошибка обработана") '
End If
End Sub


то есть не бежит по goto

Эту ошибку нельзя отловить?
Больно не бить!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.11.2005 (Вт) 9:35

Скорее всего ошибки 3021 просто не возникает.
Lasciate ogni speranza, voi ch'entrate.

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Сообщение Slavicos » 22.11.2005 (Вт) 10:44

Да нет, ошибка возникает, а по goto не бежит
Больно не бить!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.11.2005 (Вт) 11:43

Slavicos писал(а):Да нет, ошибка возникает, а по goto не бежит


Бывает на некоторых ошибках.
Обычно помогает обработка данной операции по On Error Resume Next.
В конкретном случае должно сработать, к примеру, так:

Код: Выделить всё
Private Sub ShowData()
    Dim intI As Integer
    On Error Resume Next
    For intI = 1 To intColls Step 1
         Me.Text(intI).Text = T.Fields(Me.Label(intI).Caption)
         IF Err.Number then Exit For
     Next intI
     If Err.Number = 3021 Then
          MsgBox ("ошибка обработана") '
     End If
End Sub
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Сообщение Slavicos » 22.11.2005 (Вт) 12:23

Что-ж это красиво, попробую.
Пока сделал так:

Код: Выделить всё

Private Sub ShowData()
Dim intI As Integer
If (T.BOF = True) Then
T.MoveFirst
ElseIf (T.EOF = True) Then
T.MoveLast
End If
For intI = 1 To intColls Step 1
Me.Text(intI).Text = T.Fields(Me.Label(intI).Caption)
Next intI
End Sub
Больно не бить!

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 24.11.2005 (Чт) 15:17

попробуй задать условие для конкретной оибки (if err = 3021 then ...), хотя лучше и вправду ON ERROR RESUME NEXT. Я всегда так делаю.
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 02.12.2005 (Пт) 0:17

а непробовал зайти в options\Generat и в Error Trapping настройками побаловаться?

а ошибка 3021 ето чё - "Восстановлено питание для %1. Работа сервера возобновлена." интерестоно гЫде она у та так возникла :?

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 02.12.2005 (Пт) 0:37

SeT писал(а): хотя лучше и вправду ON ERROR RESUME NEXT. Я всегда так делаю.


Бывают случаи когда ета Фишка (On Error Resume Next) используется перед циклом For, то прога при компиляции в естественный код может войти в бесконечный цикл! Желаеш попробовать? На:

Код: Выделить всё
Public Sub Form_Load()
On Error Resume Next
Dim x As Integer, mArray as Variant
   For x = 0 To UBound(mArray)
        MsgBox "Test"
    Next x
End Sub




Эта программа в среде VB выдаст один MsgBox, а при компиляции в естественный код - войдет в бесконечный цикл! :roll:

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 02.12.2005 (Пт) 8:37

Бяка писал(а):Бывают случаи когда ета Фишка (On Error Resume Next) используется перед циклом For, то прога при компиляции в естественный код может войти в бесконечный цикл!


Вообще-то эту фишку, как и все другие, нужно применять в нужное время, в нужном месте и должным образом...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 02.12.2005 (Пт) 22:50

от и я протоже :D

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 03.12.2005 (Сб) 19:10

Хм, прикольно. Про такой баг не знал!
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 206

    TopList  
cron