【问题标题】:Populating an Access combobox excluding values already in DB填充 Access 组合框,不包括 DB 中已有的值
【发布时间】:2013-10-23 14:01:44
【问题描述】:

这个数据库的目的是将“变量名”分配给不同的“表”。我们正在获取我们的数据并制作有限的数据集,因此我使用 Access 来记录该过程。我有 3 张桌子:

  • tbl_var - 包含所有变量信息
  • tbl_db - 包含有限数据集的名称和特征
  • tbl_vardb - 关联表 ID 和变量 ID 的链接表

我创建了一个表单来选择要添加到特定数据集的变量。这很简单,有两个下拉框。一个框是数据集的名称。另一个框是所有变量的名称。问题是,如果我已经选择“sex”作为“demo”数据集的变量,我不希望“sex”作为未来变量下拉值的选项弹出。毕竟它已经在数据集中了,没有理由再添加它。由于存在多个数据集,因此在查询中硬编码数据集名称并不适合我。

如何使用特定数据集中尚不存在的值填充变量下拉列表?

【问题讨论】:

    标签: ms-access combobox populate


    【解决方案1】:

    对于表 [tbl_var] ...

    variableID  variableName
    ----------  ------------
             1  LastName    
             2  FirstName   
             3  Sex         
    

    ... [tbl_db] ...

    datasetID  datasetName
    ---------  -----------
            1  Demo       
            2  SomeOther  
    

    ... 和 [tbl_vardb] ...

    datasetID  variableID
    ---------  ----------
            1           3
    

    ...如果我有一个名为 [cbxDataset] 的组合框从 [tbl_db] 获取其项目,那么我可以有另一个名为 [cbxVariable] 的组合框,其 Row Source

    SELECT variableID, variableName 
    FROM tbl_var 
    WHERE variableID NOT IN 
        (
            SELECT variableID 
            FROM tbl_vardb 
            WHERE datasetID=[cbxDataset]
        );
    

    [cbxDataset] 组合框的After Update 事件确保另一个组合框包含相关选项

    Private Sub cbxDataset_AfterUpdate()
    Me.cbxVariable.Requery
    End Sub
    

    【讨论】:

    • 我现在就试试这个。非常感谢您的明确回答!我会跟进结果。
    • 如果我将 '[cbxDataset]' 绑定到 [tbl_db] 中的 'Dataset_ID',我看不到名称 并且 绑定到 'Dataset_ID'。因此,我正在使用一个同时获取 ID 和名称的查询(获取 DS 名称)。我的表单来源是 [tbl_vardb]。截至目前,我在 [cbxVariable] 组合框中什么也看不到。我将尝试解决此问题。
    • @Lauren re: ID vs. name in a combo box - 另一个最近的问题here可能很有趣。
    • 我仍然遇到变量组合框的问题。我的行源 SQL 是:SELECT TBL_Var.Variable_ID, TBL_Var.VarName FROM TBL_Var WHERE (((TBL_Var.Variable_ID) Not In (SELECT TBL_DS_VAR.Variable_ID, TBL_DS_VAR.Dataset_ID FROM tbl_DS_VAR WHERE Dataset_ID = [cbxDataset] ))); 我的控件是 TBL_DS_VAR 中的变量 ID,我绑定到第一列,尽管只显示第二列,列宽为 0;1"。
    • @Lauren 你可以下载一个工作示例here
    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多