编写动态 SQL 语句
Writing Dynamic SQL Statement
我是 Microsoft Access 的新手。
我想根据参数值 select table 中的一列(即我的 table 有 x、y 和 z 列,我有 chosencol
用户使用下拉菜单设置的参数。
我可以使用 select 命令 select 一个/所有列,但是,我想使用我的参数 chosencol
来做到这一点。
仔细阅读后,我发现了一些关于使用 SET
和 EXEC
命令的参考资料,但是,将它们输入到 Access 中的 SQL 命令中只会产生错误。
有人可以告诉我如何在 Access 中实现动态-sql 查询(非常详细,因为我认为我现在在错误的地方编写命令...... )
我很确定你不能直接做到这一点 SQL。但是,您可以在 VBA 代码中创建 SQL 字符串并将其保存为查询。
CurrentDB.CreateQueryDef("MyQueryName", "SELECT " & chosencol & " FROM MyTable")
现在,MyQueryName 将成为您数据库中的永久查询,您可以在任何需要的地方引用它。
如果 chosencol 是一个多 select 下拉列表,您必须将 selected 值读入一个数组,然后将该数组写入一个连接的字符串并使用它。
首先,我在 Access 中创建了一个示例 table。
接下来,我创建了一个示例表单来查询您的值。下拉列表称为 'chosencol'。 Select 列 Select 下拉列表中的一个值,然后按 "Lookup Value" 按钮。
下面是 "Lookup Value" 按钮的 On Click 事件下的代码。 SQL 语句是使用您选择的列动态构建的。该列已重命名为 [FieldName],以便它可以被引用。
Private Sub btnLookup_Click()
Dim rsLookup As New ADODB.Recordset
Dim strSQL As String
strSQL = "select " & chosencol.Value & " as [FieldName] from Table1 where ID=1"
rsLookup.Open strSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
If rsLookup.EOF = False Then
txtValue.SetFocus
txtValue.Text = rsLookup![FieldName]
End If
rsLookup.Close
End Sub
按下按钮时,将返回您选择的任何列的值。对于这个简单的示例,我总是返回第 1 行的数据。
我是 Microsoft Access 的新手。
我想根据参数值 select table 中的一列(即我的 table 有 x、y 和 z 列,我有 chosencol
用户使用下拉菜单设置的参数。
我可以使用 select 命令 select 一个/所有列,但是,我想使用我的参数 chosencol
来做到这一点。
仔细阅读后,我发现了一些关于使用 SET
和 EXEC
命令的参考资料,但是,将它们输入到 Access 中的 SQL 命令中只会产生错误。
有人可以告诉我如何在 Access 中实现动态-sql 查询(非常详细,因为我认为我现在在错误的地方编写命令...... )
我很确定你不能直接做到这一点 SQL。但是,您可以在 VBA 代码中创建 SQL 字符串并将其保存为查询。
CurrentDB.CreateQueryDef("MyQueryName", "SELECT " & chosencol & " FROM MyTable")
现在,MyQueryName 将成为您数据库中的永久查询,您可以在任何需要的地方引用它。
如果 chosencol 是一个多 select 下拉列表,您必须将 selected 值读入一个数组,然后将该数组写入一个连接的字符串并使用它。
首先,我在 Access 中创建了一个示例 table。
接下来,我创建了一个示例表单来查询您的值。下拉列表称为 'chosencol'。 Select 列 Select 下拉列表中的一个值,然后按 "Lookup Value" 按钮。
下面是 "Lookup Value" 按钮的 On Click 事件下的代码。 SQL 语句是使用您选择的列动态构建的。该列已重命名为 [FieldName],以便它可以被引用。
Private Sub btnLookup_Click()
Dim rsLookup As New ADODB.Recordset
Dim strSQL As String
strSQL = "select " & chosencol.Value & " as [FieldName] from Table1 where ID=1"
rsLookup.Open strSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
If rsLookup.EOF = False Then
txtValue.SetFocus
txtValue.Text = rsLookup![FieldName]
End If
rsLookup.Close
End Sub
按下按钮时,将返回您选择的任何列的值。对于这个简单的示例,我总是返回第 1 行的数据。