Доступ к VBA SendKeys альтернатива - PullRequest
0 голосов
/ 26 ноября 2018

Я просто унаследовал базу данных персонала на работе, которая не была затронута в течение нескольких лет, и они хотят, чтобы я сделал ее функциональной.Мне удалось обновить большинство вещей, но я столкнулся с проблемой с макросом, который был введен, который использует действие SendKeys:

Private Sub Command3_Click() 
On Error GoTo Err_Command3_Click 

  DoCmd.OpenTable "tblEmployees", acNormal, acEdit
  DoCmd.GoToControl [employee]
  DoCmd.FindRecord Forms![EmployeeRemoval]![cboEmpSelect], 
  DoCmd.GoToControl [pastemployee]
  SendKeys "1~", True
  DoCmd.Close acTable, "tblEmployees"

Exit_Command3_Click: 
Exit Sub 

Err_Command3_Click: 
  MsgBox Err.Description 
  Resume Exit_Command3_Click 

На этом этапе с Access 2010 он просто отправляетзапрограммируйте в цикл, открывая и закрывая стол, а также включая и выключая Num Lock.Я полагал, что лучшей заменой будет утверждение «Обновление», но я не уверен, каковы будут критерии «Где» для обновления одной ячейки, которая требует обновления (в этом случае потребуется только ячейка PastEmployee для одного сотрудника, о котором идет речь, в любой момент времени.обновить на True вместо False).В макросе он ссылался (через команду FindRecord) на ComboBox, в котором выбран сотрудник, запрашивавший фамилию, имя и номер сотрудника из таблицы сотрудников.

db.Execute Update tblEmployees Set [PastEmployee] = 1 Where XXXXXXXX

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

1 Ответ

0 голосов
/ 26 ноября 2018

Размещенный код не является макросом, это VBA.Макросы в Access очень разные.

Пользователи не должны взаимодействовать с таблицами и запросами, только с формами и отчетами.

В поле Доступ Да / Нет 0 равно False, а -1 равно True.

Рассмотрим:

Private Sub Command3_Click() 
    On Error GoTo Err_Command3_Click 

    CurrentDb.Execute "UPDATE tblEmployees SET PastEmployee=True WHERE employee=" & Me.cboEmpSelect

Exit_Command3_Click: 
    Exit Sub 

Err_Command3_Click: 
    MsgBox Err.Description 
    Resume Exit_Command3_Click
End Sub

Если форма былапривязан к tblEmployees и сфокусирован на редактируемой записи вместо действия UPDATE просто: Me!PastEmployee = True.Хотя, если запись просматривается в форме, пользователю просто нужно установить флажок, связанный с PastEmployee, и код не понадобится.

...