使用表单字段Access 2007中的输入选择SQL查询

时间:2014-10-25 18:15:02

标签: sql vba ms-access access-vba ms-access-2007

我有一个带有两个组合框的表单和一个使用下面的代码运行选择查询的按钮。目前的问题是它不会将组合框的输入作为字段输入。这是可以在SQL中解决的问题还是我必须使用VBA构建表单?

 SELECT Field=[Forms]![TestInteractForm]![Combo18], Field=[Forms]![TestInteractForm]![Combo20]
FROM TestInteract;

1 个答案:

答案 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属性查询。