我有一个带有未绑定组合框的表单,其中包含表 dbo_orderheader 的所有列标题。我想要做的是使用组合框字段作为表列标题,而不是将其硬编码为特定的表列标题,这样用户可以从他们选择的列上的表单中动态搜索,而不是拥有一个巨大的列表每个表格列的搜索框数。
请任何人都可以帮助在访问查询中执行此操作吗?我正在使用 Access 2007。
谢谢。
我有一个带有未绑定组合框的表单,其中包含表 dbo_orderheader 的所有列标题。我想要做的是使用组合框字段作为表列标题,而不是将其硬编码为特定的表列标题,这样用户可以从他们选择的列上的表单中动态搜索,而不是拥有一个巨大的列表每个表格列的搜索框数。
请任何人都可以帮助在访问查询中执行此操作吗?我正在使用 Access 2007。
谢谢。
我很确定没有办法将表单引用作为列标题嵌入到静态查询设计中,但是您可以使用表单后面的代码来动态更新查询设计,然后打开查询,就像这样
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
必须增强此代码以处理其他列类型(例如,数字列没有引号,#
日期可能有分隔符)。