以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=501)

--  作者:cpayinyuan
--  发布时间:2008/9/15 10:41:00
--  单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?

帮助中前面说字符串常量要用双引号括起来,但在后面的表的查询语句中(例如find语句和select语句),使用的字符串常量又用单引号,我不太明白,什么时候用单引号,什么时候用双引号,或者在find语句和select语句中,在使用单引号表示的字符串的位置如果要使用一个变量名,可以吗?


--  作者:lxl
--  发布时间:2008/9/15 11:38:00
--  
以下是引用cpayinyuan在2008-9-15 10:41:00的发言:

帮助中前面说字符串常量要用双引号括起来,但在后面的表的查询语句中(例如find语句和select语句),使用的字符串常量又用单引号,我不太明白,什么时候用单引号,什么时候用双引号,或者在find语句和select语句中,在使用单引号表示的字符串的位置如果要使用一个变量名,可以吗?

1.
表达式用单引号表示字符串  比如表达式列,还有日常工作选项卡中排序与筛选功能组中的编辑按钮,还有SQL语句中都是单引号表示字符串
表达式效率非常高,和VB代码无关.
比如在筛选功能组中的编辑按钮里面输入 [产品] = \'PD01\'  就会筛选出PD01这个产品 

2.
VB代码用双引号表示字符串.
Find、 Select 、GetUniqueValues 这些方法都是VB代码, 他们的参数是字符串,用双引号表示。
但是看帮助有说明,其中有一个参数是一个表达式。
比如 CurrentTable.Find("[产品] = \'PD01\' ")  找出当前表产品为PD01的行
字符串参数"[产品] = \'PD01\' "   双引号里面是一个表达式  [产品] = \'PD01\'

3.用变量表示表达式中的字符串
如果想找出其他产品,比如PD02 PD03怎么办?
通过文本框或者组合框把 要筛选的产品传递给变量

Dim p As String = "PD02"         \'这里PD02可以来自其他控件 
Dim Filter As String = "[产品] = \' "  &  p &  " \' "        
\' 通过左拼右凑 凑出表达式。右边的字符串等效于 "[产品] = \' "   &   "PD02"   &   " \' "        等效于 "[产品] = \'PD02\'"
Dim dr As DataRow = CurrentTable.Find(Filter)

[此贴子已经被作者于2008-9-15 11:45:20编辑过]

--  作者:kylin
--  发布时间:2008/9/15 11:42:00
--  
以下是引用lxl在2008-9-15 11:38:00的发言:

1.
表达式用单引号表示字符串  比如表达式列,还有日常工作选项卡中排序与筛选功能组中的编辑按钮,还有SQL语句中都是单引号表示字符串
表达式效率非常高,和VB代码无关.
比如在筛选功能组中的编辑按钮里面输入 [产品] = \'PD01\'  就会筛选出PD01这个产品 

2.
VB代码用双引号表示字符串.
Find、 Select 、GetUniqueValues 这些方法都是VB代码, 他们的参数是字符串,用双引号表示。但是这个参数,又是一个表达式
比如 CurrentTable.Find("[产品] = \'PD01\' ")  找出当前表产品为PD01的行
字符串参数"[产品] = \'PD01\' "   双引号里面是一个表达式  [产品] = \'PD01\'

3.用变量表示表达式中的字符串
如果想找出其他产品,比如PD02 PD03怎么办?
通过文本框或者组合框把 要筛选的产品传递给变量

Dim p As String = "PD02"         \'这里PD02可以来自其他控件 
Dim Filter As String = "[产品] = \' "  &  p &  " \' "        ‘ 通过左拼右凑 凑出表达式
Dim dr As DataRow = CurrentTable.Find(Filter)

很清楚,学习了,谢谢!


--  作者:cpayinyuan
--  发布时间:2008/9/15 12:25:00
--  
以下是引用lxl在2008-9-15 11:38:00的发言:

1.
表达式用单引号表示字符串  比如表达式列,还有日常工作选项卡中排序与筛选功能组中的编辑按钮,还有SQL语句中都是单引号表示字符串
表达式效率非常高,和VB代码无关.
比如在筛选功能组中的编辑按钮里面输入 [产品] = \'PD01\'  就会筛选出PD01这个产品 

