我的代码如下
with adoquery1 do
sql.add('update 信息表 set 姓名='''+edit1.text+''',学号='''+edit2.text+''',.....');
sql.add('where 1=1');
execsql;还有就是我想修改鼠标点击的那一行,需要加些代码吗?

解决方案 »

  1.   

    你先把鼠标点击那一行的主键ID找到。
    比如
    ID := adoquery1.FieldByName('id').asinteger;
    然后你UPDATE的时候WHERE加ID= ??
    就可以了。
      

  2.   

    1
    with adoquery1 do
    begin
      sql.add('update 信息表 set 姓名='+quotedstr(edit1.text)+',学号='+quotedstr(edit2.text)+',..... where 1=1');
      execsql;
    end;
    2
    with adoquery1 do
    begin
      edit;
      fieldbyname('姓名').asstring:=edit1.text;
      fieldbyname('学号').asstring:=edit2.text;
      fieldbyname('年龄').asinteger:=strtoint(edit3.text);
      post;
    end;
      

  3.   

    用数据集的方式进行修改就很简单了
    with adoquery1 do
    begin
      edit;
      FieldByName('column').asstring:= 'asdga';
      post;
    end;
    OK
    如果一定要用sql就要用FIELDBYNAME方法取到主键的值,在UPDATE语句里面加上where查询主键进行修改也可以
      

  4.   

    chwdong(chwdong)的方法只能修改第一条的数据
    我想获取鼠标选中的那一行,然后修改它,有没办法呢?
      

  5.   

    先得到你选中的那个记录的主键,如:
    var id:integer;
    ...
    id:=adodataset1.fieldbyname('id').value;
    ...
    然后在修改这个记录
    ...
    with adoquery1 do
    begin
      sql.add('update 信息表 set 姓名='+quotedstr(edit1.text)+',学号='+quotedstr(edit2.text)+',..... where id='+inttostr(id));
      execsql;
    end;
    ...
    明白了么
      

  6.   

    那有没谁能告诉我为什么我用edit1.text:=adotable1.fieldbyname('姓名').value可以显示鼠标点击那一行的数据,而用adotable1.edit;
                              adotable1.fieldbyname('姓名').value:=edit1.text;总是显示第一行数据呢?按照neo40(企鹅)老兄给的代码会出现“参数001没有默认值”的错误,而这个001就是第一行‘NO’字段的数据,怎么会这样呢?
      

  7.   

    在ADOTable的afterscroll事件中写:
    edit1.text:=adotable1.fieldbyname('姓名').asString;
      

  8.   

    楼上的说的没错,代码如下
    procedure TForm1.ADOquery1AfterScroll(DataSet: TDataSet);
    begin
    edit1.Text:=adoquery2.fieldbyname('id').asstring;
    end;
    用一个adoquery2来获得所要的标识的值
    procedure TForm1.BitBtn3Click(Sender: TObject);
    begin
    with adoquery1 do
    begin
    close;
    sql.Clear;
    sql.add('update table set name=.... where id='''+edit1.Text+'''');
    ExecSQL;
    end;
    adoquery1.close;
    adoquery1.Open;
    end;
      

  9.   

    修改鼠标点击的那一行,
    set...where aaa='''+adoquery1.fieldbyname('aaa')+'''