powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
19 сообщений из 19, страница 1 из 1
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39250279
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Access 2002. На форме имеется простое Поле6, где вводится строка для поиска
и ПолеСоСписком39 назначение которого открыть для юзера список строк с вхождениями поисковой строки

в событии "после обновления" для Поле6 такой код:

Код: vbnet
1.
2.
3.
4.
      m_zak_list_find = Trim(UCase(Me.Поле6))
      
       DoCmd.GoToControl ("ПолеСоСписком39")
       SendKeys "%{DOWN}"





источник данных для ПолеСоСписком39 такой:

Код: plsql
1.
SELECT Заказной_лист_НЕОРИГ_find.key_z,  Заказной_лист_НЕОРИГ_find.txt,  Заказной_лист_НЕОРИГ_find.findtxt FROM Заказной_лист_НЕОРИГ_find WHERE (((Заказной_лист_НЕОРИГ_find.findtxt) Like '*' & get_m_zak_list_find() & '*'));




событие "вход" для ПолеСоСписком39 такой:

Код: vbnet
1.
Me.ПолеСоСписком39 .Requery





Имеет место такое явление
после ввода поисковой строки открывается список ПолеСоСписком39 нажатие Enter не приводит к генерации события "После обновления" соответственно позиционирование заложенное

в событии "После обновления":

Код: vbnet
1.
2.
3.
4.
5.
            Set rst = Forms![Заказной_лист_main]![Заказной_лист_неориг].Form.RecordsetClone
            
            rst.FindFirst "[key_z] = " & CStr(ko)
            
            If Not rst.EOF Then Forms![Заказной_лист_main]![Заказной_лист_неориг].Form.Bookmark = rst.Bookmark




в подчинённой форме не происходит.

Если же щёлкнуть мышкой в строку в открывшемся ПолеСоСписком39, то всё происходит как надо в любых ситуациях.

А хотелось бы всегда Enter -ом.
Как это исправить уже не знаю. Перепробовал, как мне кажется, много всего.
Enter срабатывает, если содержимое ПолеСоСписком39 изменилось.
как только оду и ту же поисковую строку вводишь раза два подряд, начинается отрицательное явление.

Подобную конструкцию применяю во многих формах, но именно на этой существует такой спотык.

Помогите исправить.
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39250368
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i_bison,
а поле6 случаем не свободное?
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39250940
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

да, поле6 свободное.
попробовать сделать его не свободным ?
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251014
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

не помогло.
установил источник данных для формы где находятся Поле6 и ПолеСоСписком39
оба поля снабдил данными из источника.

глюк похоже относится к ПолеСоСписком39.
поле со списком надо обхитрить, чтоб оно думало буд-то первый раз обновляется его источник.
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251093
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i_bisonAccess 2002. На форме имеется простое Поле6, где вводится строка для поиска
и ПолеСоСписком39 назначение которого открыть для юзера список строк с вхождениями поисковой строки

в событии "после обновления" для Поле6 такой код:
Код: vbnet
1.
2.
3.
4.
      m_zak_list_find = Trim(UCase(Me.Поле6))
      
       DoCmd.GoToControl ("ПолеСоСписком39")
       SendKeys "%{DOWN}"


источник данных для ПолеСоСписком39 такой:
Код: plsql
1.
SELECT Заказной_лист_НЕОРИГ_find.key_z,  Заказной_лист_НЕОРИГ_find.txt,  Заказной_лист_НЕОРИГ_find.findtxt FROM Заказной_лист_НЕОРИГ_find WHERE (((Заказной_лист_НЕОРИГ_find.findtxt) Like '*' & get_m_zak_list_find() & '*'));


событие "вход" для ПолеСоСписком39 такой:
Код: vbnet
1.
Me.ПолеСоСписком39 .Requery


Все это можно выполнять в процедуре Поле6_AfterUpdate() следующим образом,
без SendKeys и без процедуры ПолеСоСписком39_Enter()
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Поле6_AfterUpdate()
 m_zak_list_find = Trim(UCase(Me.Поле6))
 Me.ПолеСоСписком39.Requery
 Me.ПолеСоСписком39.SetFocus
 Me.ПолеСоСписком39.Dropdown
.........
End Sub
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251095
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Поле6_AfterUpdate()
 m_zak_list_find = Trim(UCase(Me.Поле6))
 With Me.ПолеСоСписком39
  .Requery
  .SetFocus
  .Dropdown
 End With
