Microsoft Access Query через VBA повторяется? - PullRequest
0 голосов
/ 23 декабря 2010

Я получил этот запрос в моей форме:

strSQL = "SELECT cityID FROM City WHERE Name =" & Chr(34) & Me.List60.Value & Chr(34) & ";"
Set qdf = CurrentDb.CreateQueryDef("QueryCityName", strSQL)
DoCmd.OpenQuery qdf.Name
Me.cityID = qdf

Я хочу выполнить следующий запрос (значение List60 является динамическим) и присвоить результат текстовому полю. Теперь запрос выполняется безупречно в первый раз, а во-вторых, появляется сообщение об ошибке дублирующего запроса (я проверяю, что в Querys сохранен новый запрос с использованным значением). Итак, вот мой вопрос:

Как не сохранить запрос и сделать его всегда динамичным? Как назначить результат этого запроса в текстовое поле (я имею в виду qdf.Value в примере не работает)?

Ответы [ 2 ]

2 голосов
/ 23 декабря 2010

Вы не должны создавать запрос, не проверив, существует ли он, иначе вы получите ошибку, как вы обнаружили.Вы можете изменить sql, ссылаясь на querydef, вам не нужно создавать новый запрос.Однако в этой ситуации вам не нужен запрос, просто DLookUp.

DLookUp("cityID", "City", "Name ='" & Replace(Me.List60.Value,"'","''") & "'")

Вы можете установить источник управления текстовым полем для Dlookup следующим образом:

=DLookUp("cityID", "City", "Name ='" & Replace(List60.Value,"'","''") & "'")

Кстатизарезервированное слово и не должно использоваться нигде, это вызовет неописуемое горе.

1 голос
/ 23 декабря 2010

Я сделал это с еще меньшим кодом:

strSQL = "SELECT cityID FROM City WHERE Name =" & Chr(34) & Me.List60.Value & Chr(34) & ";"
Set rst = CurrentDb.OpenRecordset(strSQL)

Теперь, если у всех одна и та же проблема, просто используйте:

rst![name_of_the_row_in_your_table]

В моем случае это целая часть:

strSQL = "SELECT cityID FROM City WHERE Name =" & Chr(34) & Me.List60.Value & Chr(34) & ";"
Set rst = CurrentDb.OpenRecordset(strSQL)
Me.cityID = rst![cityID]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...