Access 2003 - 根据选择的查询结果运行更新查询

时间:2012-11-16 20:41:04

标签: ms-access sql-update ms-access-2003

我目前有一个显示选择查询的子表单。我想用表格中的信息更新表格中显示的表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]

1 个答案:

答案 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]