|
各位老师,请帮忙看一下以下的代码:
Private Sub BID_BeforeUpdate(Cancel As Integer)
1001 Dim X
1002 If Me.NewRecord = True Then '若为新记录
1003 If IsNull(Me![BID]) = False Then '判断是否为空白
1004 X = DLookup("BID", "Books", "BID Like '" & _
Me![BID] & "'")
1005 If IsNull(X) = False Then
1006 MsgBox "编号重复"
1007 Cancel = True
1008 End If
1009 Else
1010 MsgBox "未输入书籍编号"
1011 Cancel = True
1012 End If
1013 End If
End Sub
这段代码的用意是在输入新记录时,立即检查主索引是否重复.
请问:
(1)1004句中使用单引号是什么作用?为什么要在双引号中使用单引号?不用行吗?
(2)1005句中的连字符是什么作用?不用行吗?而且连字符之后必接空格,为什么?
另一段代码:
SELECT AllBooks.BID, AllBooks.BNAME, Customers.CusName, Orders.OrderDate, OrderDetail.Price, OrderDetail.Quantity, [QUANTITY]*[PRICE] AS 小计
FROM Customers INNER JOIN ((AllBooks INNER JOIN OrderDetail ON AllBooks.BID = OrderDetail.BID) INNER JOIN Orders ON OrderDetail.OrderID = Orders.OrderID) ON Customers.CusID = Orders.CusID
WHERE (((AllBooks.BID) Like IIf(IsNull([forms]![Book_All]![sbid]),"*",[forms]![Book_All]![sbid])));
要将它改为VBA的查询准则,就必须将其该为字符串,以下是条件WHERE的一种写法:
WHERE BID LIKE '" & ME![SBID] & "' AND SDATE <= #" & ME![INDATE] & "#"
WHERE (BID LIKE '" & ME![SBID] & "' AND SDATE <= #" & ME![INDATE] & "#))OR(BID IS NOT NULL)
请问:
(1)为什么一定要用LIKE呢?用"="行不行?如果可以的话,怎么写?
(2)语句中的单引号和双引号的用途到底是什么?可否用双引号代替单引号呢?
(3)能详细说明一下VBA中的连字符的用法吗?
(4)可否理解为:字符串要用单引号,变量名和字段名要用双引号.
"where [bid]= " & 变量名
&(连字符)的两边一定要用空格吗?
谢谢!
|
|