2.
VB代码用双引号表示字符串.
Find、 Select 、GetUniqueValues 这些方法都是VB代码, 他们的参数是字符串,用双引号表示。
但是看帮助有说明,其中有一个参数是一个表达式。
比如 CurrentTable.Find("[产品] = \'PD01\' ")  找出当前表产品为PD01的行
字符串参数"[产品] = \'PD01\' "   双引号里面是一个表达式  [产品] = \'PD01\'

3.用变量表示表达式中的字符串
如果想找出其他产品,比如PD02 PD03怎么办?
通过文本框或者组合框把 要筛选的产品传递给变量

Dim p As String = "PD02"         \'这里PD02可以来自其他控件 
Dim Filter As String = "[产品] = \' "  &  p &  " \' "        
\' 通过左拼右凑 凑出表达式。右边的字符串等效于 "[产品] = \' "   &   "PD02"   &   " \' "        等效于 "[产品] = \'PD02\'"
Dim dr As DataRow = CurrentTable.Find(Filter)

[此贴子已经被作者于2008-9-15 11:45:20编辑过]

回答非常详细,谢谢!再请教一下,在第3项(用变量表示表达式中的字符串),如果变量需要与其他字符串在一起,怎么写,例如:
"[产品] like \'%PD%\' ",怎么把PD02用变量名代替?请答复,谢了!


--  作者:lxl
--  发布时间:2008/9/15 12:40:00
--  
没明白你的意思,你给的表达式里面没有PD02啊.

如果要找出包含PD的产品,可以这样
Dim Filter As String = "[产品]  like \'%PD%\'" 
然后Find(Filter)就能实现.
[此贴子已经被作者于2008-9-15 12:40:35编辑过]

--  作者:cpayinyuan
--  发布时间:2008/9/15 12:45:00
--  
以下是引用lxl在2008-9-15 12:40:00的发言:
没明白你的意思,你给的表达式里面没有PD02啊.

如果要找出包含PD的产品,可以这样
Dim Filter As String = "[产品]  like \'%PD%\'" 
然后Find(Filter)就能实现.
[此贴子已经被作者于2008-9-15 12:40:35编辑过]

不好意思,是我没说明白,我的意思,例如:Dim Filter As String = "[产品]  like \'%PD%\'" ,不是查询包含PD的产品,我想查询包含某个字符串的产品,也就是两个%%之间的部分用一个变量名代替,请指教,谢了!


--  作者:lxl
--  发布时间:2008/9/15 13:05:00
--  
还是左拼右凑
Dim s As String = 文本框值
Dim Filter As String = "[产品]  like \'% "     &   s   &      " %\' " 

经常用到的时间这样的道理
Dim Filter As String  = " [日期] = #"   & 日期变量 &  "#"         \'既表达式为:  "[日期] = #2008-01-01#"

Dim Filter AS String = " [日期] Between #"  & 日期变量1 &  "# And #"  & 日期变量2  &  "#" 
                                   


--  作者:cpayinyuan
--  发布时间:2008/9/15 13:07:00
--  
以下是引用lxl在2008-9-15 13:05:00的发言:
还是左拼右凑
Dim s As String = 文本框值
Dim Filter As String = "[产品]  like \'% "     &   s   &      " %\' " 

经常用到的时间这样的道理
Dim Filter As String  = " [日期] = #"   & 日期变量 &  "#"         \'既表达式为:  "[日期] = #2008-01-01#"

Dim Filter AS String = " [日期] Between #"  & 日期变量1 &  "# And #"  & 日期变量2  &  "#" 
                                   

终于看明白了,是引号太多了,刚才没有看出来谁给谁是一对儿,是把几个部分串成了一个完整的表达多,多谢!以后还要多向您请教!

[此贴子已经被作者于2008-9-15 15:41:47编辑过]

--  作者:程兴刚
--  发布时间:2008/9/15 13:41:00
--  
学习!
--  作者:贺老六
--  发布时间:2008/9/15 14:40:00
--  
lxl兄解释得非常好,收藏。
准备用在帮助文件中。