vb6与access数据库交互常见问题——未完待续

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—点击运行即可
在这里插入图片描述


暂时只能想到这些问题,有问题的同志可以在评论下留言,我会帮忙解答。

未完待续

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我重来不说话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值