Ms access MS Access:是什么原因导致一个具有联接查询的表单正确加载而另一个表单不正确加载? 最新消息!
如果我用SQL手动创建新记录,然后用下面的代码在编辑模式下打开表单,它就可以工作了。我仍然想知道以前的问题是什么,但至少我现在可以继续我的申请了Ms access MS Access:是什么原因导致一个具有联接查询的表单正确加载而另一个表单不正确加载? 最新消息!,ms-access,data-binding,foreign-keys,ms-access-2007,Ms Access,Data Binding,Foreign Keys,Ms Access 2007,如果我用SQL手动创建新记录,然后用下面的代码在编辑模式下打开表单,它就可以工作了。我仍然想知道以前的问题是什么,但至少我现在可以继续我的申请了 表格1 表格1绑定到表1。表1有一个ID字段 表格2 Form2绑定到Table2,并连接到Table2上的Table1。Table1_ID=Table1.ID 以下是SQL(由Access生成): 打开Form2时,在Form1中使用以下代码: DoCmd.RunCommand acCmdSaveRecord DoCmd.OpenForm "For
表格1 表格1绑定到表1。表1有一个ID字段 表格2 Form2绑定到Table2,并连接到Table2上的Table1。Table1_ID=Table1.ID 以下是SQL(由Access生成): 打开Form2时,在Form1中使用以下代码:
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenForm "Form2", , , , acFormAdd, , Me.[ID]
DoCmd.Close acForm, "Form1", acSaveYes
加载运行时:
Me.[Table1_ID] = Me.OpenArgs
Me.[Table2_ID] = Me.OpenArgs
加载Form2时,绑定到表1中的列的字段将正确显示
表格3
Form.Control Source = SELECT Table3.*, Table2.Col1 FROM Table2 INNER JOIN Table3 ON Table2.Table2_ID=Table3.Table2_ID;
Form_Load event set to
Me.[Table2_ID] = Me.OpenArgs
TextBox control named Table3_ID with a Control Source=Table3_ID
TextBox control named Table2_ID with a Control Source=Table2_ID
TextBox control named Col1 with a Control Source=Table2.Col1
Form3绑定到Table3,并连接到Table3上的Table2。Table2_ID=Table2.ID
以下是SQL(由Access生成):
Form3在Form2中使用以下代码打开:
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenForm "Form3", , , , acFormAdd, , Me.[ID]
DoCmd.Close acForm, "Form2", acSaveYes
加载运行时:
Me.[Table1_ID] = Me.OpenArgs
Me.[Table2_ID] = Me.OpenArgs
加载Form3时,绑定到表2中列的字段不会正确显示
为什么?
更新 我尝试将连接查询变成一个单独的查询,并将其用作我的记录源,但没有任何区别 如果我转到Form3的查询并在数据表视图中查看它,我可以看到应该拉入表单的信息就在那里。它只是没有出现在表格上
另一轮更新 让我提供一个类似的情况,这样我想做的是清楚的 表1现在是房屋。 表2现在是驱动程序。 表3现在是汽车 假装我在写保险申请书。这些表之间的关系将完全符合我要做的 每个房子可以有一个或多个司机,而每个司机正好有一辆车。现在,我只是想用一栋房子,一个司机和一辆车让它工作。用户应该首先看到一个名为HouseInformation的表单,该表单将要求他们填写关于他们房子的信息。然后他们会看到DriverInformation,要求他们填写自己的信息。然后,他们将看到一个信息,要求他们填写有关他们汽车的信息。完成后,每个表中将有一条记录。Drivers中的记录将包含与相应房屋匹配的HouseId,Cars中的记录将包含DriverId,与相应的driver匹配。我并不特别关心表单是如何链接的,只关心它们是如何链接的,以及它是否可靠地工作 值得一提的是,我还尝试了许多其他加载表单并设置其外键id的方法。这些方法都没有导致表单从上一个表单的表中提取数据,即使这种模式在前两个表单之间确实有效
更多更新 客户不接受子表单,客户特别要求单独的表单
我发现这非常令人困惑,但是在加载Form3之后,如果我关闭它,进入设计视图,打开Form3的查询并切换到数据表视图,正确的数据就在那里,包括我想要从Form2中获取的字段。它不会出现在表格上。我再次询问。这没什么区别。它不会显示。这通常通过子窗体完成。这有两种方法:
Form.Control Source = Table1
TextBox control named Table1_ID with a Control Source=Table1_ID
TextBox control named Col1 with a Control Source=Col1
Command Button with Click event set to:
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenForm "Form2", , , , acFormAdd, , Me.[Table1_ID]
DoCmd.Close acForm, "Form1", acSaveYes
Form.Control Source = SELECT Table2.*, Table1.Col1 FROM Table1 INNER JOIN Table2 ON Table1.Table1_ID=Table2.Table1_ID;
Form_Load event set to
Me.[Table1_ID] = Me.OpenArgs
TextBox control named Table2_ID with a Control Source=Table2_ID
TextBox control named Table2.Col1 with a Control Source=Table2.Col1
TextBox control named Col1 with a Control Source=Table1.Col1
Command Button with Click event set to:
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenForm "Form3", , , , acFormAdd, , Me.[Table2_ID]
DoCmd.Close acForm, "Form2", acSaveYes
Form.Control Source = SELECT Table3.*, Table2.Col1 FROM Table2 INNER JOIN Table3 ON Table2.Table2_ID=Table3.Table2_ID;
Form_Load event set to
Me.[Table2_ID] = Me.OpenArgs
TextBox control named Table3_ID with a Control Source=Table3_ID
TextBox control named Table2_ID with a Control Source=Table2_ID
TextBox control named Col1 with a Control Source=Table2.Col1
1. Open Form1
a. Table1_ID: 1
b. Col1: Val
2. Click the Button.
3. Form2 Opens in add mode.
a. Table2_ID shows next ID (probably 4)
b. Table2.Col1: <blank>
c. Table1.Col1: Val1
4. Enter "FOO" in the TextBox for Table2.Col1 and Click the button
5. Form3 Opens in add mode
a. Table3_ID: next id (probably 4)
b. Table2_ID: the id shown in Step 3a.
c. Table2.Col1: FOO