0

我需要将多个父类型之一分配给单个子项。我遇到的问题是,在 Access 2010 Web 数据库中,我无法创建联合查询来将所有潜在的父级(来自多个表)放入单个下拉列表/列表框中。

我对这一切有点陌生,可能完全错了。我非常愿意接受建议。这是我的例子:

  • 合同是分包合同的父级。
  • 合同和分包合同都有工作说明书 (SoW)。
    • 合同和分包合同都可以是 SoW 的直接父级。
  • 每个母猪只有一个父母
    • 母猪被分成几段(不太重要)

使用联合查询,我会以这种方式构建数据库:

  • 合约表
  • 分包表
  • 合同和分包合同的联合表
  • 从 SoW 表中查找联合表,以便从单个数据源中选择合同或分包合同作为父级。

这里的问题是我无法在 Web 数据库中创建联合查询。

我唯一的另一个想法是以这种方式构建数据库:

  • 合约表
  • 分包表
  • 合同 SoW 表
  • 分包 SoW 表

这种设计(使用两个表)可能更有效地用于数据输入,因为在尝试使用联合表时可能会出现子表单问题。我不确定,因为我还没有尝试过。使用这种方法,Access 报告应该能够将子合同绑定到父合同并在详细信息部分显示所有数据。但是,这种设计仍然意味着我将使用两个单独的表来存放相同的数据。

4

1 回答 1

0

我会将两个合同表放在一个表中,如下所示:

CREATE TABLE ContractTable(
  ContactID INTEGER NOT NULL PRIMARY KEY, -- Possibly an autonumber
  [various contract columns],
  ParentContract INTEGER
);

注意,我知道这不是访问友好的语法。我通常使用更大的数据库,但你应该能够理解。

那么您查找父合同的查询是SELECT ... FROM ContractTable WHERE ParentContract IS NULL.

寻找分包合同SELECT ... FROM ContractTable WHERE ParentContract IS NOT NULL

我对这种方法的担忧是,如果您需要搜索合约链(即 D 的 C 父母的 B 父母的 A 父母,并且您需要从 A 转到 D),您可能会遇到我不知道的递归 SQL。 t 认为 Access 可以处理。你必须这样做 VBA 代码。

于 2013-05-30T20:07:26.817 回答