zds0707(周)
就是采用backroll方式贮存数据。

解决方案 »

  1.   

    这是我一年前做的一个程序
    数据库连接采用odbc方式
    控件采用table,dbgrid,datasourse,database.
    如果采用直接相连,post的保存的话,我不post的也就保存了。
    我用backroll的方式,发觉数据量大就好慢。就决定采用引入一个临时的dbf来存放数据把数据逻辑搞完了再入库,入库时采用的backroll方式。如下
      With Table1 do  begin
        Database1.StartTransaction;
        try
          ApplyUpdates;
          Database1.Commit;
        except
          Database1.Rollback;
        raise;
        end;
        CommitUpdates;  end;
    。后来发觉这样不太好。
    所以征求一个好的解决方案。前提还是odbc连接方式。我的联系方式
    [email protected]
    10652093
    http://nizvoo.myrice.com
      

  2.   

    不管是什么本机还是网络。都采用ODBC接口。
      

  3.   

    数据量大时Rollback当然很慢了。因为它需要根据Log一条一条将原来的记录变回去。保证数据的一致性。
    我个人认为对大数据量的操作,最好不用事务,那样太慢了。
    我记得有一次在倒300万条记录时,用了事务。结果计算机干了2天。大概快做好的时候崩溃了。重启后,又回滚了2天。
      

  4.   

    chechy(chechy) 那我该怎么办?
      

  5.   

    不要使用Transaction,这样不会有那么多回滚时间。
      

  6.   

    将BDE ALIAS中的SQLPASSTHRU MODE改为SHARED NOAUTOCOMMIT
      

  7.   

    为什么
    说can not edit the sqlpassthru????
      

  8.   

    不要在Alias被激活的时候修改。即这个Alias外不要有黄色的框框。
      

  9.   

    可不可以用程序写。比如我在自动用程序写ODBC配置时让它有这个参数
      

  10.   

    Delphi的例子,你可以照葫芦画瓢。
    procedure TForm1.ChangeAlias;var
      AParams: TStringList;
      Dir: string;
    begin
      ifnot Session.IsAlias('MyAlias') then
        begin
          ShowMessage('Alias MyAlias does not exist');
          Exit;
        end;
      AParams := TStringList.Create;
      try
        // get the current PATH parameter
        Session.GetAliasParams('MyAlias',AParams);
        Dir := Copy(AParams.Strings[0],6,255);
        // get the new PATH parameter
        if InputQuery('MyAlias Alias Path','Path:' ,Dir) then      begin
            // Update the alias parameters
            AParams.Clear;
            AParams.Add('PATH=' + Dir);
            Session.ModifyAlias('MyAlias',AParams);
            Session.SaveConfigFile;
          end;
        finally
          AParams.Free;
        end;
      end;
      

  11.   

    就是改变所有itmes的值是不是从string[0]
    到string[N]不是不