powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите разобраться с установкой курсора в поле. Access 2016
50 сообщений из 50, показаны все 2 страниц
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415649
roman-j52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Вопрос следующий:
Есть форма с полями Поле1, Поле2, Поле3.
Значение, вводимое в Поле2, согласно условию решаемой задачи должно быть строго больше значения в Поле1.
Хочу, в этой связи, написать процедуру обработки события, которая проверяла бы это условие и в случае его нарушения выводила бы сообщение об ошибке, очищала бы содержимое Поле2 и возвращала бы фокус в Поле2.

Примерно вот так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Поле2_AfterUpdate()
Dim Мsg1
Мsg1 = "Ошибка! Значение в Поле 2 должно быть больше значения в Поле 1."
If Поле2 < Поле1 Then
    MsgBox msg1
    Поле2 = Null
End If
    Поле2.SetFocus
End Sub



В итоге, окно с сообщением об ошибке появляется. После нажатия кнопки ОК Поле2 очищается (для повторного ввода корректного значения), но фокус перемещается в следующее поле - Поле3 . Строка Поле2.SetFocus не выполняется по какой-то причине, третий день не могу разобраться по какой. Прошу помощи...
ПРИМЕЧАНИЕ: В более ранней версии офиса (2003) данная процедура работала корректно.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415676
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman-j52,
Проверять условия надо на Before а не AfterUpdate
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub поле2_BeforeUpdate(Cancel As Integer)
If Me.поле2 < Me.поле1 Then
MsgBox"bla-bla"
Me.Undo
Cancel = True
End If
End Sub
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415677
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman-j52...ПРИМЕЧАНИЕ: В более ранней версии офиса (2003) данная процедура работала корректно. Не верю!!!(Станиславский)
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415697
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman-j52,

по поводу фокусировки. Если не получается "поймать" фокус простецким обращением Поле2.SetFocus, сделайте это "с поклоном": сначала установите фокус на саму форму, содержащее поле. Затем, если надо - на подформу, затем - на само нужное вам поле.
Условно говоря:
Вариант 1:
Forms("Форма")("Подформа")![Поле].SetFocus

Вариант 2:
Forms("Форма").SetFocus
Forms("Форма")("Подформа").SetFocus
Forms("Форма")("Подформа")![Поле].SetFocus
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415714
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman-j52, строка выполняется - просто далее следующие события переносят курсор на Поле3. (Кстати в месаге эти "Поле1", "Поле2" - они так и на форме называются?)
поэтому всю обработку лучше сделать по получению фокуса Полем 3, если Поле2 меньше чем Поле1, то курсор возвращается в это Поле2.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Поле3_GotFocus()
Dim Мsg1 as string, str(1) as string
str(0)="Поле1": str(1)="Поле2" ' здесь названия полей которые будут на форме
Мsg1 = "Ошибка! Значение в " & str(0) & " должно быть больше значения в " & str(1) & "."
If Me.Controls("Поле2") < Me.Controls("Поле1") Then
    MsgBox msg1,vbOk, "Проверка корректности ввода в " & str(1)
    Me.Controls("Поле2") = Null
    Me.Controls("Поле2").SetFocus
End If

End Sub
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415720
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторяю для тех кто в танке:
Проверять валидность надо на событии "до обновления" и отменять его при не выполнении условия
Проверять "после обновления"(которое нельзя отменить)-задать значение полю,и тут же его удалять вершина рациональности
При отмене "до обновления" фокус станется на этом поле-из него нельзя будет выйти до внесения "правильного" значения
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415743
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь:
me.undo исправить на me.поле2.undo
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39415868
roman-j52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuroman-j52,
Проверять условия надо на Before а не AfterUpdate
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub поле2_BeforeUpdate(Cancel As Integer)
If Me.поле2 < Me.поле1 Then
MsgBox"bla-bla"
Me.Undo
Cancel = True
End If
End Sub



Спасибо Вам большое за дельный совет! Заработало так, как мне надо! Эх, учить и учить мне азы! Другим коллегам, не равнодушным к моему безграмотному горю и откликнувшимся - тоже нижайший поклон и большое спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844622
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuповторяю для тех кто в танке:
Проверять валидность надо на событии "до обновления" и отменять его при не выполнении условия
Проверять "после обновления"(которое нельзя отменить)-задать значение полю,и тут же его удалять вершина рациональности
При отмене "до обновления" фокус станется на этом поле-из него нельзя будет выйти до внесения "правильного" значения
Как говорила моя бабушка: "Дай Вам Бог здоровья"!
Мучилась целый день, не могла понять, почему перемещение фокуса не срабатывает
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844757
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но вообще, как на этом VBA какие-то удобности добавлять в программу - это просто треш какой-то!
Добавила это событие - перестала целая цепочка других событий срабатывать(
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844794
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор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
Но если проигнорировать и щелкнуть на следующее поле, то спокойно его покидает.

Причем, если я ее добавляю, то первая вышеуказанная конструкция вообще перестает срабатывать.

Подскажите, пожалуйста, в чем дело?
Думала логика событий такая:
Объект получает фокус, происходят какие-то изменения, теряет фокус
В какое событие все-таки нужно поместить проверки?
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844796
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara,
обработка этого события верный,"проверенный веками" код,а вот "цепочка других событий" лично у меня вызывает сомнение:если есть желание выкладывайте свои наработки и поясните чего добиваетесь.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844801
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuChara,
обработка этого события верный,"проверенный веками" код,а вот "цепочка других событий" лично у меня вызывает сомнение:если есть желание выкладывайте свои наработки и поясните чего добиваетесь.
Да если даже это первое событие единственно, то оно не срабатывает в вышеописанном случае, когда по полям быстренько проходят клавишей табуляции, например.

Ничего такого нет в коде эксклюзивного, от слова совсем ( никаких накруток программирования). Access правда впервые юзаю.
Мастером сделала разделенную форму на основе запроса.
В одной части формы индивидуальное обращение к записи последовательно по всем полям, в другой для наглядности таблица.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844803
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что не срабатывает именно само событие я проверила, вставив в него вывод мессаджа без всяких условий
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844805
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CharaДа если даже это первое событие единственно, то оно не срабатывает в вышеописанном случае, когда по полям быстренько проходят клавишей табуляции, например. Стесняюсь спросить:а при выходе из поля без изменения его значения произойдет событие "до обновления"-какой реакции Вы ожидаете(ЧТО должно произойти)???
(ничего и не происходит)
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844806
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuПроверять валидность надо на событии "до обновления" и отменять его при не выполнении условия
Проверять "после обновления"(которое нельзя отменить)-задать значение полю,и тут же его удалять вершина рациональности
При отмене "до обновления" фокус станется на этом поле- из него нельзя будет выйти до внесения "правильного" значения
Это ваша цитата?
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844807
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara....Ничего такого нет в коде эксклюзивного, от слова совсем ( никаких накруток программирования). Access правда впервые юзаю....
Весьма самоуверенно,насчет программного кода...
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844808
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит этот код не подходит для проверки пустое осталось это поле или нет, правильно понимаю?

А что тогда в Акссессе еще есть для такого решения?
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844809
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuChara....Ничего такого нет в коде эксклюзивного, от слова совсем ( никаких накруток программирования). Access правда впервые юзаю....
Весьма самоуверенно,насчет программного кода...
Я имела ввиду, что ничего, помимо автоматизированного создания связки запрос-форма не сделала в данном случае.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844810
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коль Вы все проверяете вручную,то простым запросом на выборку выводите записи с пустыми значениями в полях(которые не должны быть пусты),заполняйте их и после заполнения установите,в таблице атрибут "обязательное поле"-фсе...
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844813
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuколь Вы все проверяете вручную,то простым запросом на выборку выводите записи с пустыми значениями в полях(которые не должны быть пусты),заполняйте их и после заполнения установите,в таблице атрибут "обязательное поле"-фсе...
Спасибо за вариант! Но так не получится, к сожалению) Это многоплановые данные, которые в таблицах комплексно надо смотреть, именно по сравнению с другими, заполненными. Но неважно.

