Private Function AllowPurge(FileID As String) As Boolean
Dim result As Boolean
Dim i As Integer
i = DLookup("COUNT(*)", "OrderMaster", "OrderStatus='S' AND FileID=" & FileID, "AND OrderType='E'")
If i > 0 Then
result = False
Else
result = True
End If
AllowPurge = result
End Function
OrderStatus标记为已发货或已开启' S'或者' O'。
我需要:
答案 0 :(得分:0)
DLookup
用于查找单个值。
DCount
用于计算。
试试这个:
Function AllowPurge(FileID As String) As Boolean
AllowPurge = (0 = DCount("FileID", "OrderMaster", "OrderStatus='S' _
AND FileID='" & FileID "' AND OrderType='E'"))
Exit Function
(假设该表名为OrderMaster
)
你非常接近,除了在字符串周围缺少单引号,并且缺少空格,并且有一个额外的逗号。
逻辑会以同样的方式发挥作用,这只是一种替代(更短)的形式。
<子> <子> Thanks Lee Mac! 子> 子>
答案 1 :(得分:0)
根据您陈述的逻辑:
我需要:
- 允许清除 - 如果除E订单之外的每个订单仍处于打开状态。
- 不允许清除 - 如果任何订单(E订单除外)标记为已发货。
我建议如下:
Function AllowPurge(FileID As String) As Boolean
AllowPurge = IsNull(DLookup("FileID", "OrderMaster", "OrderStatus='S' AND FileID='" & FileID & "' AND OrderType<>'E'"))
End Function
此处,只有每个非电子订单(True
)被标记为已发货(OrderType<>'E'
)时,该功能才会返回OrderStatus='S'
。
您当前的代码似乎正在测试已发货的“电子订单”,而不是检查每个非电子订单是否已打开。
答案 2 :(得分:0)
感谢您的回复
我尝试了这个并且似乎正在运作:
i = DLookup("COUNT(*)", "OrderMaster", "OrderType'E' AND OrderStatus='S' AND FileID=" & FileID)