我需要将多个父类型中的一个分配给单个子项。我遇到的问题是,在Access 2010 Web数据库中,我无法创建Union查询以将所有潜在父项(来自多个表)放入单个下拉/列表框中。
我对这一切都有点绿,可能会完全错误。我对建议很开放。这是我的例子:
使用union查询,我会以这种方式构建数据库:
这里的问题是我无法在Web数据库中创建联合查询。
我唯一的另一个想法是以这种方式构建数据库:
此设计(使用两个表)可能更有效地用于数据输入,因为在尝试使用联合表时可能存在子表单问题。我不确定,因为我还没有尝试过。使用此方法,Access报告应该能够将转包绑定到父合同,并在详细信息部分中显示所有数据。但是,这种设计仍然意味着我将使用两个单独的表来存放相同的数据。
答案 0 :(得分:0)
我会把两个合约表放在一个表中,看起来像这样:
CREATE TABLE ContractTable(
ContactID INTEGER NOT NULL PRIMARY KEY, -- Possibly an autonumber
[various contract columns],
ParentContract INTEGER
);
注意,我知道这不是Access友好语法。我通常使用更大的数据库,但你应该能够理解。
然后,查找父合同的查询为SELECT ... FROM ContractTable WHERE ParentContract IS NULL
。
查找子合约SELECT ... FROM ContractTable WHERE ParentContract IS NOT NULL
。
我对这种方法的关注是,如果你需要搜索契约链(即D的C父代的B父代的父代,你需要从A到D),你可能会遇到递归SQL我不认为Access可以处理。你必须要做VBA代码。