比较表和返回匹配的值(SQL,VBA)

时间:2017-02-27 08:32:04

标签: sql excel vba ms-access

早上好,

我想我可能会遗漏一些明显的东西,所以我希望有人可以把我推向正确的方向。

我使用Excel 2010使用DAO查询Access 2010数据库。我有两张桌子需要参与,[缺席]和[工作人员]。前者包括缺勤和员工姓名的详细信息,后者包括员工的更多详细信息,例如他们的团队经理。我目前可以查询并返回有关缺勤的信息而不会出现任何问题,但是,我需要对此进行扩展,以检查缺勤表中的员工姓名是否与员工表中相应的团队经理相关联。所以,用简单的英语,它应该是#34;如果工作人员列在员工表中的这个团队经理下,那么请在这两个日期之间给我所有记录。

到目前为止,这是我的代码(示例中删除了额外的字段),工作正常:

Sub QueryDatabase()
Dim db As DAO.Database 'the database
Dim rex As DAO.Recordset 'the recordset in which to place the data

Set db = OpenDatabase(ActiveWorkbook.Path & "/DB.accdb", False, True, ";pwd=" & pw)
Set rex = db.OpenRecordset("SELECT [RecordDate], [StaffName], FROM [Absence] WHERE [RecordDate] BETWEEN #" & dFromDate & "# AND #" & dToDate & "# ;")

非常感谢任何建议或指导!

Snayff

1 个答案:

答案 0 :(得分:1)

  1. 始终将SQL查询打印到字符串。这允许您在执行查询之前检查它。

  2. dFromDatedToDate格式是否正确,是否正确打印到SQL查询(参见上一点)?

  3. 如果工作人员列在员工表中的这个团队经理下,那么,请在这两个日期之前从缺勤表中提供所有记录"你需要一个联接,例如:

     SELECT Absence.name FROM Absence, Staff
     WHERE Absence.name = Staff.name
       AND Staff.mananger = manager_name;