以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论] 关于双引号和单引号,不太明白!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3402)

--  作者:wcs
--  发布时间:2009/7/2 23:10:00
--  [讨论] 关于双引号和单引号,不太明白!
我看了帮助中的这样两段代码:

第一个:
Total = DataTables("订单").Compute("Sum(数量)", "[客户] = \'" & Customer & "\'")
上述代码中,Filter参数分成了三部分,各部分用运算符&连接起来:
"[客户] = \'" & Customer & "\'"



第二个:
If e.DataTableName = "订单" AndAlso e.User.Name = "录入员" Then
    Dim StartDate As Date = Date.Today().AddDays(-10)
    e.SelectString = "Select * From [订单] Where [日期] > #" & StartDate & "#"
End If


第一个中,筛选条件中的参数分三段,这能理解。
第二个中,selectstring 中为什么没有出现单引号,我就不能理解了!

他们有什么不同吗?为什么上面的要有‘’,下面的不能有‘’?? 
Customer和StartDate都是自己定义的变量,为什么使用起来就不同了啊?

[此贴子已经被作者于2009-7-2 23:10:38编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/7/2 23:23:00
--  
SelectString中间没有字符,要单引号干什么?

表达式中,字符用单引号,日期用符号#
--  作者:wcs
--  发布时间:2009/7/2 23:33:00
--  
" & Customer & "  是字符

" & StartDate & "  不是字符

为什么?他们有什么不同吗?如何理解?

Customer和StartDate都是自己定义的变量,为什么上面的是字符,下面的不是字符了?
--  作者:shaof
--  发布时间:2009/7/2 23:52:00
--  
很显然,第一段代码是筛选客户,客户是字符。
第二段是加载符合条件的日期,日期当然不能用单引号,只能用#号。
--  作者:wcs
--  发布时间:2009/7/3 8:24:00
--  

这也是帮助中的一段:

If e.name = "成绩" Then
    e.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & e.ProjectPath &
"成绩数据.mdb;Persist Security Info=False"

End
if



" & e.ProjectPath & " 这不是日期,它只是一串字符,表示地址。
为什么它没有用‘’呢?

[此贴子已经被作者于2009-7-3 8:25:51编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/7/3 8:29:00
--  

这又不是表达式,这是一个普通的字符串。

表达式本身是一个字符,用双引号,同时表达式是一个计算公式,会包括有数值、日期、字符等值,其中字符用单引号,日期用#,数值直接使用。

[此贴子已经被作者于2009-7-3 8:30:26编辑过]

--  作者:易狐
--  发布时间:2009/7/3 8:43:00
--  

这样对比起来看应该更明了:

Total = DataTables("订单").Compute("Sum(数量)", "[客户] = \'" & Customer & "\'")
将条件表达式用实例数据表示:
Total = DataTables("订单").Compute("Sum(数量)", [客户] = \'张三\')


--  作者:shxiaoya
--  发布时间:2009/7/3 8:50:00
--  
Total = DataTables("订单").Compute("Sum(数量)", "[客户] = \'" & Customer & "\'")

这样标注一下(红色部分)你应该能看明白吧
[此贴子已经被作者于2009-7-3 8:54:06编辑过]

--  作者:wcs
--  发布时间:2009/7/3 8:54:00
--  
明白了,表达式里会出现‘’

因为表达式是一个计算公式,里面有数值、日期、字符等值,字符要用‘’,日期要用##,数字直接使用

因为‘’里面的东西还是一个字符,所以里面还要用“”  


而这两段  e.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & e.ProjectPath & "成绩数据.mdb;Persist Security Info=False"

e.SelectString = "Select * From [订单] Where [日期] > #" & StartDate & "#"

它们不是表达式,只是一个字符串

表达式在Filter用得较多。

--  作者:shxiaoya
--  发布时间:2009/7/3 8:55:00
--  
在sql里,日期也要用\'而不是#