<<Delphi 5.X ADO/MTS/COM+高级程序设计篇>> 第二章2-4事务管理BatchUpdate范例
 case TComponent(Sender).Tag of
     0:
       begin
          if(DataModule2.ADODataSet1.LockType=TMyADOLockType(ltBatchOptimistic))
        then
          begin
           DataModule2.ADODataSet1.Filtered:=True;
           DataModule2.ADODataSet1.FilterGroup:='fgNone';
          end;
        end;
     1:
       begin
           if(DataModule2.ADODataSet1.LockType=ltBatchOptimistic)
          then
            begin
             DataModule2.ADODataSet1.Filtered:=True;
             DataModule2.ADODataSet1.FilterGroup:=fgPendingRends;
            end;
       end;
   end;
编译时出错
[Error] Unit1.pas(57): Undeclared identifier: 'TMyADOLockType'
[Error] Unit1.pas(57): Undeclared identifier: 'ltBatchOptimistic'
[Error] Unit1.pas(57): Incompatible types
[Error] Unit1.pas(61): Incompatible types: 'TFilterGroup' and 'String'
[Error] Unit1.pas(66): Incompatible types
[Error] Unit1.pas(70): Undeclared identifier: 'fgPendingRends'
[Fatal Error] Project2.dpr(6): Could not compile used unit 'Unit1.pas'请各位大哥不吝赐教

解决方案 »

  1.   

    case TComponent(Sender).Tag of
       0:
       begin
         if (DM1.ADODataSet1.LockType = ltBatchOptimistic) then
           begin
             DM1.ADODataSet1.Filtered:=true;
             DM1.ADODataSet1.FilterGroup:=fgNone;
           end;
       end;
       1:
       begin
         if (DM1.ADODataSet1.LockType = ltBatchOptimistic) then
           begin
             DM1.ADODataSet1.Filtered:=true;
             DM1.ADODataSet1.FilterGroup:=fgPendingRecords;
           end;
       end;
       end;
      

  2.   

    DataModule2.ADODataSet1.FilterGroup:='fgNone';
    改為
    DataModule2.ADODataSet1.FilterGroup:= fgNone;DataModule2.ADODataSet1.FilterGroup:=fgPendingRends;
    檢查是否打錯了 fgPendingRends
      

  3.   

    这回我都改了procedure TfrmMain.zdyClick(Sender: TObject);
    begin
       case TComponent(Sender).Tag of
        0:
         begin
           if (dmBatchUpdate.ADODataSet1.LockType=ltBatchOptimistic)  then
             begin
                dmBatchUpdate.ADODataSet1.Filtered:=True;
                dmBatchUpdate.ADODataSet1.FilterGroup:=faNone;
             end;
         end;
        1:
        begin
           if(dmBatchUPdate.ADODataSet1.LockType=ltBatchOptimistic) then
             begin
               dmBatchUpdate.ADODataSet1.Filtered:=True;
               dmBatchUpdate.ADODataSet1.FilterGroup:=fgPendingRecords;
             end;
        end;
        end;
    end;
    还是出现
    [Error] Unit1.pas(52): Undeclared identifier: 'ltBatchOptimistic'
      [Error] Unit1.pas(52): Incompatible types
      [Error] Unit1.pas(55): Undeclared identifier: 'faNone'
      [Error] Unit1.pas(60): Incompatible types
      [Error] Unit1.pas(63): Undeclared identifier: 'fgPendingRecords'
      [Fatal Error] BatchUpdate.dpr(6): Could not compile used unit 'Unit1.pas'
    怎么回事啊!
      

  4.   

    我想是把这个写成一个FUNCTION中的,然后单击的时候调用它,我就产这样改的
      

  5.   

    上面的搞错了!!是不是哪个单元没有引用啊!!我刚开始的时候也遇到了这个问题,后来不知怎么可以了,
    procedure TForm1.ckfgPredicateClick(Sender: TObject);
    begin
           case  Tcomponent(Sender).Tag  of
       0:
          begin
            if (DataModule1.Temployee.LockType=ltBatchOptimistic )  then
              begin
               DataModule1.Temployee.Filtered:=true;
               DataModule1.Temployee.FilterGroup:=fgNone;
              end;
          end;
       1:
          begin
            if (DataModule1.Temployee.LockType=ltBatchOptimistic)  then
              begin
               DataModule1.Temployee.Filtered:=true;
               DataModule1.Temployee.FilterGroup:=fgPendingRecords;
              end;
          end;
       end;
    end;
      

  6.   

    谢谢shengjun791031(寒冰kkkk)了。