【问题标题】:Determine which dates in a table are between two given dates确定表中的哪些日期在两个给定日期之间
【发布时间】:2016-05-12 09:52:31
【问题描述】:

我有一张带有国定假日日期的表格。我想检查两个给定日期(开始日期和结束日期)之间是否有任何假期,如果有将它们插入另一个表中。

Dim rs As DAO.Recordset
Dim tblferiados As DAO.Recordset
Set tblferiados = CurrentDb.OpenRecordset("feriados")
Dim db As Database
Set db = CurrentDb
Set rs = db.OpenRecordset("natHolidays")`
If (tblholidays.Fields("date") >= [Forms]![Form]![Text0] & tblholidays.Fields("date") <= [Forms]![Form]![Text4]) Then
    rs.AddNew
    rs!Date = tblferiados.Fields("data")
    rs.Update
End If
rs.Close: Set rs = Nothing

【问题讨论】:

  • tblholidays 来自哪里?您的代码有点混乱。
  • 我认为你的意思是 tblferiados.Fields("date") 代替 tblholidays.Fields("date")
  • 感谢您的回复,我已经解决了这个问题,只需要通过 CDate() 来传递控件 :)

标签: sql vba ms-access


【解决方案1】:

替换

 If (tblholidays.Fields("date") >= [Forms]![Form]![Text0] & tblholidays.Fields("date") <= [Forms]![Form]![Text4]) Then

 If (tblholidays.Fields("date") >= [Forms]![Form]![Text0]) AND ( tblholidays.Fields("date") <= [Forms]![Form]![Text4]) Then

VBA 中的&amp; 字符执行字符串连接

【讨论】:

  • 嗨,戴夫,感谢您的快速回复,我已经尝试了两种方法,但都不起作用。我尝试在“If”上使用断点进行调试,我看到的是“if”内没有值。我使用作为输入日期:2016 年 1 月 8 日和 2016 年 8 月 30 日,国定假日之一是 2016 年 8 月 15 日,所以它应该通过条件..
  • 您在哪里设置了 tblholidays?它的分配是否正确?
  • 嗨,戴夫,谢谢你的帮助,我已经弄明白了。可能,尽管格式为“dd/mm/yyyy”,文本框中的值仍必须作为字符串传递。我已经更改了代码,在表单控件上使用了 CDate(),现在它可以正常工作了:)
猜你喜欢
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多