Access 2013: попытка написать макрос для обновления полей формы из результата запроса

2153
J.Scott

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

Я совершенно новичок в работе с 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»: введенное вами выражение является неверным типом данных для одного из аргументов.

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

0

1 ответ на вопрос

0
CharlieRB
DoCmd.SetProperty testfield, acPropertyValue, bucket 

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

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

me.testfield = bucket 

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

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