填充Access组合框,不包括DB中已有的值

时间:2013-10-15 16:54:10

标签: ms-access combobox populate

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

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

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

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

1 个答案:

答案 0 :(得分: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