大家好,请教一下,把dbgrideh中的checkbox全部编辑
  数据源是adoquery,是通过几个表查询出的数据,里面有个BIT类型的字段,我在界面上用了一个CheckBox控件,想用这个CheckBox控制所有dbgrideh中的checkbox,下面是我的代码: while not S1Query1.Eof do
 begin
  S1Query1.Edit;
 S1Query1.FieldValues['state']:=CheckBox1.Checked;
   S1Query1.Post;
 S1Query1.Next;
 end; 
错误提示说没有更新的键列消息,我查了一下知道是多表查询时不能用post,请问大家怎样才能把多表查询出来的BIT类型的字段用CheckBox控制!

解决方案 »

  1.   


    procedure TForm1.Button2Click(Sender: TObject);
    var
    i:integer;
    begin if DBGridEh1.RowCount>0 then begin
        DBGridEh1.SelectedRows.SelectAll;{全选}
         with ADOQuery1 begin
          DisableControls;
          for i :=0  to DBGridEh1.SelectedRows.Count-1 do begin
             GotoBook(pointer(DBGridEh1.SelectedRows.Items[i]));
             edit;
             FieldValues['state']:=CheckBox1.Checked; 
             post;
          end;
          EnableControls;
         end;
       DBGridEh1.SelectedRows.Clear;{取消全选}
     end;
    end;
      

  2.   


    procedure TForm1.Button2Click(Sender: TObject);
    var
    i:integer;
    begin if DBGridEh1.RowCount>0 then begin
        DBGridEh1.SelectedRows.SelectAll;{全选}
         with S1Query1 begin
          DisableControls;
          for i :=0  to DBGridEh1.SelectedRows.Count-1 do begin
             GotoBook(pointer(DBGridEh1.SelectedRows.Items[i]));
             edit;
             FieldValues['state']:=CheckBox1.Checked; 
             post;
          end;
          EnableControls;
         end;
       DBGridEh1.SelectedRows.Clear;{取消全选}
     end;
    end;