我有一个带有未绑定组合框的表单,其中包含表dbo_orderheader的所有列标题。我想要做的是使用组合框字段作为表列标题,而不是硬编码到特定的表列标题,这样用户可以从他们选择的列上的表单动态搜索,而不是有一个巨大的列表每个表格列的搜索框。
请问任何人都可以在访问查询中帮助您实现此目的吗?我正在使用Access 2007。
感谢。
答案 0 :(得分:1)
我很确定没有办法将表单引用嵌入 static 查询设计中的列标题,但您可以使用表单后面的代码来动态 更新查询设计,然后打开查询,如下所示
Private Sub btnOpenQuery_Click()
Dim cdb As DAO.Database, qdf As DAO.QueryDef
Const queryName = "flexQuery"
Set cdb = CurrentDb
DoCmd.Close acQuery, queryName, acSaveNo
On Error Resume Next
DoCmd.DeleteObject acQuery, queryName
On Error GoTo 0
Set qdf = cdb.CreateQueryDef(queryName, _
"SELECT URN, StyleNo, [" & Me.Combo3.Value & "] " & _
"FROM dbo_OrderHeader " & _
"WHERE [" & Me.Combo3.Value & "]=""" & Me.Text5.Value & """" _
)
Set qdf = Nothing
Set cdb = Nothing
DoCmd.OpenQuery queryName, acViewNormal
End Sub
注意:此示例代码假定“动态”列是文本列,因此在构造SQL语句时它会在"
周围放置Text5.Value
个字符。必须增强此代码以处理其他列类型(例如,数字列没有引号,日期可能为#
分隔符。)