0

我目前有一个显示选择查询的子表单。我想用表单中的信息更新子表单中显示的表 B 的所有记录。子表单不是必需的。我只是用它来确保我的选择查询正确显示。

表 A 有 3 列(OID、Project_Number、Landowner)
表 B 有 4 列(OID、PhoneNum、地址、年份)

这些表具有一对多的关系。表 A 中的一个 OID 与表 B 中的多个 OID 相关

Table A
1          A10          Bill
2          B10          Sally
3          A10          Bill

Table B
1          555          123 blah st           2012
1                                             2013
2          111          456 aaa st            2012
3                                             2012

该表单允许用户输入填充表 B 的信息。子表单显示一个记录列表,其中 Project_Number、Landowner 和 Year 等于表单上显示的记录

For example.  If the form is showing
1         A10          Bill

the subform is showing
1         A10          Bill        2012
3         A10          Bill        2012

当我单击保存命令按钮时,我希望它运行更新查询,但我遇到了 SQL 命令问题。

我的选择查询如下:

SELECT B.Project_Number, A.LANDOWNER, B.Year
FROM A INNER JOIN B ON A.OBJECTID = A.OBJECTID;

子表单是设置
链接子字段:Project_Number;年; 土地所有者
链接主字段:B.Project_Number;年; A.地主

我想:

UPDATE B.PhoneNum, B.Address, B.Year
WHERE items found in my subform
WITH information from my form

忘记子表单并通过单个更新查询完成所有操作是否更容易?

UPDATE B SET B.phonenum = [New_Info]![PhoneNumCtrl], B.Address = [New_Info]![AddressCtrl]
WHERE [A]![Landowner] = The same landowner as the OID selected, [A]![Project_Number] = The same project number as the OID selected, [New_Info]![Year] = [B]![Year]

提前感谢您的帮助!

现在一切正常。我想添加到 djphatic 的答案。
执行此操作时,请确保添加 [Forms]![formname]![controlname]

4

1 回答 1

1

根据控件在表单上的位置,您可能需要更改控件引用。

使用查询构建器 GUI 创建一个选择查询,其中包含您希望更新的列,并使用表单上的控件过滤记录。一旦你有了这个,你可以将查询更改为更新查询并设置表单上的控件的值。

UPDATE  B
SET B.phonenum = [formname]![controlname], ...
FROM B JOIN A ON B.OID = A.OID
WHERE A.PROJECTID = [formname]![controlname]
AND B.YEAR = [formname]![controlname]
于 2012-11-16T20:46:04.737 回答