这涉及Access 2007中的两个表。
“Station Master”表包含工作站记录
“移动 - 添加 - 更改”表包含用于移动,添加和更改特定内容项目ID 的步骤的记录。
我创建了一个查询,以从“项目ID 匹配的”Move-Add-Change“中提取所有记录。 然后,我需要按如下方式处理:
通过"Pull MAC Records by Project # Qry"
查询中的每一行(有一个序列字段)
在那里从1开始计数编号)
如果行中的Action字段为Move:
如果同一行的“To Loc”未以TSS开头(用于库存地点),请更新“Station Master ”中的记录如果Loc Name等于"Pull MAC Records by Project # Qry"
查询中同一行的“From Loc”字段,请将其值更改为"Pull MAC Records by Project # Qry"
查询中同一行的To Loc字段
如果同一行的“To Loc”以TSS开头,请删除Loc name匹配的“Station Master”中的记录来自"Pull MAC Records by Project # Qry"
查询中同一行的“Loc”。
如果行中的操作字段为添加:
如果行中的“操作”字段为“更改:
”"Pull MAC Records by Project # Qry"
查询代码必须在"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代码(我不擅长)吗?
答案 0 :(得分:0)
根据您是否需要实际循环,您可以使用VBA执行此操作:
'Set your variables
Dim myR as Recordset
Dim myR2 as Recordset
'Then set your recordsets to the two tables you want to work with
Set myR = db.OpenRecordset("Station Master", dbOpenDynaset)
Set myR2 = db.OpenRecordset("Move-Add-Change", dbOpenDynaset)
'Now select the table you wish to work with until the end of file(EOF)
while Not myR.EOF
If myR![Action] = "Move" Then
'Code goes here if true
Else
'Code goes here if false
End If
'Move to the next record and loop if not end of file(EOF)
myR.MoveNext
Loop
'Make sure to set close your recordsets when done
Set myR = Nothing
Set myR2 = Nothing