我有一DBGrid,和一个Button1
如何更改DbGrid中某一列的所有值,并且更新??
就是当我Buttol1Click的时候把DBGrid1的第5列值全部写改为0,并且存入数据库中,然后更新DBGrid
该如何操作,是否需要用到循环???????????

解决方案 »

  1.   

    用sql语句
    update yourtable set col5th=0 
      

  2.   

    sql语句我会写,我的意思是是不是要根据DBGrid循环,然后写进数据库,在重新绑定一次
      

  3.   

    DBGrid1.DataSource.DataSet:=nil;
    /*******
    处理
    update yourtable set col5th=0 
    /****
    DBGrid1.DataSource.DataSet:=adoquery1;
      

  4.   

    用循环也可以:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to ADODataSet1.RecordCount - 1 do
      begin
        AdoDataSet1.First;
        AdoDataSet1.Fields[4].AsInteger := 0;
        AdoDataSet1.Next;
      end;
    end;
      

  5.   

    加一個adoquery吧
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     adoquery1.sql.text:='update 表 set 字段=0 ';
     adoquery1.execsql;
     adodataset.refresh;
    end;
      

  6.   

    用循环也可以:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      with ADODataSet1 do
      begin
        First;
        while (not isEmpty) and (not Eof) do
        begin
          Fields[4].AsInteger := 0;
          Next;
        end;
      end;
    end;
      

  7.   

    SQL语句一下搞定多好.
    为啥用循环?
      

  8.   

    1:如果DBGrid1.DataSource.Dataset 是adotable1
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to adotable1.RecordCount - 1 do
      begin
        With adotable1 do 
        begin
          First;
          Edit;
          FieldByName(FieldName).Value := 0;
          Post;
          Next;
        end;
      end;
    end;
    2:如果DBGrid1.DataSource.Dataset对应的是adoquery1
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      With adoquery1 do 
      begin
        close;
        sql.clear;
        sql.add('Update tableName Set fieldName=:FieldValue where.....');   ////更改数据
        parameters.parabyname('FieldValue').value := 你要赋的数据;  
        execsql;
        sql.clear;
        sql.add('Select * from tablename where');   ////重新打开数据
        Open;
      end;
    end;