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

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

Откуда: г. Тюмень
Сообщений: 1789
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

Откуда: г. Тюмень
Сообщений: 1789
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

Откуда: Краснодар
Сообщений: 6260
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

Откуда: Краснодар
Сообщений: 6260
не дотянулся до цифровой клавиатуры
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

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

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

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

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


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

Откуда: Краснодар
Сообщений: 6260
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

Откуда:
Сообщений: 3110
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

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

Откуда: Краснодар
Сообщений: 6260
перечитал-как говорится утро вечера мудреннее,но все-равно не понял
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

Откуда:
Сообщений: 3110
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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить