Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в случае ошибки кода, сделать чтобы запускалась нужная форма. / 25 сообщений из 94, страница 1 из 4
24.05.2019, 07:20
    #39817440
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
И снова здравствуйте!
Есть форма, которая берёт данные из запроса, через VBA прикреплена ещё одна таблица, в которой берутся дополнительные данные Как в случае ошибки кода, сделать чтобы запускалась нужная форма, а не стандартная форма с запуском VBA конструктора.
По конкретике примерно так:
Код: vbnet
1.
If

Код: vbnet
1.
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код=" & Me.Код)

если данная строка выдаёт ошибку то,
Код: vbnet
1.
Then


Код: vbnet
1.
2.
3.
4.
5.
6.
           DoCmd.Close
          oshibka = "Не указано или корректно указано оконечное устройство, в закладке ""ТХО"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub
            Else
                 End If



Так вот проблема как объяснить машине вот это "ЕСЛИ"
...
Рейтинг: 0 / 0
24.05.2019, 07:25
    #39817441
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005И снова здравствуйте!
Есть форма, которая берёт данные из запроса, через VBA прикреплена ещё одна таблица, в которой берутся дополнительные данные Как в случае ошибки кода, сделать чтобы запускалась нужная форма, а не стандартная форма с запуском VBA конструктора.
По конкретике примерно так:
Код: vbnet
1.
If


Код: vbnet
1.
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код=" & Me.Код)


если данная строка выдаёт ошибку то,
Код: vbnet
1.
Then



Код: vbnet
1.
2.
3.
4.
5.
6.
           DoCmd.Close
          oshibka = "Не указано или корректно указано оконечное устройство, в закладке ""ТХО"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub
            Else
                 End If




Так вот проблема как объяснить машине вот это "ЕСЛИ"
Для начала установить в форме обработчик ошибок.
...
Рейтинг: 0 / 0
24.05.2019, 07:28
    #39817443
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005
Код: vbnet
1.
    oshibka = "Не указано или корректно указано оконечное устройство, в закладке ""ТХО"""



ошибка
Код: vbnet
1.
    oshibka = "Не указано или НЕ корректно указано оконечное устройство, в закладке ""ТХО"""
...
Рейтинг: 0 / 0
24.05.2019, 07:29
    #39817444
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROIДля начала установить в форме обработчик ошибок.

Я догадываюсь, КАК?
...
Рейтинг: 0 / 0
24.05.2019, 08:01
    #39817450
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROI,

Вот нашёл, но не пойму, что к чему
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case  Me.ActiveControl.Name
Case "RS"
MsgBox "Правильно введите номер расчетного счета!"
Case "CodeBank"
MsgBox "Правильно введите код банка"
Case "Company"
MsgBox "Название организации введено неверно"
End Select
Response = acDataErrContinue
End Sub


откуда берётся "Me.ActiveControl.Name"
и откуда берётся "RS","CodeBank","Company"
как мне свои данные подцепить???
...
Рейтинг: 0 / 0
24.05.2019, 08:25
    #39817456
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
...
Рейтинг: 0 / 0
24.05.2019, 08:59
    #39817463
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROI,

Ну прочитал, вот вроде нормальный обработчик, втыкаю -- не работает -(
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Sub BubbleWithFinal()

    On Error GoTo ErrorHandler

ExitHere:
    On Error Resume Next

    'сюда помещаем код, который отрабатывает в любом случае, обычно закрытие рекордсетов и разрушение переменных

           DoCmd.Close
          oshibka = "Не указано или не корректно указано оконечное устройство, в закладке ""ТХО"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub


Dim err_num As Long, err_descr As String, err_ln As String
    If Len(err_descr) > 0 Then GoTo ErrorRaise
    Exit Sub
    Resume '>> remove in release
ErrorHandler:
    err_num = Err.Number: err_descr = Err.Description: err_ln = Erl
    Debug.Assert Not (STOP_AT_ERROR And IS_DEV) '>> remove in release
    Resume ExitHere
ErrorRaise: On Error GoTo 0
    Err.Raise err_num, "BubbleWithFinal of Module1", err_descr & vbCrLf & "in BubbleWithFinal of Module1 at " & err_ln
End Sub
...
Рейтинг: 0 / 0
24.05.2019, 09:32
    #39817484
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,

я слегка ошалел от вашего "перехватчика"
я пользуюсь стандартным способом, в 90 случаях хватает.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub MySub()

On Error Goto HandleError

'ваш код
'ваш код
'ваш код

ExitProc:
    Exit Sub
    
HandleError:
    MsgBox vbCrLf & Err.Description & _
            vbCrLf & vbCrLf & "  Имя формы = " & Me.Name & _
            vbCrLf & vbCrLf & "  Имя процедуры = 'MySub'", _
            vbCritical, "Ошибка " & Err.Number
    Resume ExitProc

End Sub
...
Рейтинг: 0 / 0
24.05.2019, 10:24
    #39817540
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROI,

Сделал так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub MySub()

On Error GoTo HandleError

          DoCmd.Close
          oshibka = "Не определёно, удалённый ли объект."
                DoCmd.OpenForm "Ф_Ошибка"

ExitProc:
    Exit Sub
    
HandleError:
    MsgBox vbCrLf & Err.Description & _
            vbCrLf & vbCrLf & "  Имя формы = " & Me.Name & _
            vbCrLf & vbCrLf & "  Имя процедуры = 'MySub'", _
            vbCritical, "Ошибка " & Err.Number
    Resume ExitProc

End Sub


как ругался на строчку
Код: sql
1.
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код=" & Me.Код)


так и ругается, ничего не изменилось
...
Рейтинг: 0 / 0
24.05.2019, 10:40
    #39817559
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,

А чего говорит?
...
Рейтинг: 0 / 0
24.05.2019, 10:50
    #39817572
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROI,
...
Рейтинг: 0 / 0
24.05.2019, 10:50
    #39817574
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROI,
...
Рейтинг: 0 / 0
24.05.2019, 10:53
    #39817579
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,

Сама ошибка мне известна, он так ругается когда не ввели оконечное устройство или
оно не правильно записано, то есть в определённой таблице есть эталонные значения
оконечных устройств, и если ни с одним не совпадает то тогда выскакивает системная
ошибка, а я хочу чтобы выскакивала форма (или отчёт) в которой бы указывалось ,
что "Шарик ты балбес, введи правильно оконечное устройство!" -)
...
Рейтинг: 0 / 0
24.05.2019, 10:55
    #39817582
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,

