我现在做了一个程序,主程序上有一个ADOTable组件,暂 叫ADOT1,另一个程序上也有一个adoTable组件,暂叫ADOT2,两个组件连接着相同的数据表。当adot2对数据修改后发消息给主程序,主程序就用ADOT1遍历数据表,可是这时候却找不到ADOT2刚修改过的数据。不知道有没有什么办法能让adot2修改后立刻更新程序如下:
子程序其实是主程序调用的一个DLL后产生的一个窗体
子程序procedure TWakeupFrm.button1Click(Sender: TObject);
var
h:HWND;
begin
ado2.append;
...//给相应字段赋值
ado2.post; h:=findwindow(nil,'MainFrm');
sendMessage(H,WU_UPDate,0,0);end;主程序:
procedure THTWPFFrm.WUUpdate(var Msg: TMessage); 《《这是一个消息处理
begin
ado1.active:=true;
while not ado1.eof do
begin
...//相找子程序中增加的记录,可是找不到,显示RecordCount的值为未增加记录前的值
end;end;不知有没有什么方法可以解决?
子程序其实是主程序调用的一个DLL后产生的一个窗体
子程序procedure TWakeupFrm.button1Click(Sender: TObject);
var
h:HWND;
begin
ado2.append;
...//给相应字段赋值
ado2.post; h:=findwindow(nil,'MainFrm');
sendMessage(H,WU_UPDate,0,0);end;主程序:
procedure THTWPFFrm.WUUpdate(var Msg: TMessage); 《《这是一个消息处理
begin
ado1.active:=true;
while not ado1.eof do
begin
...//相找子程序中增加的记录,可是找不到,显示RecordCount的值为未增加记录前的值
end;end;不知有没有什么方法可以解决?
=>ado1.requery试试
ado1.open一般情况下都不是实时更新的,如果需要最新的数据,只能关闭并打开。
var
h:HWND;
begin
ado2.append;
...//给相应字段赋值
ado2.post; //===========
conn.close; //conn是与ado2相连的tadoconnection,用这条语句试试
//=========== h:=findwindow(nil,'MainFrm');
sendMessage(H,WU_UPDate,0,0);end;主程序:
procedure THTWPFFrm.WUUpdate(var Msg: TMessage); 《《这是一个消息处理
begin
//===========
conn.close;
conn.open //conn是与ado1相连的tadoconnection
ado1.open
//===========
while not ado1.eof do
begin
...//相找子程序中增加的记录,可是找不到,显示RecordCount的值为未增加记录前的值
end;end;
不是不ado的写盘速度太慢啊!!