【发布时间】:2013-06-12 10:52:24
【问题描述】:
这涉及我们的 Access 2007 中的两个表。
“Station Master”表由工作站记录组成
“Move-Add-Change” 表包含移动、添加、更改具体步骤的记录项目 ID。
我创建了一个查询以从“Move-Add-Change”中提取与 Project Id 匹配的所有记录。 然后,我需要进行如下处理:
遍历"Pull MAC Records by Project # Qry" 查询中的每一行(有一个序列字段
也从 1 开始编号)
如果行中的 Action 字段为 Move:
-
如果同一行的“To Loc”不是以TSS开头(用于Inventory Loc),则更新“Station Master”中的记录Loc Name 等于
"Pull MAC Records by Project # Qry"查询中同一行的 "From Loc" 字段,将其值更改为"Pull MAC Records by Project # Qry"查询中同一行的 To Loc 字段 如果同一行的“To Loc”以TSS开头,则删除“Station Master”中Loc Name匹配“来自
"Pull MAC Records by Project # Qry"查询中同一行的Loc”。
如果行中的Action字段是Add:
- 在“Station Master”中创建一条新记录,Loc Name 是该行的“To Loc”字段
如果行中的Action字段是Change:
- 执行与 Move 相同的操作,并使用
"Pull MAC Records by Project # Qry"查询中同一行的 Notes 字段中的信息更新 “Station Master” 的描述
代码必须在"Pull MAC Records by Project # Qry" 中逐行执行,因为我们可能会将另一个站点移动到刚刚移开的位置。
查询的部分结果示例:
Project Id Seq Action From Loc To Loc Notes
A123456 1 Move WFC1234 TSSRepair For OEM service
A123456 2 Move WFC9999 WFC1234 Test station
...
如果我调用查询来进行更新,它似乎不会逐行遍历并会提示违规(我认为它试图将 WFC9999 更改为 WFC1234 当原来的WFC1234记录还在,造成重复)。
这是我的查询的 SQL:
UPDATE [Station Master], [Pull MAC Records by Project # Qry]
SET [Station Master].[Loc Name] = [Pull MAC Records by Project # Qry]![To Loc],
[Station Master].[Loc Function] = Left([Pull MAC Records by Project # Qry]![To Loc],3), [Station Master].[Loc #] = Right([Pull MAC Records by Project # Qry]![To Loc],Len([Pull MAC Records by Project # Qry]![To Loc])-3)
WHERE
((([Station Master].[Loc Name]) = [Pull MAC Records by Project # Qry]![From Loc]));
我做错了什么?我可以在 VBA 代码中拥有所有这些过程吗(我不擅长)?
【问题讨论】:
标签: sql ms-access vba ms-access-2007