vba - VBA Access 中 DMin 函数中的两个日期条件
问题描述
我有一个包含多个日期字段的表格,例如
DOB (Date),
DOA_ASST(Date),
DOA_UDC (Date)
还有一些领域,比如
ID (AutoNumber),
EmpID (Integer),
EmpName (Text),
SeniorityNumber (Integer) etc.
许多员工在同一日期晋升,也有相同的任命日期。我想根据他们的第一次任命日期提供他们的年资序列号。
标准如下——
- 如果多个员工在同一日期晋升,则将考虑较早日期的任命日期,如果任命日期相同,则将考虑较早日期的出生日期。
我尝试了以下代码:-
Private Sub cmdProcess_Click()
Dim rst As Recordset
Dim rst1 As Recordset
Dim LastSN As Integer
Dim str, strAsst, strUDC, strLDC As String
Dim LDCDate, UDCDate, AsstDate, BirthDate As Date
AsstDate = Nz(DMax("[DOP_ASST]", "tblDraftSeniority"), DMin("[DOP_ASST]", "tblRawSeniority"))
UDCDate = DMin("[DOP_UDC]", "tblRawSeniority", "[DOP_ASST] = #" & AsstDate & "#")
LDCDate = DMin("[DOA_ESIC]", "tblRawSeniority", "[DOP_UDC] = #" & UDCDate & "# AND [DOP_ASST] = #" & AsstDate & "#")
BirthDate = DMin("[DOB]", "tblRawSeniority", "[DOA_ESIC] = #" & LDCDate & "#")
LastSN = DLookup("[ID]", "tblRawSeniority", "[DOB] = #" & BirthDate & "#")
Set rst = CurrentDb.OpenRecordset("tblRawSeniority")
Set rst1 = CurrentDb.OpenRecordset("tblDraftSeniority")
rst.MoveLast
rst.MoveFirst
Do While rst.EOF = False
If rst!ID = LastSN Then
With rst
Me.txtEmpName1 = rst!EmpName
Me.txtEmpCatg1 = rst!Category
Me.txtEmpDOB1 = rst!DOB
Me.txtEmpDOEntry1 = rst!DOA_ESIC
Me.txtEmpDONextPromo1 = rst!DOP_UDC
Me.txtEmpDOCurrentPromo1 = rst!DOP_ASST
Me.txtEmpStateRegion1 = rst!Region
Me.txtRemark1 = rst!Remark
Me.txtSN1 = rst!SrNoHQRS
End With
End If
rst.MoveNext
Loop
Set rst = Nothing
End Sub
但有两个日期标准的null
价值LDCDate
解决方案
由于您允许 AsstDate 使用空值,因此您很可能在 LDCDate DMin 查找的条件中使用空值(或 0)。如果您的表在 DOP_ASST 字段中实际上没有空值,那么您的 LDCDate 将为空值,因为没有找到结果。
推荐阅读
- python - np.loadtxt 文件语法问题
- javascript - 不要在日期选择器 php 中显示以前选择的日期
- python - 如何在 sympy 中定义非连续函数?
- c# - 在 .NET-Core 中的 mediator.publish 之后,通知处理程序未收到通知
- node.js - 使用从 keytool 创建的证书和密钥发出 HTTPS 请求
- javascript - Cypress.io/Cucumber - Given/When/Thens 的相同功能
- html - 图像作为 svg 路径的背景
- c# - C# System.Windows.Forms.KeysConverter.ConvertToInvariantString 返回本地化字符串
- r - 按数字汇总分类变量:gtsummary 包
- python - 为什么数据框列上的 numpy.sum 返回 inf?