请问这句VB SQL代码哪出错了

来源:百度知道 编辑:UC知道 时间:2024/07/04 13:34:10
dim txt as Integer
txt=text1.text
Me.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=txl.dat;Persist Security Info=False"
Me.Adodc1.RecordSource = "select * from 通讯录 where 编号 = '" & txt & "'" '以编号进行查找
Me.Adodc1.Refresh '刷新
运行时返回说类型不匹配(编号字段为自动编号)如换成:
Me.Adodc1.RecordSource = "select * from 通讯录 where 编号 = 2" 就可以运行,请问哪里出问题了

把dim txt as integer 改为 dim txt as string
再把Me.Adodc1.RecordSource = "select * from 通讯录 where 编号 = '" & txt & "'"
改为Me.Adodc1.RecordSource = "select * from 通讯录 where 编号 = " & txt

比较where 编号 = '" & txt & "'" 和where 编号 = 2两个代码

可以发现数据库中编码的数据类型是数字型,可能是整数型。而通过text赋值方法查找,在sql语句中txt类型是字符型,所以提示类型不匹配。把字符型转换成整型可以了,去掉字符单引号,代码如下:

where 编号 = " & cint(txt) '以编号进行查找

数字就直接=
字符就单引号括起来
这是sql的基本语法

把 &txt& 改成 & Val(txt) &
因为你在数据库里把编号的值设为数值..
而TEXT文本框产生的数据为文本型,,,所以用VAL函数改成数据类就行了

也可以这样
txt=val(text1.text) 下面不变

个人认为是因为你定义txt是数据型,却赋给一个字符串
所以 你把"& txt &"换成 2 就行了啊

txt=val(text1.text)就可以了