Всё-таки, есть событие, которое однозначно может запретить покидать пустое поле?
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844818
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот в этой статье указано свойство "Правило проверки" для элемента формы. Я его не нашла(
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844822
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara...Всё-таки, есть событие, которое однозначно может запретить покидать пустое поле?LostFocus()
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844823
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исправить пост тут не дают. Нашла, оно называется теперь "Условие на значение", как раз с удобным свойством Текста ошибки, одно только но - работает точно так же, игнорируя просто проход по полю, запросто оставляя его пустым, если это не добавление новой записи, а проход по старым полям.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844824
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuChara...Всё-таки, есть событие, которое однозначно может запретить покидать пустое поле?LostFocus()

Ну я так и предполагала, тогда что не так, почему однажды вернув фокус, поле запросто можно покинуть?

авторPrivate Sub Поле2_LostFocus()
If IsNull(Me.Поле2) Then
MsgBox "Обязательно нужно заполнить Поле2"
Forms!Form1![Поле2].SetFocus
End If
End Sub

В LostFocus() нужно что-то другое написать?
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844834
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CharaСпасибо за вариант! Но так не получится, к сожалению) Это многоплановые данные, которые в таблицах комплексно надо смотреть, именно по сравнению с другими, заполненными. Но неважно. А вот это говорит о неправильно спроектированной БД При создании которой вариант "а если пользователь оставит поле пустым" не рассматривался и в данный момент варианта,кроме предложенного Вам, я не вижу.
(одно из основных правил "базостроения" гласит:изменение данных в таблице не должно изменять их(данные)в других таблицах)
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844836
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:а на стадии разработки это решается элементарно
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844838
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще:
Код: vbnet
1.
....isNull(поле) and поле=""....
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844839
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuCharaСпасибо за вариант! Но так не получится, к сожалению) Это многоплановые данные, которые в таблицах комплексно надо смотреть, именно по сравнению с другими, заполненными. Но неважно. А вот это говорит о неправильно спроектированной БД При создании которой вариант "а если пользователь оставит поле пустым" не рассматривался и в данный момент варианта,кроме предложенного Вам, я не вижу.
(одно из основных правил "базостроения" гласит:изменение данных в таблице не должно изменять их(данные)в других таблицах)
Спасибо, конечно, на добром слове.
База спроектирована (для дальнейшего пополнения) вполне себе хорошо и нормализовано. Со всеми выделенными справочниками и подчиненными таблицами.
Мне из кучи разрозненного хлама предстоит собрать как раз-таки упорядоченную базу. В ней есть три важных поля, которые должны стать атрибутами записи в основном хранилище, на их основе создам уникальный индекс. И вот эти поля черти как были означены в разрозненных экселевских файликах.
Хотелось просто на первичном этапе людям помочь не пропускать при реконструкции.
Странно, что в Аксесс какие-то танцы с бубнами нужны, чтобы элементарное событие одного элемента на форме запрограммировать. Не ожидала вообще. Времени жалко.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844840
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuвдогонку:а на стадии разработки это решается элементарно
То, что знаю это упоминала. Когда всё наполнение исправят, тогда и включу.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844841
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения не AND а OR- можно проверять длину строки LEN(поле)=0
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844859
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CharaХотелось просто на первичном этапе людям помочь не пропускать при реконструкции.

И для этого решено вручную пробежаться по полям в форме Tab'ом?

Занятно.

А почему не показать пользователю пустые поля, просто подкрасив их через условное форматирование?

Про выявление их запросом даже не спрашиваю...
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844868
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleCharaХотелось просто на первичном этапе людям помочь не пропускать при реконструкции.

И для этого решено вручную пробежаться по полям в форме Tab'ом?

Занятно.

А почему не показать пользователю пустые поля, просто подкрасив их через условное форматирование?

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

