注册 登录
编程论坛 VB6论坛

& Combo1.Text & 前后两个& 可以去掉吗?

zhaomg 发布于 2014-02-23 12:05, 797 次点击
前面学到&字符时,书上说这是一个起连接作用的字符,再无别的描述。但看到实例代码里如题目里表示下拉文本框里显示的内容用的是“& Combo1.Text & ”,而非“Combo1.Text ”。原该行代码是查找数据库中第一条学号为下拉框里内容的记录,如下:
Data1.Recordset.FindFirst "学号= '" & Combo1.Text & "'"
我觉得前后者两个&好像不起什么作用,但去掉却提示出错,百度却找不到答案,难道太简单了?
还请老鸟不吝简单指点一下?谢谢!!

[ 本帖最后由 zhaomg 于 2014-2-24 11:01 编辑 ]
16 回复
#2
韶志2014-02-23 12:59
没作用???
比如说  SQL语言中的的查询语句  "select 。。。 FROM 。。。 where 。。。='" & Combo1.Text & "'"
少了 & 能行吗?
#3
zhaomg2014-02-23 13:06
回复 2楼 韶志
谢谢!您能稍微详细解释一点吗?我现在只知道去掉了出错,
但仅看书上之前说其只有连接字符的作用的描述,就是不懂这里前后为何加上2个&,不就是一个下拉框的显示内容吗?
#4
风吹过b2014-02-24 09:11
连接字符,就是把二个 字符串 连接成一个。

比如: "AB" & "CD"  ,得到的是 "ABCD" ,这是固定字符串的连接。
再如: "AB" & Text1.text  ,当 text1.text 的内容是 "CD" 是,得到的是 "ABCD" ,   当text1.text 的内容是:  "EF" 时,得到的是 "ABEF"
又如: msgbox "发现了" & i & "个数字"    在这行命令中,通过前面的计算,I 有一个值了,然后直接把 I 的值嵌到 提示内容中去,使用连接字符进行连接起来。
最后一个: 连接在 TEXT1.text 中显示内容
text1.text = text1.text & combo1.text
在这句中,把原来的内容再加上新的内容,再给 text1 ,从而达到增量显示新的内容的目的。
#5
owenlu19812014-02-24 13:44
Data1.Recordset.FindFirst "学号= '" & Combo1.Text & "'"
第一个 & => 连接 学号= ' 和 Combo1.Text
第一个 & => 连接 Combo1.Text 和 '
当 Combo1.Text 值为文本型时,值两边要加单引号,如 学号 = ‘001’
当 Combo1.Text 值为日期型时,值两边要加#,如 日期 = #2014/2/24#
当 Combo1.Text 值为数字型时,值两边不需要加符号,如 数值 = 10

[ 本帖最后由 owenlu1981 于 2014-2-24 13:46 编辑 ]
#6
zhaomg2014-02-24 13:53
回复 2楼 韶志
这里教材还没讲到SQL呢
#7
zhaomg2014-02-24 13:56
回复 5楼 owenlu1981
你的解释的意思我明白,但是更觉得这里把前后两个&去掉更合适啊
#8
owenlu19812014-02-24 14:11
回复 7楼 zhaomg
举例:
A = "v"
B = "B"
AB = "VC"
C = A & B => VB 语言认知是将A值和B值作连接,结果为 "VB"
C = AB => 没有 &, VB 认知 C = AB (AB为参数),结果为 "VC"
Understand?
#9
vbvcr512014-02-24 19:25
请区别sql语言和vb语言。不是都相同的。
#10
owenlu19812014-02-25 08:27
讲了=没讲,刷贴啊......
#11
holyfire2014-02-25 10:12
不可以去掉
原因:
在sql中,"&combo1.text &"是转换为超文本标志,就是说“"& &"”这个标志是告诉计算机先翻译“& &”里面的内容,如果去掉,计算机则不会把combo1.text执行超文本翻译而是把combo1.text按纯文本进行操作。
在vb6.0语言中,则不需要进行超文本翻译,所以不能写成"&combo1.text &",只能写成combo1.text形式。你虽然还未学习sql,但是在数据库调用时,一般sql语言和VB6.0语言常混合使用。
希望对你有帮助!


[ 本帖最后由 holyfire 于 2014-2-25 10:20 编辑 ]
#12
zhaomg2014-02-25 11:05
回复 11楼 holyfire
在vb6.0语言中,则不需要进行超文本翻译,所以不能写成"&combo1.text &",只能写成combo1.text形式。
------------------------------------------------------
我这个就是VB6.0教材的实例,按照这个说法岂不更应该去掉前后2个&变成combo1.text形式么?
#13
owenlu19812014-02-25 11:15
回复 12楼 zhaomg
这是在 VB 环境下引用了SQL语句,VB 中使用SQL查询语句必须加 ""
两个字符串连接必须用 &
Data1.Recordset.FindFirst "学号= '" & Combo1.Text & "'"
双引号中间的  学号= 'Combo1.Text',是3个字符串作连接形成一个字符串即SQL语句
如 Combo1.Text = "001",则结果为 "学号= '" & Combo1.Text & "'" => "学号= '" & "001" & "'" => "学号= '001'"
#14
zhaomg2014-02-25 14:24
回复 13楼 owenlu1981
说到底还是用了&的连接字符串功能?那您看我下面这2点这样理解行不:
1、用Data1.Recordset.FindFirst "学号=  Combo1.Text"   这样的形式肯定不行,是因为“学号=”后跟的必须是一对单引号限定的字符串;
2、既然“学号=”后跟的必须是一对单引号限定的字符串,这对单引号里的内容就不能为combo1.txet了,因为这样表示的是文本
“combo1.txet”,前后加上&就表示下拉框里显示的文本内容了
请您看我这2点理解的完全正确吗?
#15
owenlu19812014-02-27 16:25
恩 可以这样理解.......
#16
zhaomg2014-02-27 20:21
回复 15楼 owenlu1981
谢谢!
#17
pidaneng2018-08-11 12:48
不明白
1