Dynamic Refresh DataSet

Sorry,i have many questions recently.

I'm now developing a network program using
DOA(Hotel Management System,PMS),in my program some forms need dynamic refresh its data(such as room status),so i use delphi's socket control to notify other computers runing same program when i update the room
status.

//Code in main form

procedure Tfrm_MainForm.ClientSocketRead...
begin
case NetWorkMessage of
SWM_REFRESH:PostUserMessage(WM_REFRESH);
//SWM_REFRESH & WM_REFRESH are defined by myself
end;
end;

procedure Tfrm_MainForm.PostUserMessage(Msg:integer);
var i:integer;
begin
for i:=0 to MDIChildCount-1 do
begin
PostMessage(MDIChildren.Handle, Msg, 0,0);
end;
end;

//Code in MDIChildForm
procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
ods_Room.Close;
ods_Room.Open;
end;

but the ods_room does not really refreshed,
so i insert a messagebox to debug:

procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
showmessage('Refresh Start');
ods_Room.Close;
ods_Room.Open;
end;
when i close the messagebox,then it works;
dataset has been refreshed;

or i change a way:

procedure Tfrm_Room.WMREFRESHREV (var Message: TMessage);
begin
Timer1.Enabled:=True;
end;

procedure Tfrm_Room.Timer1Timer(Sender: TObject);
begin
ods_room.Close;
ods_room.Open;
Timer1.Enabled:=False;
end;

it works again.

I wanna know why, thanks.

Best regards,
Anthonio Chaw
 
It seems like a timing issue. Is the room status change already committed when this notification is sent?

------------------
Marco Kalter
Allround Automations
 
Back
Top