|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Здравствуйте! Вопрос следующий: Есть форма с полями Поле1, Поле2, Поле3. Значение, вводимое в Поле2, согласно условию решаемой задачи должно быть строго больше значения в Поле1. Хочу, в этой связи, написать процедуру обработки события, которая проверяла бы это условие и в случае его нарушения выводила бы сообщение об ошибке, очищала бы содержимое Поле2 и возвращала бы фокус в Поле2. Примерно вот так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
В итоге, окно с сообщением об ошибке появляется. После нажатия кнопки ОК Поле2 очищается (для повторного ввода корректного значения), но фокус перемещается в следующее поле - Поле3 . Строка Поле2.SetFocus не выполняется по какой-то причине, третий день не могу разобраться по какой. Прошу помощи... ПРИМЕЧАНИЕ: В более ранней версии офиса (2003) данная процедура работала корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 18:04 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
roman-j52, Проверять условия надо на Before а не AfterUpdate Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 19:29 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
roman-j52...ПРИМЕЧАНИЕ: В более ранней версии офиса (2003) данная процедура работала корректно. Не верю!!!(Станиславский) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 19:32 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
roman-j52, по поводу фокусировки. Если не получается "поймать" фокус простецким обращением Поле2.SetFocus, сделайте это "с поклоном": сначала установите фокус на саму форму, содержащее поле. Затем, если надо - на подформу, затем - на само нужное вам поле. Условно говоря: Вариант 1: Forms("Форма")("Подформа")![Поле].SetFocus Вариант 2: Forms("Форма").SetFocus Forms("Форма")("Подформа").SetFocus Forms("Форма")("Подформа")![Поле].SetFocus ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 20:09 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
roman-j52, строка выполняется - просто далее следующие события переносят курсор на Поле3. (Кстати в месаге эти "Поле1", "Поле2" - они так и на форме называются?) поэтому всю обработку лучше сделать по получению фокуса Полем 3, если Поле2 меньше чем Поле1, то курсор возвращается в это Поле2. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 22:03 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
повторяю для тех кто в танке: Проверять валидность надо на событии "до обновления" и отменять его при не выполнении условия Проверять "после обновления"(которое нельзя отменить)-задать значение полю,и тут же его удалять вершина рациональности При отмене "до обновления" фокус станется на этом поле-из него нельзя будет выйти до внесения "правильного" значения ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2017, 22:21 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
извиняюсь: me.undo исправить на me.поле2.undo ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2017, 00:37 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuroman-j52, Проверять условия надо на Before а не AfterUpdate Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Спасибо Вам большое за дельный совет! Заработало так, как мне надо! Эх, учить и учить мне азы! Другим коллегам, не равнодушным к моему безграмотному горю и откликнувшимся - тоже нижайший поклон и большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2017, 15:39 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuповторяю для тех кто в танке: Проверять валидность надо на событии "до обновления" и отменять его при не выполнении условия Проверять "после обновления"(которое нельзя отменить)-задать значение полю,и тут же его удалять вершина рациональности При отмене "до обновления" фокус станется на этом поле-из него нельзя будет выйти до внесения "правильного" значения Как говорила моя бабушка: "Дай Вам Бог здоровья"! Мучилась целый день, не могла понять, почему перемещение фокуса не срабатывает ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 13:33 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Но вообще, как на этом VBA какие-то удобности добавлять в программу - это просто треш какой-то! Добавила это событие - перестала целая цепочка других событий срабатывать( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 17:28 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
авторPrivate Sub поле2_BeforeUpdate(Cancel As Integer) If ISNULL(Me.поле2) Then MsgBox"Необходимо заполнить это поле" Me.поле2.Undo Cancel = True End If End Sub В общем, у меня это не совсем корректно работает. Проблема в том, что на уровне таблицы я на данный момент не могу запретить иметь пустое поле, т.к. архивы переносимых баз за несколько лет нужно пересматривать специалистам вручную и заполнять пропуски. Т.е. задача пройтись по записям и проверить ( не программно, а человеку, т.к. масса нестыковок). Вот с чем столкнулась в такой конструкции - если в этом пустом поле просто нажать клавишу табуляции или щелкнуть в другое поле, то событие BeforeUpdate просто не происходит. И программа спокойно пропускает дальше, оставив его пустым. Если редактирование начать, то да, сработает - но это бессмысленная ситуация, если уж редактировать начали, то какой-то символ поместили ( искусственно проверила выделив введенное и удалив). Вот такая конструкция срабатывает один раз: авторPrivate Sub Поле2_LostFocus() If IsNull(Me.Поле2) Then MsgBox "Обязательно нужно заполнить Поле2" Forms!Form1![Поле2].SetFocus End If End Sub Но если проигнорировать и щелкнуть на следующее поле, то спокойно его покидает. Причем, если я ее добавляю, то первая вышеуказанная конструкция вообще перестает срабатывать. Подскажите, пожалуйста, в чем дело? Думала логика событий такая: Объект получает фокус, происходят какие-то изменения, теряет фокус В какое событие все-таки нужно поместить проверки? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 18:43 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Chara, обработка этого события верный,"проверенный веками" код,а вот "цепочка других событий" лично у меня вызывает сомнение:если есть желание выкладывайте свои наработки и поясните чего добиваетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 18:44 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuChara, обработка этого события верный,"проверенный веками" код,а вот "цепочка других событий" лично у меня вызывает сомнение:если есть желание выкладывайте свои наработки и поясните чего добиваетесь. Да если даже это первое событие единственно, то оно не срабатывает в вышеописанном случае, когда по полям быстренько проходят клавишей табуляции, например. Ничего такого нет в коде эксклюзивного, от слова совсем ( никаких накруток программирования). Access правда впервые юзаю. Мастером сделала разделенную форму на основе запроса. В одной части формы индивидуальное обращение к записи последовательно по всем полям, в другой для наглядности таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:01 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
То, что не срабатывает именно само событие я проверила, вставив в него вывод мессаджа без всяких условий ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:06 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
CharaДа если даже это первое событие единственно, то оно не срабатывает в вышеописанном случае, когда по полям быстренько проходят клавишей табуляции, например. Стесняюсь спросить:а при выходе из поля без изменения его значения произойдет событие "до обновления"-какой реакции Вы ожидаете(ЧТО должно произойти)??? (ничего и не происходит) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:19 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuПроверять валидность надо на событии "до обновления" и отменять его при не выполнении условия Проверять "после обновления"(которое нельзя отменить)-задать значение полю,и тут же его удалять вершина рациональности При отмене "до обновления" фокус станется на этом поле- из него нельзя будет выйти до внесения "правильного" значения Это ваша цитата? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:23 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Chara....Ничего такого нет в коде эксклюзивного, от слова совсем ( никаких накруток программирования). Access правда впервые юзаю.... Весьма самоуверенно,насчет программного кода... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:24 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Значит этот код не подходит для проверки пустое осталось это поле или нет, правильно понимаю? А что тогда в Акссессе еще есть для такого решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:25 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuChara....Ничего такого нет в коде эксклюзивного, от слова совсем ( никаких накруток программирования). Access правда впервые юзаю.... Весьма самоуверенно,насчет программного кода... Я имела ввиду, что ничего, помимо автоматизированного создания связки запрос-форма не сделала в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:27 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
коль Вы все проверяете вручную,то простым запросом на выборку выводите записи с пустыми значениями в полях(которые не должны быть пусты),заполняйте их и после заполнения установите,в таблице атрибут "обязательное поле"-фсе... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:33 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuколь Вы все проверяете вручную,то простым запросом на выборку выводите записи с пустыми значениями в полях(которые не должны быть пусты),заполняйте их и после заполнения установите,в таблице атрибут "обязательное поле"-фсе... Спасибо за вариант! Но так не получится, к сожалению) Это многоплановые данные, которые в таблицах комплексно надо смотреть, именно по сравнению с другими, заполненными. Но неважно. Всё-таки, есть событие, которое однозначно может запретить покидать пустое поле? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:50 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Вот в этой статье указано свойство "Правило проверки" для элемента формы. Я его не нашла( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 20:10 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Chara...Всё-таки, есть событие, которое однозначно может запретить покидать пустое поле?LostFocus() ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 20:24 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
Исправить пост тут не дают. Нашла, оно называется теперь "Условие на значение", как раз с удобным свойством Текста ошибки, одно только но - работает точно так же, игнорируя просто проход по полю, запросто оставляя его пустым, если это не добавление новой записи, а проход по старым полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 20:24 |
|
Помогите разобраться с установкой курсора в поле. Access 2016
|
|||
---|---|---|---|
#18+
sdkuChara...Всё-таки, есть событие, которое однозначно может запретить покидать пустое поле?LostFocus() Ну я так и предполагала, тогда что не так, почему однажды вернув фокус, поле запросто можно покинуть? авторPrivate Sub Поле2_LostFocus() If IsNull(Me.Поле2) Then MsgBox "Обязательно нужно заполнить Поле2" Forms!Form1![Поле2].SetFocus End If End Sub В LostFocus() нужно что-то другое написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 20:27 |
|
|
start [/forum/topic.php?fid=45&msg=39844807&tid=1610548]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 452ms |
0 / 0 |