vb6.0作为一款已经过时的编程语言,虽然使用的人不多,但是还是要总结下一些常见错误:
以vb6.0中文企业版与access数据库的交互为例子来讲解其中可能会碰到的坑↓↓↓
目录
1.连接access数据库
以DataGrid组件显示为例(添加组件方法:左边工具栏右键添加组件,找到并添加)
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim ConnStr As String
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Users\st21\Desktop\plane_v3.mdb"
Cnn.Open ConnStr
Cnn.CursorLocation = adUseClient
sql = "select * from plane_v3 order by [" & Combobox1.Text & "] desc"
Rs.Open sql, Cnn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = Rs
2.Dim Rs As New ADODB.Recordset用户定义类型未定义
直接在“工程|引用”中添加“Microsoft ActiveX Data Object [版本号,比如2.8等] Library”就可以了
3.combox组件怎么添加选项以及获取当前选项
(1)添加选项:
combox.ADDItem("第二个选项")
(2)获取当前选项
combox.text
4.insert into语法错误问题
解决办法:
查看字段名,查看字段类型
在vb中与access交互,字符类型需要加上‘(单引号)
eg:(上未修改,下修改后)
If t1.Text = "" Or t2.Text = "" Or t3.Text = "" Then
a = MsgBox("不能为空!", 0, "提示")
Else
If t2.Text = t3.Text Then
sql = "insert into users(user_name,pwd) values(" + t1.Text + ",'" + t2.Text + "')"
Set Rs = Cnn.Execute(sql)
a = MsgBox("注册成功!", 0, "提示")
Else
a = MsgBox("两次输入的密码不同,请重新输入!", 0, "提示")
End If
End If
If t1.Text = "" Or t2.Text = "" Or t3.Text = "" Then
a = MsgBox("不能为空!", 0, "提示")
Else
If t2.Text = t3.Text Then
sql = "insert into users(user_name,user_pwd) values('" + t1.Text + "','" + t2.Text + "')"
Set Rs = Cnn.Execute(sql)
a = MsgBox("注册成功!", 0, "提示")
Else
a = MsgBox("两次输入的密码不同,请重新输入!", 0, "提示")
End If
End If
5.未定义的变量错误
eg:
a = MsgBox("注册成功!", 0, "提示")
以上会出现错误,通常解决办法时在上面定义下使用的变量,如下
dim a as string
a = MsgBox("注册成功!", 0, "提示")
6.两个窗口之间的切换和传递数据
(1)切换
eg:
窗口一:form1
窗口二:form2
窗口一切换窗口二
'from1
me.hide
form2.show
(2)传递数据
①在模块文件(Module)中声明一个全局公共变量,然后在其他窗体中就可以通过这个变量来存取数据了,如:
在模块文件中声明变量a
Public a as string
在Form1中给a赋值
a="您好!"
在Form2中读取a
msgbox a
②在要传递数据的那个窗口声明一个模块级的全局变量,然后在其他窗体中就可以通过这个变量(要加上窗体名的引用)来存取数据了,如:
在Form1中声明变量a及赋值
Public a As String
Private Sub Form_Load()
a = "你好!"
End Sub
在Form2中读取a
msgbox Form1.a
③利用各个窗体中的控件属性来传递数据,如:
让Form2的Label1的显示内容和Form1的Label1一样
Form2.Label1.Caption = Form1.Label1.Caption
7.access数据库使用模糊搜索
与mysql数据库不同,access数据库使用*来作为通配符
eg:
sql = "select * from plane_v3 where [系列] like " + "'*" & Text2.Text & "*'"
8.执行sql语句错误
一般提示,未找到数据或是报错
解决方法:
查看access数据表中的字段名(有些为保留字段,例如user),1.修改字段名,2.加上[]
eg:(上为修改前,下为修改后)
sql = "select * from plane_v3 where user like " + "'*" & Text2.Text & "*'"
sql = "select * from plane_v3 where [user] like " + "'*" & Text2.Text & "*'"
9.vb6与access交互时不能使用模糊查询
access支持的模糊语句:
select * from xxx where id like *12* ;
sql-server支持的模糊语句:
select * from xxx where id like %12% ;
select * from xxx where name like "%tom%" ;
问题描述,在access数据表中可以运行sql命令,但是在vb中无法显示结果:
解决办法:将access数据表的搜索模式改成 支持ANSI-92模式
以access为例:
单击文件–选项–对象设计器–设置成支持ANSI-92
在选择文件—压缩并修复即可在vb6中使用模糊查询
10.在access中使用sql命令执行
以access2010为例:
选中一个数据表单击上方的查询设计–选择表–单击右下角的sql—点击运行即可
暂时只能想到这些问题,有问题的同志可以在评论下留言,我会帮忙解答。