Office中国论坛/Access中国论坛

标题: 关于查询语句的书写问题 [打印本页]

作者: asia2158    时间: 2003-8-3 07:08
标题: 关于查询语句的书写问题
各位老师,请帮忙看一下以下的代码:

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]=  "  &  变量名  
&(连字符)的两边一定要用空格吗?
谢谢!

作者: catz_912    时间: 2003-8-3 22:45
1。单引号同双引号作用一样,只是因为嵌套的关系。‘ ’ 只能在“ ”中使用,否则会被当成注释。‘ ’中不能再次嵌套“ ”,否则嵌套关系错误, 应该用 & 连接多组“ ”。
2。& _ 是另起一行,避免行太长。
3。看看帮助,多试多想,弄清基本概念再提问。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3