【问题标题】:Define table in select query from the value of a text box根据文本框的值在选择查询中定义表
【发布时间】:2020-05-01 01:36:10
【问题描述】:

我在 MS Access 中有一个非常基本的选择查询。唯一的变量是我希望用户从下拉列表(组合框)中选择区域。每个区域都有一个不同的表,所以我希望从组合框中提取 FROM 字段。

我的查询如下所示:

    SELECT
       STOCK_CODE, STOCK DESCRIPTION

    FROM
       Forms![frm_MAIN_MENU]![txt_MAIN_MENU_REGION]

当我运行它时,我收到以下错误:

“FROM 字段中的语法错误”

我想我在某处读到这是不可能的?如果有人可以澄清一下?

谢谢

【问题讨论】:

    标签: ms-access select


    【解决方案1】:

    这是为什么您设置的数据库结构不是一个好主意的一个例子。使用这种设计意味着您必须更加努力地使数据库正常工作。

    更好的设计是将所有单独的表替换为一个表,并在其中添加一个标识区域的字段。然后,您将能够非常轻松地根据该区域标识符过滤此单个表。

    话虽如此,如果您真的想这样做,可以在 VBA 中完成。假设 [txt_MAIN_MENU_REGION] 是您的组合框,并且填充了您的区域:

    Private Sub txt_MAIN_MENU_REGION_AfterUpdate()
        On Error GoTo E_Handle
        Dim strSQL As String
        If Not IsNull(Me!txt_MAIN_MENU_REGION) Then
            strSQL = "SELECT STOCK_CODE, [STOCK DESCRIPTION] FROM " & Me!txt_MAIN_MENU_REGION
        End If
        Me!lstRegion.RowSource = strSQL
    sExit:
        On Error Resume Next
        Exit Sub
    E_Handle:
        MsgBox Err.Description & vbCrLf & vbCrLf & "frmRegion!txt_MAIN_MENU_REGION_AfterUpdate", vbOKOnly + vbCritical, "Error: " & Err.Number
        Resume sExit
    End Sub
    

    问候,

    【讨论】:

    • 谢谢,我把一个快速的数据库放在一起,所以在这里走捷径。但我同意,我宁愿为每个区域添加另一个字段,而是从那里定义查询。
    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多