首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

ADOQuery 修改记录如何变成新增加记录?

2012-03-24 
ADOQuery 修改记录怎么变成新增加记录???D7+SQL2k编程,选择DBGrid表中某条记录后修改某字段,保存后该记录

ADOQuery 修改记录怎么变成新增加记录???
D7+SQL2k编程,选择DBGrid表中某条记录后修改某字段,保存后该记录没变,反而在库里新添加了记录,新增加的记录该字段变成了刚刚修改的记录,代码有错吗?什么原因???
  Try
  MDADO.Edit;
  MDADO.FieldByName('A').AsString:=Trim(Edit20.Text);
  MDADO.FieldByName('B').AsString:=Trim(Edit14.Text);
  MDADO.FieldByName('C').AsString:=Trim(Memo3.Text);
  MDADO.FieldByName('D').AsString:= Trim(Memo2.Text);
  MDADO.Post;
  Except
  Application.MessageBox('数据库数据录入出现异常,请重新修改。','数据库系统错误',48);
  MDADO.Cancel;
  Exit;
  end;

例子:如选择的记录如下,要修改字段D为6
  A B C D  
  1 2 3 4
修改后
  A B C D
  1 2 3 4-->原记录没变
  '' '' '' 6 -->多出来 






[解决办法]
程序没有错
在执行上述代码之前,没有定位,
你可以这样修改
MDADO.close;
MDADO.sql.clear;
MDADO.sql.add('select * from [table] where D = :para');
MDADO.parameter.parabyname('para').value := 4;
MDADO..open;
MDADO.first;
..........
执行后面即可.


[解决办法]
如果不是批量修改,单条记录的修改还是用sql语句吧
with query do
begin
close;
sql.text := 'update table set aa=:aa where key=:key';
parameters.parambyname('aa')....
....
execsql;
end;
[解决办法]
建议你再增加个AdoQuery
adoquery2.sql.clear;
adoquery2.sql.add('update ..where a='+adoquery1.fieldByName('a').asstring);
adoquery2.ExecSQL;
adoquery1.refresh;
[解决办法]

 Try
MDADO.Locate('D',4,[]); //用来定位记录
MDADO.Edit;
MDADO.FieldByName('A').AsString:=Trim(Edit20.Text);
MDADO.FieldByName('B').AsString:=Trim(Edit14.Text);
MDADO.FieldByName('C').AsString:=Trim(Memo3.Text);
MDADO.FieldByName('D').AsString:= Trim(Memo2.Text);
MDADO.Post;
Except
Application.MessageBox('数据库数据录入出现异常,请重新修改。','数据库系统错误',48);
MDADO.Cancel;
Exit;
end;
[解决办法]
try
 if MDADO.eof or MDADO.bof or MDADO.isempty then
begin
showmessage('请选择记录');
exit;
end;
[解决办法]
你要修改一条记录,得先定位到这条记录
一条记录总该有一个(或多个结合)可以用来作唯一标志的字段吧

热点排行