Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вернуть фокус в поле после использования сканера? 2003
 
 автор: Nadin   (12.05.2008 в 17:28)   личное сообщение
 
 

Здравствуйте!
У меня старый сканер штрих-кодов. После сканирования фокус переходит в след поле, а мне нужно его вернуть (или оставить) в поле сканирования.
SetFocus не помогает. Пробовала использовать и вспомогательное поле. По всей видимости все что пишу, происходит до Enter, запрограммированнного в сканере.
Подскажите, кто знает.
СПАСИБО!

  Ответить  
 
 автор: час   (12.05.2008 в 21:35)   личное сообщение
 
 

Попробуйте в access сервис----параметры----клавиатура -------переход при нажатии enter=нет

  Ответить  
 
 автор: час   (12.05.2008 в 21:36)   личное сообщение
 
 

а кода Вы SetFocus
пишите --- у меня помогает.....
Поле1- для считывания.........

Private Sub Поле1_Change()
Поле0.SetFocus
End Sub
или
Private Sub Поле1_AfterUpdate()
Поле0.SetFocus
End Sub

  Ответить  
 
 автор: Nadin   (12.05.2008 в 23:35)   личное сообщение
 
 

Пишу так, если Поле1-для считывания:

Private Sub Поле1_AfterUpdate()
Поле1.SetFocus
End Sub

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

  Ответить  
 
 автор: osmor   (13.05.2008 в 08:40)   личное сообщение
 
 

Проверьте происходит ли событие AfterUpdate. AfterUpdate - происходит только когда вы руками в поле формы вводите данные, когда они туда попадают программно, то это событие не происходит.
Какая процедура определяет найден товар в списке или нет? В этой процедуре можно в случае когда товар найден у становить фокус в нужное поле?

  Ответить  
 
 автор: Gыwи   (13.05.2008 в 11:50)   личное сообщение
 
 

есть идиотская идея - использовать глобальную переменную :)
например, returnFocus - boolean

1) на некое событие повесить задание для неё значения true (например по нажатию кнопки "считать"- переведём фокус в поле для чтения и скажем "вернись потом")
2) на событие получения фокуса следующим полем проверяем - если нам сказано вернуться, то возвращаем фокус в нужное поле и меняем переменную в false.

  Ответить  
 
 автор: Анатолий (Киев)   (13.05.2008 в 13:25)   личное сообщение
 
 

>Пробовала использовать и вспомогательное поле.
А как вы его пробовали?
Если вспомогательное поле (минимальных размеров) - следующее в переходе по Tab, то на его событии GotFocus можно вернуть фокус предыдущему полю или передать следующему.

Private Sub Text2_GotFocus()
If IsNull(Me.Text0) Then Me.Text0.SetFocus Else Me.Text3.SetFocus
End Sub

  Ответить  
 
 автор: Nadin   (14.05.2008 в 02:01)   личное сообщение
 
 

Анатолий, так и пробовала вспомогательное поле. Но почему-то пишет "Невозможно перейти к указанному полю" (полю сканирования).
Олег, да я на этот код уже как на новогоднюю елку навешивала Me.H.SetFocus где только нужно и не нужно.
Событие AfterUpdate, если я правильно понимаю, происходит, т.к. запись добавлятся, и фокус переходит в след. поле.
Получается, чтобы я не написала - это все происходит до Enter.
С глобальной переменной не пробовала, пока.
Сканер этот все равно менять буду, читает очень плохо.
Пока обойдусь установкой в параметрах.
Еще раз , СПАСИБО.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList