如何创建此追加记录?

时间:2019-03-04 15:33:34

标签: sql ms-access

我有一张桌子,上面满是以下员工:

tblEmployees
+--------------+------------+-----------+-------+
| EmployeeID   |  FirstName |  LastName |  Wage |
+--------------+------------+-----------+-------+

然后我有了一个表,用户可以从中将数据粘贴到表中,如下所示:

tblImport
+------------+-----------+--------------+
| EmployeeID |  WorkDate |  HoursWorked |
+------------+-----------+--------------+

这将进入另一个结构相同的表(HoursWorkedRecords)。

当我从导入表追加到主表时,我首先想要的是:

  • 用于检查粘贴到EmployeeID表中的tblImport中是否存在tblEmployees的追加,如果存在,则将其追加到HoursWorkedRecords

  • 在导入检查之前,EmployeeID上没有给定WorkDate的重复记录。

我的问题是我该如何实现?

2 个答案:

答案 0 :(得分:0)

您可以使用查询来执行此操作。如果您在LEFT JOIN的{​​{1}}和HoursWorkedRecords之间使用tblEmployees,则employee表中的任何空条目将表示找不到该雇员的工作时间记录。您可以直接使用此查询,也可以通过VBA模块使用该查询。

查询的(未经测试的)SQL是

EmployeeID

答案 1 :(得分:0)

您的问题的答案取决于如果您的任何一项要求均未得到满足,您希望如何进行:

  • 如果在EmployeeID表中没有找到{{1>} ,怎么办?
  • 如果在tblEmployees表中找到 个重复项,应该怎么办?

如果这些问题的答案是简单地忽略不符合条件的记录,则可以通过相对简单的HoursWorkedRecords查询来实现:

INSERT

在这里,insert into hoursworkedrecords select i.employeeid, i.workdate, i.hoursworked from (tblimport i inner join tblemployees e on i.employeeid = e.employeeid) left join hoursworkedrecords h on i.employeeid = h.employeeid and i.workdate = h.workdate where h.employeeid is null 表上的inner join确保tblEmployees有效,并且EmployeeID表上的left join与{ {1}}标准可确保该员工在该日期的记录不存在。

但是,如果应提醒用户注意这些问题,则应使用上述查询的相反内容来选择无效记录,以供用户在继续之前进行检查。