Чтобы в конструктор ВБА не выкидывало, а то девчата теряются, и начинают творить неадекватности.-(
...
Рейтинг: 0 / 0
24.05.2019, 10:55
    #39817584
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,

попробуй так
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")
...
Рейтинг: 0 / 0
24.05.2019, 10:56
    #39817587
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Код: vbnet
1.
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")
...
Рейтинг: 0 / 0
24.05.2019, 10:59
    #39817592
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Или может какую то проверку сделать, что если
Код: vbnet
1.
Данные_Литерка.П_Лист_Прог_УОО


не соответствует ни одному значению
Код: vbnet
1.
Оборудование ОВО.Наименование


то
Код: vbnet
1.
2.
3.
4.
           DoCmd.Close
          oshibka = "Не указано или не корректно указано оконечное устройство, в закладке ""ТХО"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub


А если соответствует, то продолжай на здоровье.
Вот как то так.
...
Рейтинг: 0 / 0
24.05.2019, 11:01
    #39817596
Wawan2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
ROI
Код: vbnet
1.
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")


не, тоже самое

я не надолго отойду, спасибо за помощь, как приду так отпишусь.
...
Рейтинг: 0 / 0
24.05.2019, 11:10
    #39817607
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005ROI
Код: vbnet
1.
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")



не, тоже самое

я не надолго отойду, спасибо за помощь, как приду так отпишусь.
Dim rs32
set rs32 =
наверно должно быть
Dim rs32 As RecordSet
У вас ошибки в коде обработчик тут не причем.
...
Рейтинг: 0 / 0
24.05.2019, 11:47
    #39817647
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,

Вобщето для само-себя понимания лучше писать так:
DoCmd.Close acForm, "Имя Формы"

ИМХО апосля этого оператора возможно уже ничо не сработает, ну разве что кроме того, что есть (если оно есть) в процедурах, связанных с закрытием формы... возможно
вот это
oshibka = "Не указано или не корректно указано оконечное устройство, в закладке ""ТХО"""
DoCmd.OpenForm "Ф_Ошибка"
нужно писать До DoCmd.Close, а не после...
...
Рейтинг: 0 / 0
24.05.2019, 13:14
    #39817734
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Мне кажется что просто надо посчитать количество записей в RS и если COUNT=0 просто MSGBOXом сказать о неправильности критерия, вернуть курсор в нужное поле и выйти из процедуры,ELSE выполнять Ваш код.Wawan2005Wawan2005,
Чтобы в конструктор ВБА не выкидывало, а то девчата(понимаю-как юзеры) теряются, и начинают творить неадекватности.-( Юзер,по моему, про существование "конструктор VBA",даже подозревать не должен
...
Рейтинг: 0 / 0
24.05.2019, 13:23
    #39817741
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
вдогонку:RS простейший-
проверьте имя таблицы( у Вас [ Кр точка учета подчиненная]),тип поля и его имя "код"
...
Рейтинг: 0 / 0
24.05.2019, 14:12
    #39817778
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Wawan2005,
обработчик ошибок обычно входит в процедуру где он эти ошибки отслеживает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
sub sb()
on error goto handle
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код=" & Me.Код)
'... тело процедуры
ex:
Exit sub
handle:
if err.number=3075 then
 DoCmd.Close
          oshibka = "Не указано или корректно указано оконечное устройство, в закладке ""ТХО"""
                DoCmd.OpenForm "Ф_Ошибка"
resume ex
end sub


тот обработчик ошибок, который Вы нашли собирает ошибки с других процедур, в которых свои обработчики генерируют ошибки чтобы перейти к нему - в Вашем случае это не то, т.е. его можно использовать, но как это делать нужно перечитать топик

и попробовать сделать- в процедурах в модуле обработки прописывается что-то типа этого
Код: vbnet
1.
Err.Raise Err.Number, MistakeFunction, Err.Description  & " at " & Erl


и вылетаем в процедуру которая создала эту программу. а там уже может быть тот обработчик- именно он создан для того чтобы закрывать при ошибке какие то например программы (эксель, ворд) и пр. и делать в логе ошибок внешнем например файле запись
шикарный вплывающий обработчик ошибок сделал mrShin - часто им пользуюсь, переделав под себя
...
Рейтинг: 0 / 0
24.05.2019, 14:49
    #39817806
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
стесняюсь спросить: а какой тип у переменной rs32?
...
Рейтинг: 0 / 0
24.05.2019, 14:55
    #39817809
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
sdkuстесняюсь спросить: а какой тип у переменной rs32?
Variant
ROIDim rs32
set rs32 =
наверно должно быть
Dim rs32 As RecordSet
У вас ошибки в коде обработчик тут не причем.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в случае ошибки кода, сделать чтобы запускалась нужная форма. / 25 сообщений из 94, страница 1 из 4
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]