有这样一个问题:
(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字段的修改做保存,
请问我这种想法是否可行?如果可行应该如何做?谢谢!
(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字段的修改做保存,
请问我这种想法是否可行?如果可行应该如何做?谢谢!
//adoquery.FieldValues['name']:=Trim(edit1.text);//保存name字段数据
adoquery.FieldValues['code']:=Trim(edit2.text);//保存code字段数据
adoquery.post;
保存的时候取消name字段的更新就可以了。
我是想在adoquery.updatebatch前取消对name 的修改;
就是不知到如何取消对一个字段的修改啊?
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被修改过,会被提交.有没有其他办法?
adoquery.fieldbyname('code').visiable:=false;//不显示给用户
adoquery.fieldbyname('name').visiable:=true;//显示给用户看,并且给以修改.
当用户修改了name时,code也会被对应的修改只是用户看不见.
在提交后台保存时只提交code,而不提交name.是否可以做到?
说白了就是想要控制ADO更新的feild.
//******************
我怎么看的有点糊涂了呢,修改了name,用户看不到的code也修改,怎么修改呀!
//*****************
因为要解释起来有点麻烦!