Доступ к VBA: набор записей не работает с конкретным запросом c? - PullRequest
0 голосов
/ 14 июля 2020

во-первых: я не эксперт, я в значительной степени новичок в VBA. на мой вопрос:

Итак, я использую набор записей в VBA, если набор записей, который я открываю, представляет собой таблицу или простой запрос, он работает, но у меня есть другой запрос, на котором я хочу основать этот набор записей, но когда я это делаю, это не работает.

Запрос, который я пытаюсь использовать с Recordset, в основном содержит поле «пользователь», которое изменяется в зависимости от текстового поля формы. Невозможно открыть этот запрос как набор записей, потому что он зависит от текстового поля формы, или мне что-то не хватает в коде?

Вот мой код для справки:

Dim db As Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("tblExample")

Do Until rs.EOF
    Debug.Print rs.Fields("FieldExample")
    rs.MoveNext
Loop

rs.Close
db.Close
Set rs = Nothing
Set db = Nothing

I также попытался заменить tblExample строкой SQL, которая в основном совпадает с запросом, который я пытаюсь использовать, но безуспешно. Однако сам запрос работает без проблем.

Запрос, который я пытаюсь использовать (сокращенная версия):

SELECT Inventar.nutzName FROM Inventar WHERE (((Inventar.nutzName) Like "*" & [Formulare]![frmInventarNutzerFilter]![cbxNutzer] & "*"))

1 Ответ

1 голос
/ 14 июля 2020

Ваш код не может «видеть» значение параметра, поэтому вам придется явно передать это:

Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim rs As DAO.Recordset

Set db = CurrentDb
Set qd = db.QueryDefs("YourQuery")
qd.Parameters(0).Value = [Forms]![frmInventarNutzerFilter]![cbxNutzer] 
Set rs = qd.OpenRecordset()

Do Until rs.EOF
    Debug.Print rs.Fields("FieldExample")
    rs.MoveNext
Loop

rs.Close
qd.Close
db.Close
Set rs = Nothing
Set db = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...