有这样一个问题:
(Delphi6)
用adoquery->sqlserver2000查询后得到一个结果集
主键为:ID
设置如下:
{adoquery.CursorLocation:=clUseClient  ;
 adoquery.CursorType:=ctStatic
 adoquery.LockType:=LtBatchOptimistic}
结果集如下:
ID  code    name
001  A1     tyy
002  A2     poo
我对结果集修改后
ID  code    name
001  A2     poo
002  A2     poo
我在保存时想先把name字段恢复为没有修改前的状态,
其实也就是只对code字段的修改做保存,
请问我这种想法是否可行?如果可行应该如何做?谢谢!

解决方案 »

  1.   

    修改时只对code字段进行修改就可以,不用考虑name字段的修改。
      

  2.   

    如过非要修改name字段,但在保存前取消行吗?
      

  3.   

    adoquery.edit;
    //adoquery.FieldValues['name']:=Trim(edit1.text);//保存name字段数据
    adoquery.FieldValues['code']:=Trim(edit2.text);//保存code字段数据
    adoquery.post;
    保存的时候取消name字段的更新就可以了。
      

  4.   


    我是想在adoquery.updatebatch前取消对name 的修改;
    就是不知到如何取消对一个字段的修改啊?
      

  5.   

    adoquery1Name.value := AdoQuery1name.curValue;
      

  6.   

    本来我是用:
    begin
    if (adoquery.fieldbyname('name').value<>adoquery.fieldbyname('name').oldvalue) then
       begin
       adoquery.edit;
       adoquery.fieldbyname('name').value:=adoquery.fieldbyname('name').oldvalue;
       adoquery.post;
       end;
    end;
    可是发现保存时adoquery还是认为name被修改过,会被提交.有没有其他办法?
      

  7.   

    其实也就是只对code字段的修改做保存, 你将name的修改状态置为readonly就防止误修改了
      

  8.   

    其是我就是想让用户程序中修改name和code,
    adoquery.fieldbyname('code').visiable:=false;//不显示给用户
    adoquery.fieldbyname('name').visiable:=true;//显示给用户看,并且给以修改.
    当用户修改了name时,code也会被对应的修改只是用户看不见.
    在提交后台保存时只提交code,而不提交name.是否可以做到?
    说白了就是想要控制ADO更新的feild.
      

  9.   

    我怎么看的有点糊涂了呢,修改了name,用户看不到的code也修改,怎么修改呀!
      

  10.   

    其是我就是想知道是否可以控制ADO更新的feild,如果不行就算啦!
    //******************
    我怎么看的有点糊涂了呢,修改了name,用户看不到的code也修改,怎么修改呀!
    //*****************
    因为要解释起来有点麻烦!