Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4      [все]
 Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
И снова здравствуйте!
Есть форма, которая берёт данные из запроса, через VBA прикреплена ещё одна таблица, в которой берутся дополнительные данные Как в случае ошибки кода, сделать чтобы запускалась нужная форма, а не стандартная форма с запуском VBA конструктора.
По конкретике примерно так:
If
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код=" & Me.Код)
если данная строка выдаёт ошибку то,
Then

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


Так вот проблема как объяснить машине вот это "ЕСЛИ"
24 май 19, 07:20    [21892627]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005
И снова здравствуйте!
Есть форма, которая берёт данные из запроса, через VBA прикреплена ещё одна таблица, в которой берутся дополнительные данные Как в случае ошибки кода, сделать чтобы запускалась нужная форма, а не стандартная форма с запуском VBA конструктора.
По конкретике примерно так:
If

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

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


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



Так вот проблема как объяснить машине вот это "ЕСЛИ"

Для начала установить в форме обработчик ошибок.
24 май 19, 07:25    [21892628]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Wawan2005
    oshibka = "Не указано или корректно указано оконечное устройство, в закладке ""ТХО"""


ошибка
    oshibka = "Не указано или НЕ корректно указано оконечное устройство, в закладке ""ТХО"""
24 май 19, 07:28    [21892630]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI
Для начала установить в форме обработчик ошибок.


Я догадываюсь, КАК?
24 май 19, 07:29    [21892632]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI,

Вот нашёл, но не пойму, что к чему
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"
как мне свои данные подцепить???
24 май 19, 08:01    [21892644]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005,

тынц
https://www.sql.ru/forum/1283697/obrabotka-oshibok-pri-vyzove-procedury-iz-procedury?hl=????????? ??????
еще
https://www.sql.ru/forum/afsearch.aspx?s=????? ?? ????? ????????? ??????&submit=?????&bid=4
24 май 19, 08:25    [21892651]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI,

Ну прочитал, вот вроде нормальный обработчик, втыкаю -- не работает -(
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
24 май 19, 08:59    [21892677]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005,

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

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
24 май 19, 09:32    [21892722]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI,

Сделал так:
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

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

так и ругается, ничего не изменилось
24 май 19, 10:24    [21892809]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005,

А чего говорит?
24 май 19, 10:40    [21892843]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI,

К сообщению приложен файл. Размер - 31Kb
24 май 19, 10:50    [21892864]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI,

К сообщению приложен файл. Размер - 90Kb
24 май 19, 10:50    [21892866]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Wawan2005,

Сама ошибка мне известна, он так ругается когда не ввели оконечное устройство или
оно не правильно записано, то есть в определённой таблице есть эталонные значения
оконечных устройств, и если ни с одним не совпадает то тогда выскакивает системная
ошибка, а я хочу чтобы выскакивала форма (или отчёт) в которой бы указывалось ,
что "Шарик ты балбес, введи правильно оконечное устройство!" -)
24 май 19, 10:53    [21892873]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Wawan2005,

Чтобы в конструктор ВБА не выкидывало, а то девчата теряются, и начинают творить неадекватности.-(
24 май 19, 10:55    [21892877]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005,

попробуй так
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")
24 май 19, 10:55    [21892879]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")
24 май 19, 10:56    [21892885]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Или может какую то проверку сделать, что если
Данные_Литерка.П_Лист_Прог_УОО

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

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

А если соответствует, то продолжай на здоровье.
Вот как то так.
24 май 19, 10:59    [21892892]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")

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

я не надолго отойду, спасибо за помощь, как приду так отпишусь.
24 май 19, 11:01    [21892897]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005
ROI
Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")


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

я не надолго отойду, спасибо за помощь, как приду так отпишусь.

Dim rs32
set rs32 =
наверно должно быть
Dim rs32 As RecordSet
У вас ошибки в коде обработчик тут не причем.
24 май 19, 11:10    [21892913]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
vmag
Member

Откуда: MP
Сообщений: 3158
Wawan2005,

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

ИМХО апосля этого оператора возможно уже ничо не сработает, ну разве что кроме того, что есть (если оно есть) в процедурах, связанных с закрытием формы... возможно
вот это
oshibka = "Не указано или не корректно указано оконечное устройство, в закладке ""ТХО"""
DoCmd.OpenForm "Ф_Ошибка"
нужно писать До DoCmd.Close, а не после...
24 май 19, 11:47    [21892970]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Мне кажется что просто надо посчитать количество записей в RS и если COUNT=0 просто MSGBOXом сказать о неправильности критерия, вернуть курсор в нужное поле и выйти из процедуры,ELSE выполнять Ваш код.
Wawan2005
Wawan2005,
Чтобы в конструктор ВБА не выкидывало, а то девчата(понимаю-как юзеры) теряются, и начинают творить неадекватности.-(
Юзер,по моему, про существование "конструктор VBA",даже подозревать не должен
24 май 19, 13:14    [21893081]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
вдогонку:RS простейший-
проверьте имя таблицы( у Вас [Крточка учета подчиненная]),тип поля и его имя "код"
24 май 19, 13:23    [21893091]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 504
Wawan2005,
обработчик ошибок обычно входит в процедуру где он эти ошибки отслеживает
+
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

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

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

и вылетаем в процедуру которая создала эту программу. а там уже может быть тот обработчик- именно он создан для того чтобы закрывать при ошибке какие то например программы (эксель, ворд) и пр. и делать в логе ошибок внешнем например файле запись
шикарный вплывающий обработчик ошибок сделал mrShin - часто им пользуюсь, переделав под себя
24 май 19, 14:12    [21893144]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
стесняюсь спросить: а какой тип у переменной rs32?
24 май 19, 14:49    [21893183]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
sdku
стесняюсь спросить: а какой тип у переменной rs32?

Variant
ROI
Dim rs32
set rs32 =
наверно должно быть
Dim rs32 As RecordSet
У вас ошибки в коде обработчик тут не причем.
24 май 19, 14:55    [21893189]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
ROI,
прошу прощения за повторение того на что Вы уже указывали
(не совсем внимательно смотрел)
24 май 19, 15:26    [21893221]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
sdku,

Я так думаю, у ТС проблемы не с "ловлей ошибок", а с исправлением (сказывается отсутствие знаний)
24 май 19, 15:30    [21893230]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
sdku
Мне кажется что просто надо посчитать количество записей в RS и если COUNT=0 просто MSGBOXом сказать о неправильности критерия, вернуть курсор в нужное поле и выйти из процедуры,ELSE выполнять Ваш код.

А как посчитать COUNT= ??? вот как суда вставить умные операторы???

Dim rs32, myStr11 As String, myStr12 As String, myStr15 As String, myStr16 As String
 Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")
Do Until rs32.EOF



sdku
,
Юзер,по моему, про существование "конструктор VBA",даже подозревать не должен

и я того же мнения, поэтому и хочу как то прописать, чтобы ни что не выскакивало, даже если они
накосячили и не проверили перед входом в другую форму.
24 май 19, 15:46    [21893241]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI
(сказывается отсутствие знаний)

полностью согласен
24 май 19, 15:47    [21893242]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1697
Wawan2005
sdku
Мне кажется что просто надо посчитать количество записей в RS и если COUNT=0 просто MSGBOXом сказать о неправильности критерия, вернуть курсор в нужное поле и выйти из процедуры,ELSE выполнять Ваш код.

А как посчитать COUNT= ??? вот как суда вставить умные операторы???

Dim rs32, myStr11 As String, myStr12 As String, myStr15 As String, myStr16 As String
 Set rs32 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = '" & Me.Код.Value & "'")
Do Until rs32.EOF




sdku
,
Юзер,по моему, про существование "конструктор VBA",даже подозревать не должен

и я того же мнения, поэтому и хочу как то прописать, чтобы ни что не выскакивало, даже если они
накосячили и не проверили перед входом в другую форму.

Dim rs32
Set rs32

Вас ничего не настораживает?
24 май 19, 15:50    [21893246]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
ROI
Вас ничего не настораживает?


Не.
Я же писал
Wawan2005
ROI
(сказывается отсутствие знаний)

полностью согласен

А что не так?
24 май 19, 16:01    [21893262]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
То откуда я это слизал, так и выглядело, я только "32" добавил.
24 май 19, 16:02    [21893263]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Dim rs32 as Recordset,myCount
set rs32=CurrentDB.OpenRecordset("инструкцияSQL-текстВашегоЗапроса"
rs32.MoveNext
myCount = rs.RecordCount  'число записей в RS
24 май 19, 16:12    [21893272]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
не дотянулся до цифровой клавиатуры
myCount = rs32.RecordCount
существуют и другие способы определения числа записей в запросе,например иметь сохраненный запрос и старым-добрым Dcount это сделать
24 май 19, 16:25    [21893283]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
sdku,
Попробовал вот так
Dim rs33 As Recordset, myCount
Set rs33 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код =" & Me.Код)
rs33.MoveNext
myCount = rs33.RecordCount  'число записей в RS
  
  If myCount = 0 Then
           DoCmd.Close
          oshibka = "Не заполнены данные АКТа хронометража в форме ""Дополнительные данные"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub
            Else
        End If


не помогло, так же ругается на ---Set rs33 =....

Попробовал вот так
If CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код =" & Me.Код) > 0 Then
            Else
           DoCmd.Close
          oshibka = "Не заполнены данные АКТа хронометража в форме ""Дополнительные данные"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub
            End If

сразу был послан в лес (вот это не понравилось OpenRecordset в If)
24 май 19, 16:29    [21893292]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Чтоб сказать что-то конкретное надо видеть Ваш интерфейс объекта и разъяснение "хотелки"-может достаточно обязательного заполнения поля,проверки вводимого значения,выбор из списка и т.д
24 май 19, 16:32    [21893298]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 504
Wawan2005, код в where заключается в кавычки, в конце ставится точка с запятой
Set rs33 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where ([Код] =" & Me.Код & ");")
24 май 19, 16:35    [21893303]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Wawan2005
То откуда я это слизал, так и выглядело, я только "32" добавил.
А наморщитm лоб при слизывании,слабо?
(поинтересоваться какого типа объект Recordset)
24 май 19, 16:37    [21893305]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
sdku
Чтоб сказать что-то конкретное надо видеть Ваш интерфейс объекта и разъяснение "хотелки"-может достаточно обязательного заполнения поля,проверки вводимого значения,выбор из списка и т.д


сейчас выложу
24 май 19, 16:37    [21893307]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Wawan2005,
CurrentDB.Openrecordset есть набор записей,а не значение.If имеет аргумент условие-он должен иметь значение True/False. А с чем Вы сравниваете, каково его значение, набор записей?
надо так:
If myCount=0 Then
'действия при отсутствии записей
Else
'при наличии
End If
24 май 19, 16:55    [21893325]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Вот тело базы. (можно сказать ФРАНКЕНШТЕЙН, так как собрана из ВАГОНА кусков)

https://cloud.mail.ru/public/3exk/3Hnxgp6fm

Когда откроется, увидите, я оставил 2 абонента,
1-ый абонент с ошибкой, (это в закладке ТХО не правильно указано УОО)
2-ой абонент нормальный.
Так вот ошибка эта выскакивает(или не выскакивает) при нажатии кнопки "Литерное дело" (именно там используется в листе программирования поле УОО)
24 май 19, 16:56    [21893326]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
sdku
Wawan2005,
CurrentDB.Openrecordset есть набор записей,а не значение.If имеет аргумент условие-он должен иметь значение True/False. А с чем Вы сравниваете, каково его значение, набор записей?
надо так:
If myCount=0 Then
'действия при отсутствии записей
Else
'при наличии
End If

я первый вариант так и сделал он на него не реагирует.
24 май 19, 16:58    [21893328]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Wawan2005
sdku,
Попробовал вот так
Dim rs33 As Recordset, myCount
Set rs33 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код =" & Me.Код)
rs33.MoveNext
myCount = rs33.RecordCount  'число записей в RS
  
  If myCount = 0 Then
           DoCmd.Close
          oshibka = "Не заполнены данные АКТа хронометража в форме ""Дополнительные данные"""
                DoCmd.OpenForm "Ф_Ошибка"
            Exit Sub
            Else
        End If



не помогло, так же ругается на ---Set rs33 =....
24 май 19, 16:58    [21893329]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
sdku,


А можно сделать, что при нажатии кнопки "Литерное дело", сверяется поле УОО , со веми записями
таблицы "Оборудование ОВО" и если нет совпадений то запускает форму "Ф_Ошибка", с соответствующим пояснением.
24 май 19, 17:06    [21893339]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
alecko
Wawan2005, код в where заключается в кавычки, в конце ставится точка с запятой
Set rs33 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where ([Код] =" & Me.Код & ");")

Ни первое, ни второе совершенно не обязательно.
24 май 19, 17:46    [21893368]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle
Ни первое, ни второе совершенно не обязательно.


Полностью согласен

У меня вот так работает и не жужжит-)
Set rs33 = CurrentDb.OpenRecordset("select * from [Крточка учета подчиненная] where Код = " & Me.Код)
24 май 19, 17:57    [21893379]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Wawan2005,
Разобраться с БД-займет больше времени чем сделать заново(в части касающейся Вашего вопроса)
поэтому:выложите форму(ы) с источником(если надо сверять с какими-то таблицами-их тоже) и поясните что надо сделать-как она себя должна вести.Никакого кода-интересует только какие данные отображаются в форме
24 май 19, 18:05    [21893385]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
перечитал-как говорится утро вечера мудреннее,но все-равно не понял
Wawan2005
И снова здравствуйте!
Есть форма, которая берёт данные из запроса(понятно),
через VBA прикреплена ещё одна таблица, в которой берутся дополнительные данные(не понятно-куда,как,зачем)
Как в случае ошибки кода(не понятно-код с ошибкой не "проглотит" редактор,может при ошибке выполнения),
сделать (не суть важно что именно) чтобы запускалась нужная форма, а не стандартная форма с запуском VBA конструктора.
25 май 19, 11:59    [21893715]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Попробовал воткнуть в кнопку проверку на совпадение УО

Private Sub Кн_Литерка_Click()
Dim rs33
Set rs33 = CurrentDb.OpenRecordset("select * [Оборудование ОВО]")
Do Until rs33.EOF
If rs33!Наименование <> Me.П_Дан_Подч_2_УО Then
    oshibka = "Не определён вид охраны"
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.OpenForm "Ф_Ошибка"
        Else
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Данные_Литерка"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
        End If
End Sub

Выдаёт ошибку "Do without Loop" что здесь не так, причём выдаёт это сообщение в любом случае,
Then или Else.
25 май 19, 19:34    [21893922]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
Попробовал воткнуть в кнопку проверку на совпадение УО

Private Sub Кн_Литерка_Click()
Dim rs33
Set rs33 = CurrentDb.OpenRecordset("select * [Оборудование ОВО]")
Do Until rs33.EOF
...............................
End Sub

Выдаёт ошибку "Do without Loop" что здесь не так.

Всё ведь написано - "Do без Loop".

Loop нужно добавить. И получить бесконечный цикл...
Или Do убрать.

И как-то все же почитать что-нибудь, что ли...
25 май 19, 19:50    [21893926]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle
И как-то все же почитать что-нибудь, что ли...

Спасибо за добрый совет, но так много чтива, а так хочется быстро-)
25 май 19, 20:06    [21893930]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Do - просто не убирается, ещё и Until - убрал, начинает ругаться на Set....
25 май 19, 20:10    [21893932]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Wawan2005,

добавил Loop
Private Sub Кн_Литерка_Click()
Dim rs33 'As Recordset
Set rs33 = CurrentDb.OpenRecordset("select * [Оборудование ОВО]")
Do Until rs33.EOF
If rs33.[Наименование] <> Me.П_Дан_Подч_2_УО Then
    oshibka = "Не определён вид охраны"
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.OpenForm "Ф_Ошибка"
Else
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Данные_Литерка"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
Loop
End Sub

ругается на Set...
25 май 19, 20:12    [21893933]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
__Michelle,

Do - просто не убирается, ещё и Until - убрал, начинает ругаться на Set....

М-м-м-м.....

То есть, пытаетесь убрать всего две буквы "Do" ?

Экстравагантно.
25 май 19, 20:32    [21893935]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
Wawan2005,

Set rs33 = CurrentDb.OpenRecordset("select * [Оборудование ОВО]")

ругается на Set...

А где же FROM ?
25 май 19, 20:35    [21893936]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Сделал так
Private Sub Кн_Литерка_Click()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Dim rs33 'As Recordset
Set rs33 = CurrentDb.OpenRecordset("select * from [Оборудование ОВО]")
Do Until rs33.EOF
If rs33!Наименование <> Me.П_Дан_Подч_2_УО Then
    oshibka = "Не определён вид охраны"
    DoCmd.OpenForm "Ф_Ошибка"
Else
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Данные_Литерка"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
Loop
End Sub


стал открывать Ф_Ошибка, но зависает
25 май 19, 21:16    [21893942]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Я тут последовал Вашему совету и напоролся на интересную вещь
· метод Find предназначен для поиска по значению одного столбца. Он принимает в качестве параметра критерий поиска, насколько нужно отступить от исходной позиции, направление поиска и откуда нужно начать поиск. Очень удобно, что при определения критерия поиска можно использовать оператор Like с подстановочными символами. При обнаружении нужной записи метод Find переставляет курсор на найденную запись, если же запись не обнаружена, то курсор устанавливается на EOF (или BOF, если поиск был назад). Например, чтобы найти все немецкие фирмы в нашем Recordset для таблицы Customers, можно использовать код вида

rs.Find "country = 'Germany'"

Do While Not rs.EOF

            Wscript.Echo "Название фирмы: "; rs.Fields("CompanyName")

            mark = rs.Bookmark

            rs.Find "country = 'Germany'", 1, , mark

Loop



Помогите мне (точнее, если можно, напишите кусок кода) на основе этого
25 май 19, 21:20    [21893944]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
но зависает

А в 21893926 так и написано:
__Michelle 
И получить бесконечный цикл...
25 май 19, 21:59    [21893958]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
__Michelle,

.................................
.................................
Помогите мне (точнее, если можно, напишите кусок кода) на основе этого

Нет, не можно.
Во-первых, я пишу сейчас с планшета.
Во-вторых, это было бы медвежьей услугой - Вы опять наскоро склеите коллаж из разнородных кусков,
а понимания не прибавится.
25 май 19, 22:06    [21893961]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Если честно, мне понятие и не нужно, мне нужно чтобы заработала база,
а учится 44 летнему майору полиции думаю уже поздно.

Может по позже всё таки вспомните про меня?! и чиркните кусочек.
25 май 19, 22:09    [21893963]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005,

Может.
Но не обещаю.
Сегодня вряд ли.
25 май 19, 22:20    [21893964]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Да я понял, заранее спасибо.
25 май 19, 22:26    [21893965]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
DarkMan
Member

Откуда:
Сообщений: 513
__Michelle
Во-вторых, это было бы медвежьей услугой -

Истину глаголите ,друХ мой. :))
__Michelle
Может.
Но не обещаю.
Сегодня вряд ли.

