在窗体上放两个Edit和两个ADOQuery连着同一个数据库,点击button1的时候我用ADOQuery1将edit1里的内容存到数据库,同时用ADOQuery2将数据库的内容显示在edit2里,但是奇怪的是每次点击button1的时候数据库里的内容是被修改了,但是Edit2里却总是显示数据库里旧的内容,我在点一下button2重新显示一下数据库里的内容就好使了有时需要多点几下button2,更奇怪的是我单步运行的时候就好使
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 1 where ID=1');
ADOQuery1.Open;
if not ADOQuery1.Eof then
begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('num').AsString:=Edit1.Text;
ADOQuery1.Post;
end;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from 1 where ID=1');
ADoQuery2.Open;
if not ADOQuery2.eof then
begin
Edit2.Text:=ADOQuery2.FieldByName('num').AsString;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from 1 where ID=1');
ADoQuery2.Open;
if not ADOQuery2.eof then
begin
Edit2.Text:=ADOQuery2.FieldByName('num').AsString;
end;
end;
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 1 where ID=1');
ADOQuery1.Open;
if not ADOQuery1.Eof then
begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('num').AsString:=Edit1.Text;
ADOQuery1.Post;
end;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from 1 where ID=1');
ADoQuery2.Open;
if not ADOQuery2.eof then
begin
Edit2.Text:=ADOQuery2.FieldByName('num').AsString;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from 1 where ID=1');
ADoQuery2.Open;
if not ADOQuery2.eof then
begin
Edit2.Text:=ADOQuery2.FieldByName('num').AsString;
end;
end;
解决方案 »
- 真是见鬼,delphi托盘程序timer事件怎么不执行呢?贴出代码,帮我看看。
- D6里面怎么没有IdHashMessageDigest单元?
- 关于HTTPRIO的超难问题,不是高手不要进:HTTPRIO1 as HelloWorldSoap 返回的是nil
- 问题很简单,但是我不会。求助!!!!!!!!!!!!
- 请问我要如何结帐我的贴子?
- 一个关于表格的问题,急,还请高手指教。
- 哪有下载SQL语句或讲解大全的电子书?“
- 关于窗体图标
- 向adoqury动态添加查询字段后,在清除adoquery的sql内容后,查询字段会自动清除吗?
- (大虾救我)报表问题:如何能够在同一页显示两组数据。
- 救命啊!
- 数字排列问题
你在Edit2.Text:=ADOQuery2.FieldByName('num').AsString;前加一句:
showmessage(ADOQuery2.FieldByName('num').AsString);不要单步调试,看看打出来的是什么?
我试了你的方法还是不好使和我说的现象一样啊
var
qry : TADOQuery;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 1 where ID=1');
ADOQuery1.Open;
if not ADOQuery1.Eof then
begin
ADOQuery1.Edit;
ADOQuery1.FieldByName('num').AsString:=Edit1.Text;
ADOQuery1.Post;
end;
Sleep(500);//如果你怀疑ADOQuery1还没有来得及修改数据库的时候,ADOQuery2就把它读出来了,就停半秒钟看看,这只是调试用
qry := TADOQuery.Create(self);
qry.Connection := ADOQuery1.Connection;
qry.ConnectionString := ADOQuery1.ConnectionString; qry.Close;
qry.SQL.Clear;
qry.SQL.Add('select * from 1 where ID=1');
qry.Open;
if not qryy2.eof then
begin
Edit2.Text:=qry.FieldByName('num').AsString;
end;
end;
脚本什么意思
sleep(500)这方法确实好使,但是这是为什么啊
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from 1 where ID=1');
ADoQuery2.Open;
if not ADOQuery2.eof then
begin
Edit2.Text:=ADOQuery2.FieldByName('num').AsString;
end;
去掉Button1Click给Edit2.Text赋值的语句,再看看
后加 Refresh 试试 在程序调试过程中用showmessage(变量);
测试变量值