1

我正在设计一个 Access 2010 Web 数据库,并且我正在尝试创建一个子表单来显示基于连接表的数据。它显示正常,但我无法修改数据。这两个表称为 Consortiums 和 PrincipleInvestigators。它们之间有一个多对多的链接,所以我有一个 ConsortiumsPrincipleInvestigators 连接表。

我有一个“联盟”表单,它显示与特定联盟相关的数据,并在该表单中有一个子表单,显示该联盟的主要调查人员。我能够成功完成所有 PI,但是当我尝试在该子表单中添加一个主要调查员时,它给了我一个错误:“无法添加记录;表 'PrincipleInvestigatorsConsortiums' 的连接键不在记录集中。什么给出?我想这是因为我需要更新 PrincipleInvestigators 表和连接表。(另外,MS,为什么我不能只使用标准关系数据库的东西而不是这个愚蠢的查找字段业务?)这是我的表格布局的一些屏幕截图和我的连接表:

http://i.imgur.com/j4RJQ.png

呜呜。尽管我已经完成了大量的数据库项目,但我觉得自己很笨,但是查找字段和查询构建器让我失望。有谁知道任何关于如何设计查询的好教程?

4

2 回答 2

2

在建立两个表之间的关系方面确实没有什么改变。您使用 GUI、SQL DLL 命令或现在一些关系向导的事实并没有改变任何东西。

我的意思是谁在乎在两个表之间建立关系的过程是什么?

我的意思是,在基于客户端的情况下,您可以输入如下内容:

ALTER TABLE Cars
   ADD CONSTRAINT MyColorIDRelationship
   FOREIGN KEY (ColorID) REFERENCES Colors (ColorID)

那么,现在您使用一些单击鼠标的向导,这很重要吗?真的,谁在乎!这里没什么大不了的,我们只关心你执行一些命令,或者一些向导,或者这里的一些东西,你在一天结束时,结果是你在两张表之间的心爱的关系。

查看我的以下视频,其中我将一些现有的相关数据“连接”到 Web 数据库中。我还分享了如何使用 Web 数据库的访问关系窗口打印出相关表:

http://www.youtube.com/playlist?list=PL27E956A1537FE1C5&feature=plcp

因此,归根结底,不必纠结于必须使用某些 DDL sql 命令、某些 GUI 关系窗口或某些向导的一些细节。正如上面的视频所示,您所做的只是连接一些表格并建立关系——仅此而已,无需担心。

至于如何添加要与父记录相关的子记录?好吧,在过去的 18 年中,几乎所有使用 Access 的鸟、狗和甲虫都会这样做:

a) 基于 ONE 主父记录表创建主窗体。这里不需要构建查询,实际上也不需要构建两个表的连接查询——这从来都不是必需的,也不是必需的。您所做的只是基于一个简单的表格构建一个表格。我们完成了这部分“a”。

b) 基于 ONE 子表创建一个表单。这里不需要构建查询,实际上也不需要构建两个表的连接查询——这从来都不是必需的,也不是必需的。您所做的只是基于一个简单的表格构建一个表格。

c) 打开第一个表单(基于父记录表的表单),然后在布局模式下,现在从导航窗格中拖放子表单。

上面的 a、b、c 步骤是我在 Access 中看到的几乎每个父子设置的完成方式,并且很长一段时间以来,设置 CONTINUES 继续在基于 Web 的应用程序中 100% 工作。

在这两种情况下(网络或非网络),设置保持不变,设置不涉及构建要求,并且设置不需要您进行任何编码。

只要子表单控件中的链接/主子设置正确,您就可以自由地将子记录添加到子表单,Access 将通过设置为您完成其余的设置和维护关系的繁琐工作该子表单中的 FK 列为您服务。

因此,在使用 Access 的 18 年中,基本设置的工作方式没有改变,因此在此处构建 Web 表单时也没有改变。

您不需要基于多个表的查询,实际上就像过去一样,这两种表单通常将仅基于一个表的数据源。

因此,在大多数情况下,甚至不需要对表单将基于的那个表使用查询。这种长期以来的基本方法和设置对于 Web 表单也没有改变。

在您的情况下,我假设主要形式是 Consortium。您的子表单可以是基于 Principleinvegiartors 的连续表单。您无需手动输入一些 PrincipleInvetigaor ID,而是使用基于表 PrincipleInvetgioars 的组合框。但是,在所有情况下,我们只是在构建基于单个基表的表单。

于 2012-08-22T20:34:08.303 回答
0

对于这种情况,您应该为主窗体选择一个表,为子窗体选择连接表。

例如:

Main Table
Consortiums 

Subform
ConsortiumsPrincipleInvestigators 

Link Child and Master Fields ConsortiumID

ComboBox on subform
Principal investors
Row source: SELECT InvestorID, InvestorDetails FROM PrincipalInvestors
Control Source: InvestorID
Bound Column: 1
Column Count: 2
Column Widths: 0,2

不在列表中的一些注释

        DoCmd.OpenForm "AddSomething", , , , , acDialog, AddData

        If Forms!AddSomething.Tag <> "" Then
            frm(cbo).Undo
            frm(cbo).Requery
            frm(cbo) = Forms!AddSomething.Tag

            AddCombo = acDataErrAdded
        Else
            AddCombo = acDataErrContinue
        End If

        DoCmd.Close acForm, "AddSomething"
于 2012-08-21T20:52:58.570 回答