
Я пытаюсь создать макрос для обновления значения поля в форме на основе результатов запроса.
Я новичок в работе с VBA в Access, поэтому прошу прощения, если задаю простой вопрос.
Стоит отметить, что запрос "test" возвращает ровно один результат. По сути, он используется аналогично 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
DoCmd.SetProperty testfield, acPropertyValue, bucket
Используя приведенный выше код, вы пытаетесь установитьproperty
для контроля, не менятьvalue
. Свойством может быть цвет фона, высота, ширина и т. д.
Если вы хотите установить значение, вам нужно просто использовать me
функцию для ссылки на элемент управления в форме.
me.testfield = bucket
Это сообщает Access о необходимости заполнить элемент управления формы testfield
с именем значением, хранящимся в переменной bucket
.
Примечание: Возможно, вам придется добавить me.refresh
после этой команды команду, чтобы форма обновила поля.