如何使用 2 个 DTPicker 和两个 (2) Table 对日期范围进行编码

How to code date range using 2 DTPicker with Two (2) Table

Private Sub DTPicker3_Change()

   loadData "Select  CheckItem as 'Check Item',CheckItem as 'Check Item',ItemNo as 'Item No.',Criteria as 'Criteria',Mcname as 'Machine Name',AMstart as 'Start of Shift' ,AMafter as 'After 1st break',PMstart as 'Start of Shift' ,PMafter as 'After 1st break',CheckDate FROM tbl_Checklist where CheckDate BETWEEN '" & DTPicker2.Value & "'AND  '" & DTPicker3.Value & " '" '

 End Sub


Private Sub DTPicker2_Change()

  loadData "Select  CheckItem as 'Check Item',CheckItem as 'Check Item',ItemNo as 'Item No.',Criteria as 'Criteria',Mcname as 'Machine Name',AMstart as 'Start of Shift' ,AMafter as 'After 1st break',PMstart as 'Start of Shift' ,PMafter as 'After 1st break',CheckDate FROM tbl_Checklist  where CheckDate BETWEEN '" & DTPicker2.Value & "'AND  '" & DTPicker3.Value & "'" 
End Sub

我之前的问题是关于如何仅搜索 1 中两个 dtpicker 之间的日期范围 table only

您可以使用 UNION 合并两个表并应用相同的 WHERE 子句:

SELECT CheckItem AS 'Check Item', ItemNo AS 'Item No', Criteria, CheckDate FROM tbl_checklist WHERE CheckDate BETWEEN #" & DTPicker2 & "# AND #" & DTPicker3 & "#"
UNION
SELECT CheckItem AS 'Check Item', ItemNo AS 'Item No', Criteria, CheckDate FROM tbl_Dross WHERE CheckDate BETWEEN #" & DTPicker2 & "# AND #" & DTPicker3 & "#"

由于您的列数不均匀,您将不得不将一些字段合并在一起,或者只合并 return 个公共列。例如,如果您的 a1a2a3 字段包含 OK 或 NOT OK,则可以使用以下内容将它们合并为一个字段:

IIF(a1 = 'OK' AND a2 = 'OK' AND a3 = 'OK', 'OK', 'NOT OK') AS AMstart

或者您可以将字段连接成一个:

SELECT a1 + '-' + a2 + '-' + a3 AS AMstart

这是一个同时使用两者的示例:

SELECT CheckItem AS 'Check Item', ItemNo AS 'Item No', Criteria, CheckDate, AMstart, AMafter, PMstart, PMafter, Mcname FROM tbl_checklist WHERE CheckDate BETWEEN #" & DTPicker2 & "# AND #" & DTPicker3 & "#"
UNION
SELECT CheckItem AS 'Check Item', ItemNo AS 'Item No', Criteria, CheckDate, a1 + '-' + a2 + '-' + a3 AS AMstart, IIF(a4 = 'OK' AND a5 = 'OK' AND a6 = 'OK', 'OK', 'NOT OK') AS AMafter, a7 + '-' + a8 + '-' + a9 AS PMstart, IIF(a10 = 'OK' AND a11 = 'OK' AND a12 = 'OK', 'OK', 'NOT OK') AS PMafter, Mcname FROM tbl_Dross WHERE CheckDate BETWEEN #" & DTPicker2 & "# AND #" & DTPicker3 & "#"