По САБЖу - поля и так прекрасно видно, что они пустые. Главное, чтобы они пустыми после проверки не остались. Запросы уже выше объяснила, что не подойдут.
Нужно, чтобы люди постепенно вдумчиво заполнили поля старых данных, сравнивая с бумажными разношерстными архивами и окружающими данными. Не всегда машина лучше человека может что-то сделать. А вот когда уже будет общий знаменатель, тогда и проблема отпадет.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844870
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuпрошу прощения не AND а OR- можно проверять длину строки LEN(поле)=0
Я вот тоже про это думала, но с синтаксисом путаюсь пока. Учебник нормальный не удалось прочесть, попадаются какие-то или для чайников, или уже совсем дебри, а времени мало. Гуглю вот, но часто или тупиковое, или сленг:) Рунет, он такой рунет))
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844872
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, сами-то условия проверки не сложно написать(работает разными способами).
Сложно оказалось место этой проверки найти и заставить курсор вернуться в пустое поле и не уходить, пока оно станет не пустым.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844873
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara,
Т.к. это разовое действо надо потратить какое-то время,все исправить, а после этого присвоить,нужным полям,атрибут "обязательное поле". Если же изменение поля в таблице влечет изменения в другой таблице о нормальной работе БД не может быть и речи (рано или поздно это вылезет ошибкой-остается надеяться на русский авось-но это не наш метод)
За сим разрешите откланяться
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844876
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuChara,
Т.к. это разовое действо надо потратить какое-то время,все исправить, а после этого присвоить,нужным полям,атрибут "обязательное поле". Если же изменение поля в таблице влечет изменения в другой таблице о нормальной работе БД не может быть и речи (рано или поздно это вылезет ошибкой-остается надеяться на русский авось-но это не наш метод)
За сим разрешите откланяться
Спасибо)
Да не влечет оно никакого изменения в других таблицах, с чего Вы это взяли) Разовое, но продолжительное. Не могу им без присмотра дать исправлять файлики, наваляют еще больше. Так они хотя бы из справочников заполнят, выбирая подходящее.
Если Вам интересно - это большие массивы научных данных, но описаны записи в каждом отделе были совершенно по-разному.
Вот они и припишут теперь эти записи потихонечку куда надо, попутно исправляя еще, что где заметят. Потом пройдусь аналитикой сверху и будет нормально.

В общем, пока решила в LostFocus() оставить. В конце-концов, люди не глупые будут делать, однократно же сообщение о необходимости заполнить поле появляется, а потом уже на уровне формы будет. Это вообще будет промежуточная таблица, не хотелось возни дополнительной, конечно, но что делать...

Но вот все-таки загадка, почему же второй раз не срабатывает это событие, фокус же теряется элементом снова...
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844880
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara__MichelleCharaХотелось просто на первичном этапе людям помочь не пропускать при реконструкции.
И для этого решено вручную пробежаться по полям в форме Tab'ом?

Вы, наверное, со своими какими-то ассоциациями ...Ассоциации? Нет, конечно. Зачем?
Основываюсь исключительно на источниках.
Напоминаю:Charaпо полям быстренько проходят клавишей табуляции
Charaсвойство "Правило проверки" для элемента формы. Я его не нашла(ValidationRule - Условие на значение.HelpYou can use the ValidationRule property to specify requirements for data entered into a record, field, or control.
When data is entered that violates the ValidationRule setting,
you can use the ValidationText property to specify the message to be displayed to the user.Однако, имейте в виду:HelpValidation rules you set for fields and controls are applied when you edit the data and the focus leaves the field or control.
То есть, не спасет без редактирования.

Задайте всем информационным полям формы
а) Получение фокуса: =Func_GotFocus()
б) Потеря фокуса: Func_LostFocus()
И функции
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function Func_GotFocus()
 Dim Ctl As Control
 Set Ctl = Screen.PreviousControl
 On Error GoTo LErr
 If IsNull(Ctl) Or Ctl = "" Then
  MsgBox "&#205;&#229;&#238;&#225;&#245;&#238;&#228;&#232;&#236;&#238; &#231;&#224;&#239;&#238;&#235;&#237;&#232;&#242;&#252; " & Ctl.Name
  Ctl.OnGotFocus = ""
  Ctl.SetFocus
 End If
LErr:
End Function

Function Func_LostFocus()
 Screen.PreviousControl.OnGotFocus = "=Func_GotFocus()"
End Function
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844882
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Текст исказился. Придется повторить.

Задайте всем информационным полям формы
а) Получение фокуса: =Func_GotFocus()
б) Потеря фокуса: =Func_LostFocus()
И функции
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function Func_GotFocus()
 Dim Ctl As Control
 Set Ctl = Screen.PreviousControl
 On Error GoTo LErr
 If IsNull(Ctl) Or Ctl = "" Then
  MsgBox "Необходимо заполнить " & Ctl.Name
  Ctl.OnGotFocus = ""
  Ctl.SetFocus
 End If
LErr:
End Function

Function Func_LostFocus()
 Screen.PreviousControl.OnGotFocus = "=Func_GotFocus()"
End Function
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844885
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А всего проще не мучить LostFocus, а работать с Exit.
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub Поле_Exit(Cancel As Integer)
 If IsNull(Поле) Or Поле = "" Then
  MsgBox "Необходимо заполнить Поле"
  Cancel = True
 End If
