Вывод результата запроса SQL в текстовое поле - PullRequest
0 голосов
/ 26 июня 2019

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

Когда я запускаю код, он отображает буквальный запрос «ВЫБРАТЬ имя и т. Д.» В текстовом поле.Я видел, что Dlookup работает с текстовыми полями, но, насколько я понимаю, он работает не более чем с одной таблицей.Любой совет будет принята с благодарностью!

PS Я новичок в VBA / access

Dim SQL, SearchInput As String

SQL = "SELECT name" & _
      "FROM tablename INNER JOIN othertablename ON tablename.name = othertablename.name" & _
      "WHERE  tablename.name LIKE ""*" & SearchInput & "*""

Me.txtbox = SQL

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Поскольку вы новичок в MS Access и VBA в целом, я предложу решение, полностью исключающее использование VBA.


В вашем текущем коде я предполагаю, что SearchInput получает свое значение из другого элемента управления в вашей форме.

Я бы предложил создать новый сохраненный запрос (он называется MyQuery) со следующим SQL:

select table2.name from table1 inner join table2 on table1.name = table2.name

Затем в источнике управления для вашего текстового поля используйте выражение DLookup со следующими аргументами:

=dlookup("[name]", "MyQuery", "table1.name like '*" & [SearchInput] & "*'")

Здесь [SearchInput] относится к названию элемента управления в вашей форме, содержащему критерии поиска.

0 голосов
/ 26 июня 2019

Я почти уверен, что это дубликат, но на него быстрее ответить, чем на поиск других сообщений.

Вам необходимо объявить набор записей и присвоить ему данные, возвращаемые из оператора select.Это оставит вас с чем-то очень похожим на массив.После этого вам нужно просто выровнять элемент массива по позициям столбцов.IE.rs (0) = имя в предложении выбора выше.

Dim rs As Recordset
Dim SQL As String, SearchInput As String
SQL = "SELECT name " & _
  "FROM tablename INNER JOIN othertablename ON tablename.name = othertablename.name " & _
  "WHERE tablename.name LIKE ""*" & SearchInput & "*""
   Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)

Me.txtBox = rs(0)

Это должно работать.

...