Сударыня , не поддавайтесь на провокации . Учиться можно и в 50 , и в 60 , а в 45 жизнь только начинается.
25 май 19, 22:42    [21893972]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 842
DarkMan
...Учиться можно и в 50 , и в 60...

Вредный и злой ты какой та.
А как же - ХАЛЯВА? Картинка с другого сайта.
25 май 19, 22:46    [21893974]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Да подставить свои формы и поля то не сложно, но там как то ДОА или АДО надо прибздюхать

Private Sub Кн_Литерка_Click()
?????????????
?????????????
?????????????
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
rs.Find "[Наименование] = Me.Me.П_Дан_Подч_2_УО"

Do While Not rs.EOF
'            Wscript.Echo "Название фирмы: "; rs.Fields("CompanyName")
            mark = rs.Bookmark
            rs.Find "[Наименование] = Me.Me.П_Дан_Подч_2_УО'", 1, , mark
Loop

If mark  <> Me.П_Дан_Подч_2_УО Then
    oshibka = "Не определён вид охраны"
    DoCmd.OpenForm "Ф_Ошибка"
Else
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Данные_Литерка"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
End Sub


а так то в принципе всё готово
P.S.: По крайней меря я так думаю-)
25 май 19, 23:10    [21893979]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
Да подставить свои формы и поля то не сложно, но там как то ДОА или АДО надо прибздюхать

