ADOQuery1.Post提交数据修改后未更新数据库
本人初学,采用DBGRID DataSource ADOQuery ADOConnection 连接mysql数据库,数据库连接正常,查询正常,修改数据时出现问题(部分代码如下),在xp下用ADOQuery1.Open;ADOQuery1.edit..... ADOQuery1.Post;正常,能成功修改数据,但在win7下出错,提示“数据提供程序或其他服务返回 E_FAIL状态”,修改ADOQuery locktype后,win7下不提示错误,但程序执行时DBGRID显示数据已经修改了,用select * from 刷新数据后发现数据并未修改。使用{}内代码时win7下正常,也能成功修改数据。请问大师们,如何在win7下使用ADOQuery1.Open;ADOQuery1.edit..... ADOQuery1.Post 成功修改数据。
部分代码如下:
if edit1.Text<>'' then
begin
Memo1.Lines.Add('');
Memo1.Lines.Add('高频模块');
IdIcmpClient1.Host:=Edit1.Text;
IdIcmpClient1.ReceiveTimeout:=1000;
Button1.Enabled:=false;
try
for i:=0 to 1 do
begin
IdIcmpClient1.Ping;
if (IdIcmpClient1.ReplyStatus.BytesReceived =0) or (IdIcmpClient1.ReplyStatus.TimeToLive =0) then
begin
with ADOQuery1 do
begin
{ ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='Update cbat SET 状态1="0" where id='+idh ;
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from cbat order by id ');
ADOQuery1.Open;
ADOQuery1.Locate('id',strtoint(idh),[loPartialKey]);
ADOQuery1.EnableControls;
}
ADOQuery1.Open;
ADOQuery1.edit;
ADOQuery1.FieldByName('状态1').value:='0';
ADOQuery1.Post;
end;
end
else
begin
with ADOQuery1 do
begin
{ ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='Update cbat SET 状态1="1" where id='+idh ;
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from cbat order by id ');
ADOQuery1.Open;
ADOQuery1.Locate('id',strtoint(idh),[loPartialKey]);
ADOQuery1.EnableControls;
}
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.FieldByName('状态1').value:='1';
ADOQuery1.Post;
end;
end;
Application.ProcessMessages;
end;
finally
Button1.Enabled:=true;
end;
end;