注册 登录
编程论坛 VB6论坛

请高手帮帮忙指点啊!我是新手:“实时错误‘13‘ 类型不匹配”

coucongzi 发布于 2012-11-01 20:30, 5059 次点击
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim str As String
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
'Set str = "Microsoft.Jet.OLEDB.4.0;Data Source=j:\vb+access\xuexi.mdb"
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.ConnectionString = "Data Source=" & App.Path & "\data.mdb" & " ;Jet OLEDB:Database password= coucongzi"
conn.Open
rs.Open "select * from yhinfo where userid =" + Int(Text5.Text) + " and username=" & Chr(Text1.Text) & "", conn, adOpenDynamic, adLockPessimistic

If rs.EOF = False Then
MsgBox "用户编码或用户名已经存在,请检查后重新输入!", 16, "错误!"
rs.Close
Else
end if
...
...
end sub
上面的代码执行之后
总是提示“实时错误‘13‘ 类型不匹配”
调试的时候,在
rs.Open "select * from yhinfo where userid =" + Int(Text5.Text) + " and username=" & Chr(Text1.Text) & "", conn, adOpenDynamic, adLockPessimistic
这一行代码中变黄色,个人感觉很有可能问题出在了username=" & Chr(Text1.Text) & "",这段
我的username字段在ACCESS的字段类型是选择文本(不知道是不是这里错了),记录都是中文名字,如“张三”
请哪位高手帮忙指点一下要怎么改啊,小弟是新手,跪谢了!
8 回复
#2
coucongzi2012-11-02 08:00
哪位大哥帮帮忙啊
#3
风吹过b2012-11-02 08:09
你把 + 号换成 & 试试。

估计是你写的 + 号,的VB 给搞混乱了。
#4
coucongzi2012-11-02 08:22
回复 2楼 coucongzi
把+换成&了,还是有同样的错误提示,我也试过吧&全部换成+,也是一样的报错啊
我估计是因为我的username在access中的数据类型是“文本”,跟text1.text的数据类型不匹配
但是不懂得要怎么转换啊
#5
风吹过b2012-11-02 10:41
你用了 &  后,生成的内容就是字符型的。

刚仔细看了一下,你生成的 SQL 语句有问题。
你可以 输出这一句看看。

debug.print  "select * from yhinfo where userid =" & Int(Text5.Text) & " and username=" & Chr(Text1.Text) & ""

就会发现,在SQL 语句中,字符串没有再用 SQL 规定的 单引号 引起来。 ,自己加吧。
#6
Artless2012-11-02 12:26
以下是引用coucongzi在2012-11-1 20:30:56的发言:

Private Sub Command1_Click()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim str As String
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
'Set str = "Microsoft.Jet.OLEDB.4.0;Data Source=j:\vb+access\xuexi.mdb"
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.ConnectionString = "Data Source=" & App.Path & "\data.mdb" & " ;Jet OLEDB:Database password= coucongzi"
conn.Open
rs.Open "select * from yhinfo where userid =" + Int(Text5.Text) + " and username=" & Chr(Text1.Text) & "", conn, adOpenDynamic, adLockPessimistic

If rs.EOF = False Then
MsgBox "用户编码或用户名已经存在,请检查后重新输入!", 16, "错误!"
rs.Close
Else
end if
...
...
end sub
上面的代码执行之后
总是提示“实时错误‘13‘ 类型不匹配”
调试的时候,在
rs.Open "select * from yhinfo where userid =" + Int(Text5.Text) + " and username=" & Chr(Text1.Text) & "", conn, adOpenDynamic, adLockPessimistic
这一行代码中变黄色,个人感觉很有可能问题出在了username=" & Chr(Text1.Text) & "",这段
我的username字段在ACCESS的字段类型是选择文本(不知道是不是这里错了),记录都是中文名字,如“张三”
请哪位高手帮忙指点一下要怎么改啊,小弟是新手,跪谢了!

rs.Open "select * from yhinfo where userid =" + Int(Text5.Text) + " and username='" & Chr(Text1.Text) & "'", conn, adOpenDynamic, adLockPessimistic
#7
coucongzi2012-11-02 13:23
回复 6楼 Artless
好的,我先试试看啊
#8
coucongzi2012-11-02 14:02
回复 5楼 风吹过b
rs.Open "select * from yhinfo where userid =" & Val(Text5.Text) & "", conn, adOpenDynamic, adLockPessimistic
If rs.BOF <> True Or rs.EOF <> True Then
MsgBox "用户编码已经存在,请检查后重新输入!", 16, "错误!"
rs.Close
Else
rs.Close
rs.Open "select * from yhinfo where UserName ='" & Text1.Text & "'", conn, adOpenDynamic, adLockPessimistic
If rs.BOF <> True Or rs.EOF <> True Then
MsgBox "用户名已经存在,请检查后重新输入!", 16, "错误!"
rs.Close
Else
修改成这样的,终于搞定了,谢谢你啊,也谢谢4楼的,感谢指点!
#9
coucongzi2012-11-02 14:03
是谢谢5楼的,看错啊
哈哈
1