如何使用 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 个公共列。例如,如果您的 a1
、a2
和 a3
字段包含 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 & "#"
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 个公共列。例如,如果您的 a1
、a2
和 a3
字段包含 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 & "#"