我目前有一个显示选择查询的子表单。我想用表格中的信息更新表格中显示的表B的所有记录。子表单不是必需的。我只是用它来确保我的选择查询显示正确。
表A有3列(OID,Project_Number,Landowner)
表B有4列(OID,PhoneNum,地址,年份)
这些表具有一对多的关系。表A中的一个OID与表B中的许多相关
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.Landowner
我想:
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]
答案 0 :(得分: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]