热情软件屋

 

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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio