初学者在access,如果这是一个问题,如果这是以前已经问过(我已经搜索了很长时间,所以也许我寻找错误的东西?)无论如何,在我的数据库中,我有一个用于提交记录的表单,还有一个检查双重预订的查询(它显示了与输入日期重叠的所有记录)。我已经在表单上创建了一个“submit record”按钮,我所要做的就是通过运行双重预订查询和检查是否没有记录来验证是否存在双重预订。
为此,我尝试使用Dcount函数,但是我似乎找不到如何运行查询,因为它有参数(我需要将表单的输入传递给查询)。我不确定这是否是检查双重预订的最有效的方法,但我只需要一种解决方案,目前起作用的是:P.这是我的当前代码,它显然不能工作,因为sql查询需要参数:
If DCount("*","Double Booked")=0 Then ...(数据库中的查询名为“Double Booked”)
对不起,如果我不清楚的话,谢谢。
编辑:这是双重预订的查询代码:
SELECT *
FROM Booking
WHERE (
([Your VanID] = [Booking].[VanID])
AND (
( ([Your Collection Date] >= [Booking].[Collection date]) AND ([Your Collection Date] <= [Booking].[Return date]))
OR ([Your Return Date] >= [Booking].[Collection date]) AND ([Your Return Date] <= [Booking].[Return date])
OR (([Your Collection Date] <= [Booking].[Collection date]) AND ([Your Return Date] >= [Booking].[Return date]))
)
);发布于 2016-02-27 16:26:09
如果您只想知道(如果有双重预订(而不是多少),那么DCount是不必要的。打开记录集就足够了。
使用表单字段作为参数的查询在直接打开时或作为RecordSource时运行良好,但在VBA中打开时不运行。
为了能够做到这一点,我在一个公共模块中具有以下功能:
Public Sub EVal_Params(QD As DAO.QueryDef)
On Error GoTo EVal_Params_Err
Dim i As Integer
Dim par As DAO.Parameter
For i = 0 To QD.Parameters.Count - 1
Set par = QD.Parameters(i)
' This is the key line: Eval "evaluates" the form field and gets the value
par.Value = Eval(par.Name)
Next i
EVal_Params_Exit:
On Error Resume Next
Exit Sub
EVal_Params_Err:
MsgBox Err.Description, vbExclamation, "Runtime-Error " & Err.Number & " in EVal_Params"
Resume EVal_Params_Exit
End Sub这样,您就可以在查询上打开记录集,并且它的.EOF属性将告诉您是否存在双重预订:
Dim DB As DAO.Database
Dim QD As DAO.QueryDef
Dim RS As DAO.Recordset
Set DB = CurrentDb
Set QD = DB.QueryDefs("Double Booked")
' Get form field values into query parameters
Call EVal_Params(QD)
Set RS = QD.OpenRecordset(dbOpenSnapshot)
If RS.EOF Then
' no doubles
Else
' there are double bookings
End If
RS.Close编辑
如果查询参数不是对窗体控件的引用,而是“正常”命名参数,则应该这样做:
Set QD = DB.QueryDefs("Double Booked")
QD.Parameters("Your VanID") = someValue
QD.Parameters("Your Collection Date") = someOtherValue
Set RS = QD.OpenRecordset(dbOpenSnapshot)https://stackoverflow.com/questions/35671921
复制相似问题