End Sub


Но считаю, что расставлять пользователям такие капканы и ловушки очень негуманно.
Тем более, что заполнять будут "поля старых данных, сравнивая с бумажными разношерстными архивами и окружающими данными".
Если пользователи люди сознательные и заинтересованные в результате, то в описанной ситуации подкрашивания полей более чем достаточно.
Ну и, разумеется, разработчик обязан предоставить им программные средства последующего выявления пропущенного.
Скорее всего, это должен быть итерационный процесс.

И не надо торопиться с заявлениями типаCharaСтранно, что в Аксесс какие-то танцы с бубнами нужны,
чтобы элементарное событие одного элемента на форме запрограммировать.
Не ожидала вообще. Времени жалко..Особенно впечатляют эти "Времени жалко.".
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844890
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, И Вам доброе утро!

Всё попробую, спасибо за советы!
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844891
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про Exit, кстати, тоже мысль возникла попробовать, вчера дочитала в ночи
Последовательность событий фокуса для элементов управления в формах
Публикую, естественно, не для гуру, а для новичков.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844892
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleОсобенно впечатляют эти "Времени жалко.".
Своего мне времени жалко, своего) Я вообще другим должна заниматься, а тут все вокруг говорили, что там на Аксессе - бац-бац-бац за три секунды и ОК)
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844894
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara__MichelleОсобенно впечатляют эти "Времени жалко.".
Своего мне времени жалко, своего) Я вообще другим должна заниматься, а тут все вокруг говорили, что там на Аксессе - бац-бац-бац за три секунды и ОК)
-- В Москве говорят кур доят!
-- Ан нет, их щупают!
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844895
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara, бац-бац это создать новую базу на основе мастеров. Но Вы то лепите из г..на конфетку. Поверьте чтобы слепить конфетку надо прочитать пару тысяч страниц, не менее половины на English, исписать тыщщу строк кода (как минимум). Может получиться, но не сразу. А в базе ведь надо людям работать ещё, и эти Lost и Got_Focus, выскакивающие окна и пр. серьезно влияют на эргономику и скорость работы, не забываем про глюки, про разную работу на разных машинах и пр. и т.п., например: Вы решили для себя в чем программировать в DAO или в ADO? Идите лучше на фрилансерские сайты, формируйте заявку, да выбирайте из спецов, можете и здесь заявку создать (в разделе работа). и занимайтесь своими делами. :)
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844897
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichelleА всего проще не мучить LostFocus, а работать с Exit.
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub Поле_Exit(Cancel As Integer)
 If IsNull(Поле) Or Поле = "" Then
  MsgBox "Необходимо заполнить Поле"
  Cancel = True
 End If
End Sub



Ура-ура! Всё работает именно как нужно) Спасибо, от меня букетик!
На самом деле, я с синтаксисом, действительно, прошляпила - я же проверяла уже содержание таблицы, а надо было поля формы.

Ещё огромное спасибо всем за просто отклик, помогло взглянуть чуть с другой стороны
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844898
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleckoChara, бац-бац это создать новую базу на основе мастеров. Но Вы то лепите из г..на конфетку. Поверьте чтобы слепить конфетку надо прочитать пару тысяч страниц, не менее половины на English, исписать тыщщу строк кода (как минимум). Может получиться, но не сразу. А в базе ведь надо людям работать ещё, и эти Lost и Got_Focus, выскакивающие окна и пр. серьезно влияют на эргономику и скорость работы, не забываем про глюки, про разную работу на разных машинах и пр. и т.п., например: Вы решили для себя в чем программировать в DAO или в ADO? Идите лучше на фрилансерские сайты, формируйте заявку, да выбирайте из спецов, можете и здесь заявку создать (в разделе работа). и занимайтесь своими делами. :)
В бюджетной организации заявку на платную программу? Жалко тут смайликов нет) Да они удавятся, чтобы самое насущное купить для работы.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844901
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chara, на "ненужный" Аксесс денег то выделили- судя по тому что люди уже работают и не на одну копию.
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844910
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока и на это не выделили
...
Рейтинг: 0 / 0
Помогите разобраться с установкой курсора в поле. Access 2016
    #39844911
Chara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никто еще не работает, собраны куски разноформатных данных
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите разобраться с установкой курсора в поле. Access 2016
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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