【发布时间】:2021-04-05 20:02:38
【问题描述】:
我有一个名为“Reservations”的 Access 表和一个名为“Reservations Form”的 Access 表单。
预订桌
| Employee_Name | Service_Name | Service Hours | Start_DateTime | End_DateTime |
|---|---|---|---|---|
| John | Head Massage | 2 hours | 31-Dec-20 3:00:00 PM | 31-Dec-20 5:00:00 PM |
| Bob | Foot Massage | 1 hour | 31-Dec-20 3:00:00 PM | 31-Dec-20 4:00:00 PM |
表单结构
Employee_Name : (Input Field)
Service_Name : (Input Field)
Service_Hours : (Input Field)
Start_DateTime : (Input Date Time Field)
End_DateTime : (Input Date Time Field)
表格中的样本数据
Employee_Name : John
Service_Name : Head Massage
Service_Hours : 2 Hours
Start_DateTime : 31-Dec-20 4:00:00 PM
End_DateTime : 31-Dec-20 5:00:00 PM
我们不能接受同一员工在同一天同一时间的两次预订。
从 20 年 12 月 31 日下午 3:00:00 到 12 月 20 日 31 日下午 5:00:00 为约翰预订。
在此期间不接受其他预订。
如果通过预订表格提交了新的预订,我们需要检查日期和时间以及员工姓名。
约翰已在 20 年 12 月 31 日下午 3:00:00 至 12 月 20 日 5:00:00 下午预订。
他无法进行新预订(从 31-Dec-20 下午 4:00:00 到 31-Dec-20 5:00:00 PM)。
VBA 代码
Private Sub Command11_Click()
Dim strWhere As String
Dim dtRequeestStartDate As Date
Dim dtRequestEndDate As Date
dtRequestStartDate = Me![Text1].Value
dtRequestEndDate = Me![Text2].Value
If (DCount("Employee_Name", "Reservations", "Employee_Name=""" & [Employee_Name].Value & """ AND #" & Format(dtRequestStartDate, "dd/mm/yyyy hh:mm:ss AM/PM") & "# <= EndDate" & " and #" & Format(dtRequestEndDate, "dd/mm/yyyy hh:mm:ss AM/PM") & "# >= StartDate") <> 0) Then
MsgBox "Can't book a reservation."
End If
我收到一个错误
作为查询参数输入的表达式产生了这个错误:'EndDate'
【问题讨论】:
-
完整的错误信息是什么?它出现在哪一行?您是否检查过所有数据类型都符合预期?
-
我想用员工姓名检查日期和时间。如果我添加此代码(strWhere = strWhere & " And dtEmployee_Name = 'John'"),那么它将给出此行的错误(If (DCount("*", "Reservations", strWhere) 0) Then) .
-
是的,先生。那是错误
-
我编辑了问题中的代码。请检查并帮助我。
-
您似乎没有
EndDate字段。 (StartDate都不是,但解析器在第一个错误处停止。)我建议首先组装一个语法上可行的查询,例如Dim s As String : s = "Employee_Name", "Reservations", ...,并在此处设置断点以检查s是否完美。您甚至可以在即时窗口中发出该命令以查看它是否有效。