本人想从数据库中读取一组数据的部分字段内容,然后对其修改,修改后进行保存;如下:
字段1  字段2  字段3  字段4  字段5  字段6  字段7 ......
  1     1      1      1      1       0     0
  1     0      0      0      0       0     0
  2     0      0      0      1       1     1
 ...    ...    ...    ...    ...     ...   ...
将这组数据进行修改后,从新保存;
说明:1、我只从数据库里提取部分数据字段内容;
      2、用delphi7.0自带控件,不想用第三方控件;
用delphi什么控件进行调用,用程序怎么实现?

解决方案 »

  1.   

    是DBGrid
    雨晖玩.net了吧?
    ADOQuery1.LockType:=ltBatchOptimistic;
    ADOQuery1用来SELECT你说的部份字段
    DataSource1连此ADOQuery1
    DBGrid1连接此DataSource1
    保存就
    ADOQuery1.UpdateBatch(arAll);
      

  2.   

    我用的是stringgrid控件,现在,我现在已经能读出来了,我怎么样能操作,然后将数据修改后,保存回去!!!!!!!!!
      

  3.   

    你非要用stringgrid?
    这个没有数据感知功能啊
      

  4.   

    stringgrid:Options中goEditing设为TRUE
    保存:可以循环一条条保存(先判断添加、修改、删除);
    也可以虚拟表一起保存;
      

  5.   

    procedure TXN_BMHD.Button2Click(Sender: TObject);
    const
      cSQL ='select 部门01,部门02,部门03,部门04,部门05,部门06,部门07,部门08,部门09,部门10,部门11,部门12,'
               +'  部门13,部门14,部门15,部门16,部门17,总分 from xn_bmdb where 考评年份=''%S'' and 考评季度=''%S'' and 考评要素=''%S'' and 考评人=''%S''';
    var
      strSQL : string;
      i : integer;
    begin
      strSQL := Format(cSQL,[Edit1.Text,ComBoBox1.Text,ComBoBox2.Text,'潘保林']);   //varUserInfo.UserName
     with DM_Main.DS do
     begin
      OpenDS(DM_Main.DS,strSQL);
      for i:=0 to SGrid.RowCount-1 do
      begin
       Edit;
       DM_Main.DS.FieldByName('部门01').AsString:= SGrid.Cells[0,i];
       DM_Main.DS.FieldByName('部门02').AsString:= SGrid.Cells[1,i];
       DM_Main.DS.FieldByName('部门03').AsString:= SGrid.Cells[2,i];
       DM_Main.DS.FieldByName('部门04').AsString:= SGrid.Cells[3,i];
       DM_Main.DS.FieldByName('部门05').AsString:= SGrid.Cells[4,i];
       DM_Main.DS.FieldByName('部门06').AsString:= SGrid.Cells[5,i];
       DM_Main.DS.FieldByName('部门07').AsString:= SGrid.Cells[6,i];
       DM_Main.DS.FieldByName('部门08').AsString:= SGrid.Cells[7,i];
       DM_Main.DS.FieldByName('部门09').AsString:= SGrid.Cells[8,i];
       DM_Main.DS.FieldByName('部门10').AsString:= SGrid.Cells[9,i];
       DM_Main.DS.FieldByName('部门11').AsString:= SGrid.Cells[10,i];
       DM_Main.DS.FieldByName('部门12').AsString:= SGrid.Cells[11,i];
       DM_Main.DS.FieldByName('部门13').AsString:= SGrid.Cells[12,i];
       DM_Main.DS.FieldByName('部门14').AsString:= SGrid.Cells[13,i];
       DM_Main.DS.FieldByName('部门15').AsString:= SGrid.Cells[14,i];
       DM_Main.DS.FieldByName('部门16').AsString:= SGrid.Cells[15,i];
       DM_Main.DS.FieldByName('部门17').AsString:= SGrid.Cells[16,i];
       DM_Main.DS.FieldByName('总分').AsString:= SGrid.Cells[17,i];   PostDS(DM_Main.DS);   Next;
      end;
      Close;
    end;提示错误如下:
    update affected more than 1 record;
    这条语句我应该怎样修改?