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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Раскладка клавиатуры
 
 автор: Гоблин   (09.12.2012 в 18:18)   личное сообщение
 
 

Народ привет.
В общем я одолел всю хрень со штрихкодами. Да и не мучился особо. Правда для этого скачал TBar в котором уже все стартовые и финишные символы с контрольными суммами формируются. Не важно. В отчете формируется штрихкод, выводит на этикетку, распознает штрихкод. В общем все ОК.
Однако. Решил задачу усложнить. Что бы по штрихкоду находил номенклатуру - это один список, а от него соответствующей номенклатуре серию и прочее в другом списке. Можно было конечно форму на запрос сделать и там уже искать, формировать, но для этого еще одна лишняя форма.. и т.д.
В общем у меня так: Код формируется по полю счетчика, который не последовательные числа, а формат основной. Там 13 и более значные числа формируются. Так как одновременно сразу надо искать в 2 таблицах, сделал комбинированный код. Т.Е. код номенклатуры, потом вставляется символ "b" и код серии. При сканировании распознается код тот что до b и затем тот, что после. В опреедленной последовательности осуществляется и поиск по спискам. Все работает.
Но тут проблема. Сканер настраивается "колибруется" на английскую раскладку клавы. А тут баг како-то вышел. В общем если клава на русском, то вместо b распознается "и", ну и соответственно ошибка.
Внимание вопрос: когда включаем поиск по штрихкоду, у меня есть галка на форме, клик на которой открывает поле для сканирования. Как переводить клаву на английский?
Может быть можно как-то транслит делать, если "и", то перекодировать на "b"
Или просто выводить сообщение об ошибке, что бы клаву перевели на английский...

Что-то кажется сам себе же и ответил... переводить транслит... Может после сканирования пробегать по полю посимвольно, среди цифр обнаружить букву.... или что?

  Ответить  
 
 автор: snipe   (09.12.2012 в 18:57)   личное сообщение
 
 

http://www.cyberforum.ru/vba/thread462688.html

  Ответить  
 
 автор: Дядя Федор   (10.12.2012 в 08:03)   личное сообщение
 
 


 'Переключает на русский
  Public Function switchToRussian()
      Dim SS As String
      SS = getCurrentLanguage
      If InStr(SS, "419") = 0 Then
          LoadKeyboardLayout "00000419", 1
      End If
  End Function
  'Переключает на английский
  Public Function switchToEnglish()
      Dim SS As String
      SS = getCurrentLanguage
      If InStr(SS, "409") = 0 Then
          LoadKeyboardLayout "00000409", 1
      End If
  End Function

  Ответить  
 
 автор: Гоблин   (10.12.2012 в 14:25)   личное сообщение
 
 

Спасибо одному и другому. Вопрос решил простым способом. Коли сканер привязан к раскладке клавы и распознает либо "и" либо "b", то вставил код, что после получения кода в поле, в этом поле проходит посимвольная проверка. И если находится "и", то автоматически заменяется на "b" в переменной, если "b" то так и остается. И вопрос отпал. ))
Но код раскладки клавы все равно нужен. Только это уже другая история.

  Ответить  
 
 автор: Гоблин   (10.12.2012 в 14:53)   личное сообщение
 
 

Блин. Ругается вот на это: LoadKeyboardLayout выделяя его синим цветом.
а так задумка классная.

  Ответить  
 
 автор: Дядя Федор   (10.12.2012 в 15:57)   личное сообщение
 
 

Извиняюсь.
Надо добавить
Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long
Public Function getCurrentLanguage()
Dim z As Long
z = GetKeyboardLayoutName(bArr(1))
If z = 0 Then
getCurrentLanguage = ""
Else
getCurrentLanguage = decodeString
End If
End Function

  Ответить  
 
 автор: Гоблин   (12.12.2012 в 22:32)   личное сообщение
 
 

Понятно. Теперь имею кучу функций. Стал ругаться на bArr, выделяя его черным.
Это как понимаю надо сажать в модуль. Вот в модуле эта и две предыдущие. Теперь при попадании курсора в поле запускаю через call нужную функцию. Но ведь ругается. Может какую библиотеку подключить надо.

  Ответить  
 
 автор: Дядя Федор   (13.12.2012 в 08:31)   личное сообщение
 
 

Щас
Dim bArr(500) As Byte

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