CoderJack
1/10/2025
嘿,大家好!👋
我最近在搞一个 Access 数据库的项目,结果被一个小问题卡住了,真是让人头大!😅 我有一段 Visual Basic 的代码,原本是用来检查日期的。代码里有个硬编码的日期 #1/1/2020#
,我想把它改成动态获取的日期,比如说今年的前两年,也就是 #1/1/2023#
。这样每年都能自动更新,不用手动去改。有没有大佬能帮我看看怎么搞?🙏
这是我目前的代码:
Private Sub txt_bene_birth_date_BeforeUpdate(Cancel As Integer) Dim s As String If IsNull(txt_bene_birth_date) Then s = "The beneficiary birthdate field is a required field and can not be left blank." & vbCrLf & vbCrLf & vbCrLf InputError txt_bene_birth_date, s, "Beneficiary Birthdate" Exit Sub End If ' 这里是我想改的地方,想把硬编码的日期改成动态的 If Not IsNull(txt_bene_birth_date) And (txt_bene_birth_date < #1/1/1900# Or txt_bene_birth_date > #1/1/2020#) Then s = "The calculator does not support beneficiary birthdates prior to 1/1/1900 or subsequent to 1/1/2020. " & vbCrLf & vbCrLf & vbCrLf InputError txt_bene_birth_date, s, "Beneficiary Birthdate" Exit Sub End If End Sub
我试过用 DateAdd
函数来计算日期,但总是搞不定。😩 有没有人能给我个提示或者代码片段?我会非常感激的!谢谢大家的帮助!🙌
PS: 这个项目有点紧急,所以如果能尽快解决就太好了!😅
希望能在这里找到答案,提前感谢各位大佬的指点!
程序员老刘
1/10/2025
嘿,你好啊!👋
我太理解你遇到的这个 Access 数据库问题了!我之前也在类似的项目中被日期处理搞得焦头烂额。别担心,我们一起来解决这个问题吧!😊
你想要动态更新日期,这个需求很常见。我们可以用 DateAdd
函数来计算当前年份的前两年,然后用这个动态日期来替代你代码中的硬编码日期。这样每年都能自动更新,省去了手动修改的麻烦。
下面是你可以尝试的代码修改:
Private Sub txt_bene_birth_date_BeforeUpdate(Cancel As Integer) Dim s As String Dim dynamicDate As Date ' 计算当前年份的前两年 dynamicDate = DateAdd("yyyy", -2, DateSerial(Year(Date), 1, 1)) If IsNull(txt_bene_birth_date) Then s = "The beneficiary birthdate field is a required field and can not be left blank." & vbCrLf & vbCrLf & vbCrLf InputError txt_bene_birth_date, s, "Beneficiary Birthdate" Exit Sub End If ' 使用动态日期进行比较 If Not IsNull(txt_bene_birth_date) And (txt_bene_birth_date < #1/1/1900# Or txt_bene_birth_date > dynamicDate) Then s = "The calculator does not support beneficiary birthdates prior to 1/1/1900 or subsequent to " & Format(dynamicDate, "m/d/yyyy") & "." & vbCrLf & vbCrLf & vbCrLf InputError txt_bene_birth_date, s, "Beneficiary Birthdate" Exit Sub End If End Sub
DateAdd("yyyy", -2, DateSerial(Year(Date), 1, 1))
:这行代码计算了当前年份的前两年,并将日期设置为该年的1月1日。Format(dynamicDate, "m/d/yyyy")
:将动态日期格式化为字符串,以便在错误信息中显示。Debug.Print
打印出 dynamicDate
,看看它是否符合预期。希望这个解决方案能帮到你!如果还有其他问题,随时来问哦!加油,你一定能搞定这个项目的!💪
如果需要进一步的帮助,我一直在这儿!🙌