ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 215|回复: 6

[求助] VB6向Access录入数据时,提示对象关闭,怎么回事吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-13 10:23 | 显示全部楼层 |阅读模式


麻烦老师们帮忙看看,我设计了一个VB6的界面,通过它向access数据库录入信息。但现在运行到AddNew时,系统提醒说对象关闭时,不允许操作。但我的VOC.accdb是已经成功打开的,因为我看文件夹中已经多了一个VOC.1accdb。找了半天都没找到原因,请老师指点。
Private Sub Command4_Click()
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Set conn = New ADODB.Connection
With conn
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & App.Path & "\VOC.accdb;"
    .Open
End With
Set rst = New ADODB.Recordset
With rst
    .ActiveConnection = conn
End With
                                      
With rst
   .AddNew  (到这里系统就报错了)
            rst.Fields(1) = VBA.Environ("username")
            rst.Fields(2) = Date & ", " & Time
            rst.Fields(3) = Combo1.Text
            rst.Fields(4) = Text1.Text
            rst.Fields(9) = Text2.Text
            rst.Fields(11) = Text3.Text
            rst.Fields(13) = Text4.Text
Dim z As Integer
For z = 0 To 2
If Option1(z) <> 0 Then rst.Fields(5) = Option1(z).Caption
If Option6(z) <> 0 Then rst.Fields(8) = Option6(z).Caption
NextFor z = 0 To 3
If Option2(z) <> 0 Then rst.Fields(6) = Option2(z).Caption
If Option3(z) <> 0 Then rst.Fields(7) = Option3(z).Caption
If Option7(z) <> 0 Then rst.Fields(12) = Option7(z).Caption
Next
For z = 0 To 1
If Option4(z) <> 0 Then rst.Fields(10) = Option4(z).Caption
Next
    .Update
End With
rst.Close
conn.Close
Set rst = Nothing
Set conn = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2020-2-13 12:07 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 13:41 | 显示全部楼层
本帖最后由 hanxing1983 于 2020-2-13 20:19 编辑

问题解决了,我把:
With rst
     .ActiveConnection = conn
End With

改成:
With rst
    .ActiveConnection = conn
    .Open "feedback", LockType:=adLockOptimistic
End With

测试OK,应该是之前只打开了数据库,但没有指定具体的存储路径,所以报错。附上附件。
不过还是不太清楚这个LockType:=adLockOptimistic有什么意义。有高人指点一下吗?

VOC2.zip

23.39 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2020-2-13 14:00 | 显示全部楼层
Recordset.open
CursorType参数:指定打开Recordset时使用的游标
0(adOpenForwardOnly): 默认,前向游标。只能在Recordset的记录中向前移动,但速度最快。
1(adOpenKeyset):键集游标,可以在Recordset中任意移动,其他用户所做的记录修改可见,但其他用户添加的记录不可见,删除的记录字段值不能被使用。
2(adOpenDynamic):动态游标,可以在Recordset中任意移动,其他用户增、删、改的记录都可见,但速度最慢。
3(adOpenStatic):静态游标,可以在Recordset中任意移动,其他用户增、删、改的记录都不可见。
LockType参数:指定打开记录集时应该使用的锁定类型,它的取值为
0(adLockReadOnly):recordset的记录为只读
1(adLockPessimistic):只要保持Recordset为打开,别人就无法编辑该记录集中的记录.
2(adLockOptimistic):当update recordset中的记录时,将记录加锁
3(adLockBatchOptimistic):以批模式时更新记录时加锁

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 14:59 | 显示全部楼层
谢谢您的指点。
发现一个新的问题,这程序在我的电脑上运行是没问题的,但其他人电脑运行时报错,“VB6 run time error 3706,未找到提供程序,该程序可能未正确安装”
这是什么原因吗?这里面的所有插件都是用的默认插件,没有第三方控件。
而且是最后提交时才报错,是不是我的数据库地址写得不对?
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & App.Path & "\VOC.accdb;"

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 15:00 | 显示全部楼层
本帖最后由 hanxing1983 于 2020-2-13 15:07 编辑
NadrsSaber 发表于 2020-2-13 14:00
Recordset.open
CursorType参数:指定打开Recordset时使用的游标
0(adOpenForwardOnly): 默认,前向游标 ...

谢谢您的指点。
发现一个新的问题,这程序在我的电脑上运行是没问题的,但其他人电脑运行时报错,“VB6 run time error 3706,未找到提供程序,该程序可能未正确安装”
其他人电脑没有安装VB6,但我所使用的的所有控件都是用的默认插件,没有第三方控件。
而且是最后提交时才报错,是不是我的数据库地址写得不对?
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & App.Path & "\VOC.accdb;"

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-13 17:14 | 显示全部楼层
求助啊,怎么会出这种莫名奇妙的问题??
程序在我的电脑上运行是没问题的,但其他人电脑运行时报错,“VB6 run time error 3706,未找到提供程序,该程序可能未正确安装”
其他人电脑没有安装VB6,但我所使用的的所有控件都是用的默认插件,没有第三方控件。
而且是最后提交时才报错,是不是我的数据库地址写得不对?
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & App.Path & "\VOC.accdb;"
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2020-9-19 23:02 , Processed in 0.087414 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2021 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表