Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共15 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?

1楼
cpayinyuan 发表于:2008/9/15 10:41:00

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

2楼
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编辑过]
3楼
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)

很清楚,学习了,谢谢!

4楼
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用变量名代替?请答复,谢了!

5楼
lxl 发表于:2008/9/15 12:40:00
没明白你的意思,你给的表达式里面没有PD02啊.

如果要找出包含PD的产品,可以这样
Dim Filter As String = "[产品]  like '%PD%'" 
然后Find(Filter)就能实现.
[此贴子已经被作者于2008-9-15 12:40:35编辑过]
6楼
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的产品,我想查询包含某个字符串的产品,也就是两个%%之间的部分用一个变量名代替,请指教,谢了!

7楼
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  &  "#" 
                                   

8楼
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编辑过]
9楼
程兴刚 发表于:2008/9/15 13:41:00
学习!
10楼
贺老六 发表于:2008/9/15 14:40:00
lxl兄解释得非常好,收藏。
准备用在帮助文件中。
共15 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .06250 s, 2 queries.