我使用 MS Access 作为 MySQL 服务器数据库的前端。在数据库中,我有一个名为 PubHol(意思是公共假期)的表格,列出了公共假期的日期 dd/mm/yyyy。我有一个表格(链接到一个单独的表格),我在其中输入 course_start 日期和 course_end 日期。我想创建一个函数,它在一个字段的 lostfocus 上触发自身,该函数检查输入 course_start 和 course_end 的日期范围是否与 PubHol 中列出的日期一致。例如,如果客户的课程开始时间为 2012 年 1 月 1 日,课程结束时间为 2012 年 1 月 1 日,并且 PubHol 中有一个日期介于 2012 年 10 月 1 日之间,我想收到一个 MsgBox 说些什么。谢谢
问问题
1279 次
2 回答
0
听起来您只想BETWEEN
向 MySQL 发出查询:
SELECT HolidayDate FROM PubHol
WHERE HolidayDate BETWEEN ? AND ?
Course_Start
...并使用您感兴趣的和值填写查询的参数Course_End
。(我假设 VBA 可以处理参数化查询。)
于 2012-05-02T14:19:17.157 回答
0
假设您在数据库中使用日期数据类型而不是字符串数据类型,则在 VBA 中测试属于日期范围的假期将如下所示
Dim condition As String
Dim course_start As Date, course_end As Date
course_start = ...
course_end = ...
condition = "[Holiday] Between #" & Format$(course_start,"yyyy\/mm\/dd") & _
"# AND #" & Format$(course_end,"yyyy\/mm\/dd") & "#"
If DCount("*", "PubHol", condition) > 0 Then
MsgBox ...
End If
我在我的 Access 库中找到了这个函数
Public Function JetSqlDate(ByVal d As Variant) As String
If IsNull(d) Then
JetSqlDate = "NULL"
Else
JetSqlDate = Format$(d, "\#mm\/dd\/yyyy hh\:nn\:ss\#")
End If
End Function
使用它可以简化条件
condition = "[Holiday] Between " & JetSqlDate(course_start) & _
" AND " & JetSqlDate(course_end)
注意:如果 MySQL 表通过 ODBC 链接到 Access DB,您可以只使用 Access (Jet) SQL 语法。Access(或准确地说是 ODBC-Driver)会自动将其转换为 MySQL 语法。
于 2012-05-02T14:19:24.647 回答