.........
End Sub
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251120
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

работает. спасибо.
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251124
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot i_bison]Access 2002. На форме имеется простое Поле6, где вводится строка для поиска
и ПолеСоСписком39 назначение которого открыть для юзера список строк с вхождениями поисковой строки [quot]
Это сильно похоже на масло масляноею
А чё не использовать поле6 в качестве образца поиска (с LIKE и поиском/фильтрацией по мере ввода символов)
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251286
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

по мере ввода символов было бы ещё лучше.
в каком-нибудь будущем проекте можно сделать так

пока же описанное мною решение распространено в программе
менять нет времени и крайней необходимости
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251415
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

в некоторых случаях не работает всё равно.
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251434
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i_bison,

Вообще-то я не пыталась ответить на основной вопрос об Enter.
Просто увидела, как можно подправить код.

А можете пояснить, что происходит, по порядку?
Я поняла, что так:
После обновления значения Поле6 обновляется источник данных ПолеСоСписком39
SELECT key_z, txt, findtxt FROM Заказной_лист_НЕОРИГ_find WHERE findtxt Like '*' & get_m_zak_list_find() & '*'.
Затем поле ПолеСоСписком39 автоматически получает фокус, а список поля ПолеСоСписком39 автоматически раскрывается,
пользователь ищет в списке нужное значение клавишами со стрелками (раз говорится, что не мышью),
найденное нужное значение выбирает нажатием клавиши Enter.
При этом не всегда срабатывает событие AfterUpdate для ПолеСоСписком39.

Правильно или нет?
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251446
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i_bison,

Пока могу предложить такой рецепт, может, сомнительный,
так как он нацелен не на причину несрабатывания, а на следствие.
Код: vbnet
1.
2.
3.
4.
5.
Private Sub ПолеСоСписком39_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = 13 And Not Shift Then
  Call Поле6_AfterUpdate
 End If
End Sub
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251450
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, не Поле6_AfterUpdate, а ПолеСоСписком39_AfterUpdate.
Код: vbnet
1.
2.
3.
4.
5.
Private Sub ПолеСоСписком39_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = 13 And Not Shift Then
  Call ПолеСоСписком39_AfterUpdate
 End If
End Sub
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251456
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

да так оно и есть.
уточнить могу следующим.

первый раз всегда срабатывает поиск.
вводишь поисковую строку, открывается список весь "белый", нажимаешь стрелку вниз, строчка-селектор становится чёрного цвета. ентер срабатывает.
если повторно вводишь ту же самую поисковую строку, открывается список с уже черной строкой, как бы выбранная селектором.
особенно отчётливо это проявляется когда в раскрывшемся списке одна единственная строка,
даже стрелками не двинешь вверх-вниз, тогда ентер не срабатывает
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251457
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

годятся все рецепты. попробую этот. но позже.
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251462
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

с этим кодом
заработало и там где не работало

спасибо за дельные советы.
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251463
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i_bison,

Ага.
Тогда не надо проверять на Enter.
Надо не только обновлять источник данных для ПолеСоСписком39, а и очищать само это поле.
Тогда всегда список будет открываться "белым" и будут срабатывать и стрелочки, и Enter.

То есть, дополнить
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
..................
 With Me.ПолеСоСписком39
  .Requery
  .Value = Null
  .SetFocus
  .Dropdown
 End With
..................
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251777
i_bison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

девушка,после этого комментария я вас люблю.

value = null улучшило ситуацию.

но без кода в событии "кнопка вниз" всё равно не обойтись. вот почему.

когда юзер НЕ вводя значение в Поле6 сразу открывает ПолеСоСписком39, а там всего одна строка

и она чёрная т.е. ранее уже выбранная , то помогает как раз

Код: vbnet
1.
2.
3.
4.
5.
Private Sub ПолеСоСписком39_KeyDown(KeyCode As Integer, Shift As Integer)
 If KeyCode = 13 And Not Shift Then
  Call ПолеСоСписком39_AfterUpdate
 End If
End Sub




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

спасибо большое Мишель за помощь. Если что (как в мультике) мой емайл i_bison@mail.ru
...
Рейтинг: 0 / 0
в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
    #39251812
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i_bison,

)))

P.S. Но на ПолеСоСписком наговаривать не надо – это его естественное поведение, а не кривляния.)))
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / в поле со списком выбор Enter -ом не приводит к генерации события "После обновления"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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