powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
25 сообщений из 94, страница 1 из 4
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817441
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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817443
Wawan2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wawan2005
Код: vbnet
1.
    oshibka = "Не указано или корректно указано оконечное устройство, в закладке ""ТХО"""



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

Я догадываюсь, КАК?
...
Рейтинг: 0 / 0
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817456
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817484
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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817559
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wawan2005,

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

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

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

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


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


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


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


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

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



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

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

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

ИМХО апосля этого оператора возможно уже ничо не сработает, ну разве что кроме того, что есть (если оно есть) в процедурах, связанных с закрытием формы... возможно
вот это
oshibka = "Не указано или не корректно указано оконечное устройство, в закладке ""ТХО"""
DoCmd.OpenForm "Ф_Ошибка"
нужно писать До DoCmd.Close, а не после...
...
Рейтинг: 0 / 0
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817734
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется что просто надо посчитать количество записей в RS и если COUNT=0 просто MSGBOXом сказать о неправильности критерия, вернуть курсор в нужное поле и выйти из процедуры,ELSE выполнять Ваш код.Wawan2005Wawan2005,
Чтобы в конструктор ВБА не выкидывало, а то девчата(понимаю-как юзеры) теряются, и начинают творить неадекватности.-( Юзер,по моему, про существование "конструктор VBA",даже подозревать не должен
...
Рейтинг: 0 / 0
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817741
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:RS простейший-
проверьте имя таблицы( у Вас [ Кр точка учета подчиненная]),тип поля и его имя "код"
...
Рейтинг: 0 / 0
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #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
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817806
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стесняюсь спросить: а какой тип у переменной rs32?
...
Рейтинг: 0 / 0
Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
    #39817809
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuстесняюсь спросить: а какой тип у переменной rs32?
Variant
ROIDim rs32
set rs32 =
наверно должно быть
Dim rs32 As RecordSet
У вас ошибки в коде обработчик тут не причем.
...
Рейтинг: 0 / 0
25 сообщений из 94, страница 1 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в случае ошибки кода, сделать чтобы запускалась нужная форма.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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