使用带有2个或多个内部联接子语句的VBA记录集更新MS访问表

时间:2018-12-02 10:24:15

标签: sql vba ms-access access-vba recordset

我在访问中有3个表-tblUsers,tblAssignnent和tblJob。在tblJob中,使用VBA中的一系列计算,我到达了数据转储,该数据转储将由我的质量(QC)团队进行。 tblUsers列出了我们所有员工以及他们在全球的位置。 tblAssignnent定义了哪个QC团队分析师将处理我们全球员工处理的案件。例如。 QCID 123需要处理我们在中国工作的所有3级案件。因此,VBA必须将QCID 123分配给中国个人在第3级工作的所有行。我们大约有20个这样的QC ID,平均每天处理1000个案例。

同样,这里要注意的是tblUsers定义了每个员工的姓名和位置-tblAssignnent定义了每个员工的位置和级别以及预期起作用的QC ID。 tblJob具有人员名称和级别。在下面查看他的快照,

tblUsers
NAME        LOCATION    
Mathew      Shanghai
John        New York
Peter       Dubai

tblAssignnent
QCID        LEVEL       LOCATION
123         L3          Shanghai
135         L1          New York

tblJob
QCID        LEVEL       NAME        CASEID
            L3          Mathew      001283526
            L1          John        827271729

所以基本上,我需要使用VBA在tblJob中用123和135更新QCID。我尝试在记录集中进行INNER JOIN,但我一直收到错误消息。在搜索时,显然VBA记录集可能无法保存复杂的语句。原谅我格式不佳,因为我现在只能使用手机。我所有尝试使用此代码的尝试均以失败告终,我将非常乐意提供任何扩展帮助。

我随时为您澄清。

1 个答案:

答案 0 :(得分:0)

我想我可能会更早读错这个。如果只需要将QCID添加到表Job中,则它非常简单:

UPDATE (tblJob 
INNER JOIN tblAssignment ON tblJob.LEVEL = tblAssignment.LEVEL) 
INNER JOIN tblUsers ON (tblUsers.Location = tblAssignment.Location) 
AND (tblJob.EName = tblUsers.EName) 
SET tblJob.QCID = tblAssignment.QCID