Я пытаюсь создать макрос для обновления значения поля в форме на основе результатов запроса.

Я совершенно новичок в работе с VBA в Access, поэтому я прошу прощения, если я задаю основной вопрос.

Следует отметить, что "тестовый" запрос возвращает ровно один результат. По сути, он используется аналогично VLookup.

В настоящее время мой код выглядит так:

Private Sub UpdateBasic_Click()
  Dim bucket As String
  DoCmd.OpenQuery "test", acViewNormal, acReadOnly
  'this line is meant to record the result of the query into a variable. It is not working but I haven’t found the right command to get it to pick up the data yet.
  bucket = A1
  DoCmd.Close acQuery, "test", acSaveNo
  DoCmd.OpenForm "BasicData", acNormal, , , acFormEdit, acWindowNormal, "Global_ID = 'sdkfa'"
  'this line is meant to update the value of the field on the form.
  DoCmd.SetProperty testfield, acPropertyValue, bucket
End Sub

Мне не повезло заставить команду SetProperty работать вообще. Это постоянно говорит мне, что у меня есть несоответствие типов данных, независимо от того, пытаюсь ли я дать ему переменную типа bucket или значение вроде 10. Сообщение об ошибке выглядит следующим образом:

Ошибка времени выполнения «2948»: введенное вами выражение является неверным типом данных для одного из аргументов.

Любая помощь будет принята с благодарностью.

1 ответ1

0
DoCmd.SetProperty testfield, acPropertyValue, bucket

Используя приведенный выше код, вы пытаетесь установить property для элемента управления, а не изменить value. Свойство будет цвет фона, высота, ширина и т.д.

Если вы хотите установить значение, вам нужно просто использовать функцию me для обращения к элементу управления в форме.

me.testfield = bucket

Это говорит о доступе к заполнению элемента управления формы с именем testfield значением, содержащимся в переменной bucket .

Примечание: вам может понадобиться добавить me.refresh после этой команды, чтобы получить форму для обновления полей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .