您不能简单地使用预编译的 SQL 查询来做到这一点。你需要一点 VBA 才能让它运行,这就是你要做的。
创建一个包含一个 ComboBox 和一个按钮的表单。
将 ComboBox 命名为 tableNameCombo,将按钮命名为 runQueryBtn。保存表单,名称为 frm_QueryRun。
按照以下方式创建一个新的查询,
SELECT * FROM randomTableName;
将此保存为 qry_Tmp。
现在回到表单设计,然后在表单的属性表中,查找当前方法。然后将以下代码粘贴到 Form Current 中。
注意:如果这是您的第一个 VBA,请查看:http://www.baldyweb.com/FirstVBA.htm
Private Sub Form_Current()
Dim tblStr As String
Dim dbObj As DAO.Database, tdObj As DAO.TableDef
Set dbObj = CurrentDB()
Me.tableNameCombo.RowSourceType = "Value List"
For Each tdObj In db.TableDefs
If Left(tdObj.Name, 4) <> "MSys" Then tblStr = tblStr & tdObj.Name & ";"
Next
tblStr = Left(tblStr, Len(tblStr)-1)
Me.tableNameCombo.RowSource = tblStr
Set dbObj = Nothing
End Sub
完成后,您需要构建 qry_Tmp。类似的,点击按钮。
Private Sub runQueryBtn_Click()
Dim dbObj As DAO.Database, qdObj As DAO.QueryDef
If Me.tableNameCombo.ListIndex = -1 Then
MsgBox "Table Name needs to be selected, before continuing.", vbCritical
Exit Sub
End If
Set dbObj = CurrentDB()
Set qdObj = dbObj.QueryDefs("qry_Tmp")
qdObj.SQL = "SELECT " & Me.tableNameCombo & ".* FROM " & Me.tableNameCombo & ";"
qdObj.Execute dbFailOnError
qdObj.Close
Set qdObj = Nothing
Set dbObj = Nothing
End Sub
保存表单,关闭它,编译任何错误的代码。然后运行代码。希望这可以帮助。