我有一个带有两个组合框的表单和一个使用下面的代码运行选择查询的按钮。目前的问题是它不会将组合框的输入作为字段输入。这是可以在SQL中解决的问题还是我必须使用VBA构建表单?
SELECT Field=[Forms]![TestInteractForm]![Combo18], Field=[Forms]![TestInteractForm]![Combo20]
FROM TestInteract;
答案 0 :(得分:2)
虽然可能不太明显,但您的目标与使用SELECT
子句中的查询参数来识别字段的目标基本相同。
不幸的是,Access不支持该功能。您的组合框值(字段名称)将被识别为有效的文本字符串,但无法通知Access该字符串应被解释为字段名称。
您可以获得的最接近的是使用Switch
语句,该语句将每个字段名称字符串映射到相应的字段值。因此,如果 TestInteract 和 Combo18 都包含4个字段( fld1 , fld2 , fld3 ,和 fld4 )像这样的东西实际上可以工作......
SELECT
Switch(
[Forms]![TestInteractForm]![Combo18]='fld1', [fld1],
[Forms]![TestInteractForm]![Combo18]='fld2', [fld2],
[Forms]![TestInteractForm]![Combo18]='fld3', [fld3],
[Forms]![TestInteractForm]![Combo18]='fld4', [fld4]
) AS first_column
FROM TestInteract;
但是,我建议你不要采用这种方法。我认为在命令按钮的点击事件中生成SELECT
语句可能更简单。
Dim strSelect As String
strSelect = "SELECT [" & Me.Combo18.Value & "]" & vbCrLf & _
"FROM TestInteract;"
然后在需要的地方使用 strSelect ...作为表单的RecordSource,作为记录集的数据源,或者作为已保存的.SQL
属性查询。