网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月04日漏签0天
vb吧 关注:156,084贴子:1,166,237
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 9回复贴,共1页
<<返回vb吧
>0< 加载中...

VB 打开数据库失败时的错误处理问题

  • 只看楼主
  • 收藏

  • 回复
  • zcy0131
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我有一个OPEN过程,功能是打开access数据库进行查询并修改数据。但是因为是多用户(3-5人)的,有时会报错文件正在使用中。我想实现如果OPEN里rs.open 发生错误,就延迟0.5秒再重新运行OPEN过程,如果依旧使用中,那就再延迟0.5秒,一直到5秒后,弹出msgbox,退出程序。
这个错误处理应该怎么弄呢?


  • zcy0131
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
因为涉及到数据的修改,每次打开都是独占模式,每次都是打开-查询-关闭,或者打开-修改-关闭。这个期间都是短暂的打开写入,但是未避免出现意外的多人访问碰撞问题,所以需要一个出错处理方法。请大家指教。


2025-09-04 01:51:18
广告
不感兴趣
开通SVIP免广告
  • ztw1122
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
on error go to xxx
xxx:
if dataTime=-1 then
dataTime=0
else
dataTime=dataTime+1
if dataTime>10 then
msgbox "xxxxx"
dataTime=-1
endif
endif
放个Timer,0.5秒抛一次,调更新,


  • zcy0131
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
呃,没太看明白楼上的方式,我补充一下我现在数据库打开的方式吧。
Public cn As New adodb.Connection '声明新的数据库连接变量
Public rs As New adodb.Recordset '声明新的数据库记录集变量
'打开数据库连接
Public Sub openconn()
Set cn = New adodb.Connection '设置新的数据库连接变量
Set rs = New adodb.Recordset '设置新的数据库记录集变量
cn.CursorLocation = adUseClient '设置数据库连接状态
cn.Open "provider=microsoft.jet.oledb.4.0;data source=y:\XXX.mdb;jet oledb:database password=XXXX;persist security info=false;" '打开lcjl数据库
End Sub
'关闭数据库连接
Public Sub closeconn()
rs.Close '关闭数据库记录集
Set rs = Nothing '设置数据库记录集为空
cn.Close '关闭数据库连接
Set cn = Nothing '设置数据库连接字符串为空
End Sub
然后在主程序里通过调用openconn()来打开数据库,如果这个时候有其他人用同样的方式打开数据库写数据,这面就要等待对方释放数据库后再打开数据库,应该在什么位置加上什么样的处理方式呢?(这个程序大概3-5个人使用,不会出现密集的同时查询写入的现象。)


  • ztw1122
  • 网络通信
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Public Sub openconn()
on error go to xxx
exit sub
xxx:
sub Timer_time()
if dataTime<> -1 then openconn()


  • sowo
  • 基本语句
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
access是单机数据库,出性能考虑用sql sever之类好点,要不就错误处理里用启用timer执行了


  • zcy0131
  • 函数调用
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
了解思路了。主要是
sub Timer_time()
if dataTime<> -1 then openconn()
这里没转过弯来。哈哈


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示