Foxtable(狐表)用户栏目专家坐堂 → 单引号与双引号!查询语句中的字符串常量何时用单引号,何时用双引号?


  共有31180人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
lxl
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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编辑过]

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/15 12:40:00 [显示全部帖子]

没明白你的意思,你给的表达式里面没有PD02啊.

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

 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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  &  "#" 
                                   


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/15 14:54:00 [显示全部帖子]

以下是引用cpayinyuan在2008-9-15 13:07:00的发言:

终于看明白了,是引号太多了,刚才没有看出来谁给谁是一对儿,是把几个部分串成了一个完整的表达多,多谢!以后还要多向您请教!
    另外,关于执行太参数的SQl server存储过程的事,麻烦您认真测试一下,看有无问题.一般情况下,如果执行的SQL命令是查询,一般用QueryBuilder即可,但如果要执行一大串的往外部数据库中写数据的命令,恐怕就得用 SQLcommand执行SQL server的存储过程了,而且,一般情况下还要向SQL server中传递参数,并返回参数,我上午试了一下,没有成功,请您认真看一下.谢了!

[此贴子已经被作者于2008-9-15 13:10:29编辑过]

关于SQL语言 我只接触过ACCESS.
SQl server 的知识以后还得向你请教呢.


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/9/16 7:02:00 [显示全部帖子]

以下是引用chips在2008-9-15 23:19:00的发言:

a   =   ""b""       表示a为"b"  
a   =   """"  &  "b"  &  """"     表示a为"b"

 

这里有点小问题
引号内的引号要加倍,易表也有这样的语法.
在命令窗口分别测试:
Return ""        
Return """             '报错
Return """"
Return ""b""          '报错
Return """b"""


 回到顶部