我是Microsoft Access的新手。
我想根据参数的值从表中选择一列(即我的表有列x,y和z,我有一个chosencol
参数,由用户使用下拉列表设置
我可以使用select命令选择一个/所有列,但是,我想使用我的参数chosencol
代替。
阅读后,我发现了许多使用SET
和EXEC
命令的引用,但是,将它们输入Access中的SQL命令只会产生错误。
请有人可以告诉我如何在Access中实现动态SQL查询(详细的细节,因为我认为我现在正在错误的地方编写命令......)
答案 0 :(得分:4)
首先,我在Access中创建了一个示例表。
接下来,我创建了一个示例表单来查询您的值。下拉列表称为'selectedcol'。从Column Select下拉列表中选择一个值,然后按“Lookup Value”按钮。
以下是“查找值”按钮的“点击”事件下的代码。使用您选择的列动态构建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行的数据。
答案 1 :(得分:1)
我很确定你不能在直接的SQL中做到这一点。但是,您可以在VBA代码中创建SQL字符串并将其另存为查询。
CurrentDB.CreateQueryDef("MyQueryName", "SELECT " & chosencol & " FROM MyTable")
现在,MyQueryName将成为数据库中的永久查询,可以在任何地方引用。
如果selectedcol是一个多选下拉列表,那么您必须将所选值读入一个数组,然后将该数组写入一个连接字符串并改为使用它。