DBGrid和事务的联合使用
编号:QA001643
建立日期: 1999年9月2日 最后修改日期:1999年9月2日
所属类别:
fsf:
vb5
win98
问题是这样的:我在对数据库的编程中加入"保存"和 "撤销"功能(通过dbgrid进行数据录入). 于是我想到了运用"事务"。但由于在执行begintrans后要对data的recordsource进行重定义(定义后执行data.refresh),造成了在以后执行rollback的错误。("没有先使用 BeginTrans 就用 Commit 或Rollback 错误 3034)。请教如何实现"保存"和"撤销"功能。 (注:数据量较大,采用临时表太慢!)
回答:
两点意见:
(1) DBGRID 直接进行数据录入时,由于其本身的限制(缺乏必要的检测 如单元格检测),因此需要自行做很多控制.建议考虑其他方法。
(2) 事务的处理. 在数据量较大时,将保存的过程尽可能简化,然后套上事务,会大大加快保存的效率.下面以 VB6 为例 使用ADO,SQL7
比如说生成一个表的过程,可从服务器返回一个空的结果集
Example: " Select * from table1 where 1=0"
然后是
On Error Goto Errhandle
...
BeginTrans
AddNew
字段赋值过程
...
Update
CommitTrans
...
Exit sub
Errhandle:
RollBack
与 Data 控件绑定时,事务最好是紧跟着保存操作,而不要在某个函数里调保存的函数,这样执行 "Data1.refresh"时就不会有问题了。
以上意见仅供参考。
此问题由Knofler回答。
| |
|
|
| |
|
|