0

我正在创建一个表单,该表单显示用户输入姓名时从两个表中获取的个人信息。我希望将字段输出到它们自己的文本框中。我的代码看起来类似于下面的内容。

当我运行代码时,它会在文本框中显示文字查询“SELECT name etc...”。我看到 Dlookup 适用于文本框,但据我了解,它不适用于多个表格。任何建议将不胜感激!

PS 我是 VBA/访问新手

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
4

2 回答 2

0

我很确定这是重复的,但回答比寻找其他帖子要快。

您需要声明一个记录集并将 select 语句返回的数据分配给它。这会给你留下非常类似于数组的东西。之后,您只需将数组元素与列的位置对齐。IE。rs(0)=name 在上面的 select 语句中。

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)

那应该行得通。

于 2019-06-26T13:27:46.363 回答
0

由于您通常是 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]指的是表单上包含搜索条件的控件的名称。

于 2019-06-26T17:38:21.403 回答