ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3570|回复: 11

在VB6中可以以下代码进行排它操作,这个方法怎么能在ACCESS程序中实现?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-5-24 11:29 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在VB6中,为了避免不同用户对同一数据库进行添加,删除数据而造成数据紊乱,可进行排他操作 具体VB6排他代码请看下面,但在ACCESS相关操作如何能实现啊? Set MyConn=Sever.CreateObject(“ADODB.Connection”) MyConn.Open “ByktDB.dsn” MyConn.BeginTrans //事务处理开始 MyConn.Execute “INSERT DataTable(Num) Values(‘3628’)” MyConn.Execute “INSERT Shipping (Address) VALUES(‘Paris,France’)” MyConn.CommitTrans //事务处理结束 MyConn.Close

TA的精华主题

TA的得分主题

发表于 2006-5-24 13:32 | 显示全部楼层

事务性处理,这样的ADO操作应用在ACCESS中完全可以。

不过上面的代码不能拿来主义,因为上面代码的运行环境是ASP的VBS,其对象是WEB服务器上的server,创建的是后期绑定ADO链接。

在ACCESS中必须先声明,后使用,即使是同样采用后期绑定的方式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-24 13:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

那请问在ACCESS中数据库和程序能否在一个文件中?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-24 16:51 | 显示全部楼层

在使用以下代码后还会出现不同用户同时对数据库操作时出现问题

XXcuEhN9.rar (67.78 KB, 下载次数: 7) conn.BeginTrans Set accountnumber = New ADODB.Recordset With accountnumber Set .ActiveConnection = conn .Source = "select top 1 * from 店铺报销记录 order by 编号 desc" .Open End With accountnumber.MoveFirst sql = "insert into 店铺报销记录(编号,制单人) values (" sql = sql & accountnumber![编号] + 1 & "," & "'" & Me.Label制单人.Caption & "'" sql = sql & ")" conn.Execute sql conn.CommitTrans conn.Close Me.Listdata1.RowSource = "select top 10 * from 店铺报销记录 order by 编号 desc" MsgBox "信息添加成功!" ''注释:以下不是用的是排他作用的格式啊,怎么没用啊 ? ''------------conn.BeginTrans '''' ''-----------....................... ''----------conn.CommitTrans

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-24 16:55 | 显示全部楼层

顺便问一下2楼的,你说的在ACCESS中声明,怎么声明啊?

TA的精华主题

TA的得分主题

发表于 2006-5-25 11:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

请注意:

关键:

RollbackTrans - 取消当前事务中所作的任何更改并结束事务。它也可能启动新事务。也就是所说的事务回滚,如果出现任何一项错误,则当前所做的所有操作全都失效即当前操作失败。例如 对10个数据更新,如果有任何1个数据更新时发生错误(可能有其他用户正在对其进行编辑),那么这10个数据都不进行更新操作,就是说事务回滚,更新失败。

你用的则是:

CommitTrans - 保存任何更改并结束当前事务。(它也可能启动新事务)

其功能是在事务处理的所有数据操作中,即使发生局部数据操作问题
也不影响其他任何一项正常的操作的执行。例如10个数据同时更新,用此事务处理结果是 有6个数据可以正常更新(只要没有错误发生,这6个数据就会被更新保存),而4个数据不能更新(可能是当前有其他用户正在编辑这4个数据,因此不能成功更新)。

而事务的应用,并不是排他,却是含有排己意思。

TA的精华主题

TA的得分主题

发表于 2006-5-25 11:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

:)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-25 17:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

晕,感觉怎么conn.BeginTrans(conn.CommitTrans/RollbackTrans )感觉怎么没用啊?是不是要在ACCESS申明啊?好象找不到啊?

TA的精华主题

TA的得分主题

发表于 2006-5-26 08:02 | 显示全部楼层

Dim con As ADODB.Connection
Dim iLevel As Integer
Set con = New ADODB.Connection
con.CursorLocation = adUseServer
'con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\" & CurrentProject.Name & ";"
Set con = CurrentProject.Connection
con.BeginTrans

*****

con.CommitTrans

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-26 09:26 | 显示全部楼层

这条语句起什么作用啊?con.CursorLocation = adUseServer

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 22:03 , Processed in 0.036610 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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