Private Sub Кн_Литерка_Click()
?????????????
?????????????
?????????????
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
rs.Find "[Наименование] = Me.Me.П_Дан_Подч_2_УО"

Do While Not rs.EOF
'            Wscript.Echo "Название фирмы: "; rs.Fields("CompanyName")
            mark = rs.Bookmark
            rs.Find "[Наименование] = Me.Me.П_Дан_Подч_2_УО'", 1, , mark
Loop

If mark  <> Me.П_Дан_Подч_2_УО Then
    oshibka = "Не определён вид охраны"
    DoCmd.OpenForm "Ф_Ошибка"
Else
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "Данные_Литерка"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
End If
End Sub


а так то в принципе всё готово
P.S.: По крайней меря я так думаю-)


Вместо всей этой чуши.
Private Sub &#202;&#237;_&#203;&#232;&#242;&#229;&#240;&#234;&#224;_Click()
 If DCount("*", "[&#206;&#225;&#238;&#240;&#243;&#228;&#238;&#226;&#224;&#237;&#232;&#229; &#206;&#194;&#206;]", "&#205;&#224;&#232;&#236;&#229;&#237;&#238;&#226;&#224;&#237;&#232;&#229; = " & Me.&#207;_&#196;&#224;&#237;_&#207;&#238;&#228;&#247;_2_&#211;&#206;) = 0 Then
  oshibka = "&#205;&#229; &#238;&#239;&#240;&#229;&#228;&#229;&#235;&#184;&#237; &#226;&#232;&#228; &#238;&#245;&#240;&#224;&#237;&#251;"
  DoCmd.OpenForm "&#212;_&#206;&#248;&#232;&#225;&#234;&#224;"
 Else
  DoCmd.OpenForm "&#196;&#224;&#237;&#237;&#251;&#229;_&#203;&#232;&#242;&#229;&#240;&#234;&#224;"
 End If
End Sub
26 май 19, 13:08    [21894073]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Private Sub Кн_Литерка_Click()
 If DCount("*", "[Оборудование ОВО]", "Наименование = " & Me.П_Дан_Подч_2_УО) = 0 Then
  oshibka = "Не определён вид охраны"
  DoCmd.OpenForm "Ф_Ошибка"
 Else
  DoCmd.OpenForm "Данные_Литерка"
 End If
End Sub
26 май 19, 13:09    [21894075]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
__Michelle
....Вместо всей этой чуши...
ТСу об этом говорилось уже давно
sdku
....существуют и другие способы определения числа записей в запросе,например иметь сохраненный запрос и старым-добрым Dcount это сделать
С подходом "надо все и сразу" VBA не одолеть...(Я так думаю!-Мимино)
26 май 19, 14:15    [21894105]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
sdku
С подходом "надо все и сразу" VBA не одолеть...(Я так думаю!-Мимино)

Вряд ли ТС собирается одолевать VBA, сам же говорит "мне понятие и не нужно, мне нужно чтобы заработала база".
26 май 19, 14:22    [21894110]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Здравствуйте, спасибо, что не забыли про меня.
Попробовал, ругается на
 If DCount("*", "[Оборудование ОВО]", "Наименование = " & Me.П_Дан_Подч_2_УО) = 0 Then


P.S.: На всякий случай перекопировал [Оборудование ОВО], [Наименование], [Me.П_Дан_Подч_2_УО]
вдруг ошибся в написании, а ннет всё правильно, по прежнему ругается.
26 май 19, 20:26    [21894247]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
Как я понял "ТС" - это вы про меня, а почему "ТС"??
26 май 19, 20:27    [21894249]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
Как я понял "ТС" - это вы про меня, а почему "ТС"??

Так сокращенно называют автора топика, темы - "ТопикСтартер", калька с английского.

Wawan2005
ругается

Значит, Наименование - текстовое поле, нужны кавычки.
If DCount("*", "[Оборудование ОВО]", "Наименование = """ & Me.П_Дан_Подч_2_УО & """") = 0 Then
26 май 19, 21:42    [21894268]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle
Значит, Наименование - текстовое поле, нужны кавычки.


не помогло
26 май 19, 22:01    [21894279]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
vmag
Member

Откуда: MP
Сообщений: 3158
Wawan2005
не помогло


Раз учиться не охота и некогда, Вам нужно немного отвлечься... ну например, пойти и поймать завтра пару - тройку преступников, всё ж майор полиции...
26 май 19, 22:07    [21894281]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,
Пишет
Ошибка синтаксиса (пропущен оператор) в выражении запроса
'Наименование = "РСПИ Струна-5 Б-5 GSM+".
26 май 19, 22:10    [21894282]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
vmag
Раз учиться не охота и некогда, Вам нужно немного отвлечься... ну например, пойти и поймать завтра пару - тройку преступников, всё ж майор полиции..

Я хоть и майор, но специфика другая, я по должность "Главный специалист" (по образованию радиоинженер)
моя работа компьютеры и сигнализация!
26 май 19, 22:12    [21894284]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
__Michelle,
Пишет
Ошибка синтаксиса (пропущен оператор) в выражении запроса
'Наименование = "РСПИ Струна-5 Б-5 GSM+".

Покажите полностью, как выглядит в VBA строка с DCount.
26 май 19, 22:24    [21894290]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

If DCount("*", "[Оборудование ОВО]", "Наименование = """ & Me.П_Дан_Подч_2_УО & """") = 0 Then
26 май 19, 22:34    [21894292]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
If DCount("*", "[Оборудование ОВО]", "Наименование = """ & Me.П_Дан_Подч_2_УО & """") = 0 Then
  oshibka = "Не определён вид охраны"
  DoCmd.OpenForm "Ф_Ошибка"
 Else
  DoCmd.OpenForm "Данные_Литерка"
 End If
26 май 19, 22:35    [21894295]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347


К сообщению приложен файл. Размер - 43Kb
26 май 19, 22:43    [21894299]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Замените в П_Дан_Подч_2_УО кавычки на апострофы.
If DCount("*", "[Оборудование ОВО]", "Наименование = """ & Replace(Me.П_Дан_Подч_2_УО, """", "'") & """") = 0 Then 
26 май 19, 23:06    [21894308]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle
Замените в П_Дан_Подч_2_УО кавычки на апострофы.
If DCount("*", "[Оборудование ОВО]", "Наименование = """ & Replace(Me.П_Дан_Подч_2_УО, """", "'") & """") = 0 Then 


Ошибку перестала давать, но постоянно уходит на ветну Ошибка, не зависимо от того совпадает или нет с таблице Оборудование.
26 май 19, 23:19    [21894313]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Перелистал весь список Наименование, всегда уходит на ветку Ошибка.
26 май 19, 23:27    [21894315]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Надо было и там, и там менять.
If DCount("*", "[Оборудование ОВО]", "Replace(Наименование,'""','')=""" & Replace(Me.П_Дан_Подч_2_УО, """", "") & """") = 0 Then 
26 май 19, 23:33    [21894319]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Попробовал узнать чему равно DCoint получилось , не значение поля Наименование,
а цифра 18 равная количеству строк таблицы Оборудование ОВО.

К сообщению приложен файл. Размер - 39Kb
26 май 19, 23:37    [21894321]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
__Michelle,

Перелистал весь список Наименование, всегда уходит на ветку Ошибка.

Нужно иметь словарь и использовать в основной таблице не словесные значения, а коды из словаря.
И сравнивать потом между собой не слова, а числа.
Меньше проблем будет.
26 май 19, 23:37    [21894322]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Ввёл последнее значение , всё заработало, огромное спасибо.
26 май 19, 23:39    [21894323]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle
Wawan2005
__Michelle,

Перелистал весь список Наименование, всегда уходит на ветку Ошибка.

Нужно иметь словарь и использовать в основной таблице не словесные значения, а коды из словаря.
И сравнивать потом между собой не слова, а числа.
Меньше проблем будет.


Извините, я это сообщение писал до того как увидел Ваше.
26 май 19, 23:40    [21894324]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
__Michelle
Member

Откуда:
Сообщений: 3050
Wawan2005
__Michelle,

Попробовал узнать чему равно DCoint получилось , не значение поля Наименование,
а цифра 18 равная количеству строк таблицы Оборудование ОВО.

Все верно.

Все же придется Вам прочитать про DCount.
Для чего используется и что возвращает.
26 май 19, 23:41    [21894325]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle,

Ещё раз ОГРОМНОЕ СПАСИБО, за ваше умение и огромное терпение, при общении с ... ну с такими как я. -))
26 май 19, 23:42    [21894326]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
Wawan2005
Member

Откуда: Волгоград
Сообщений: 347
__Michelle

Все же придется Вам прочитать про DCount.
Для чего используется и что возвращает.


Попробую.
26 май 19, 23:43    [21894327]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
DarkMan
Member

Откуда:
Сообщений: 513
__Michelle
Все же придется Вам прочитать про DCount.
Для чего используется и что возвращает.

Ох не люблю я эти самые DSum, DCount и им подобные . Лично для себя я сделал такую штуку .На форуме уже тестировалась скорость выполнения по DCount сравнению с Recordset , практически одинаково . А плюсом , лично для меня является то , что создавая Запрос , я более наглядно вижу , то что мне нужно , к тому же создав строку через переменную , при пошаговой отладке я конкретно вижу , что я подсовываю в функцию. Это мое личное мнение , но мне так удобнее, и я никогда не использую DSum, DCount . :))
Public Function fRs(strS As String) As DAO.Recordset
   Dim db As Database
   Set db = CurrentDb()
Set fRs = db.OpenRecordset(strS)
End Function
27 май 19, 08:48    [21894401]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
DarkMan
Ох не люблю я эти самые DSum, DCount и им подобные
Ох люблю я такие аргументированные утверждения-по словам автора все доменные функции созданы для идиётов.
(хотя,если разобраться,где то глубоко-на системном уровне,они работают именно так,а довольно часто намного рациональней, чем предлагают "рационализаторы")
27 май 19, 12:05    [21894606]     Ответить | Цитировать Сообщить модератору
 Re: Как в случае ошибки кода, сделать чтобы запускалась нужная форма.  [new]
DarkMan
Member

Откуда:
Сообщений: 513
sdku
все доменные функции созданы для идиётов.

каждый думает в меру своей распущенности. :))
27 май 19, 12:48    [21894688]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4      [все]
Все форумы / Microsoft Access Ответить