表单ComboBox在Access 2007查询中充当表列标题

时间:2013-04-18 12:12:25

标签: combobox ms-access-2007

我有一个带有未绑定组合框的表单,其中包含表dbo_orderheader的所有列标题。我想要做的是使用组合框字段作为表列标题,而不是硬编码到特定的表列标题,这样用户可以从他们选择的列上的表单动态搜索,而不是有一个巨大的列表每个表格列的搜索框。

请问任何人都可以在访问查询中帮助您实现此目的吗?我正在使用Access 2007。

感谢。

See Picture Attached

1 个答案:

答案 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个字符。必须增强此代码以处理其他列类型(例如,数字列没有引号,日期可能为#分隔符。)