]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` 应用服务器上使用TQuery作为TDataprovider的DATASET,使用自动生成SQL更新
用户端APPLYUPDATES后,在应用服务器上可以看到传过来得数据,并触发了BEFORE
UPDATEDATA,但数据库没有得到更新,为什么!!
我用多层的时候也是遇这问题,ClientDataSet将服务端的数据是下载过来,其它的事件就在本机上工作了,就好像它是一个临时的DataSet存储了服务端的数据。所以当别人更新时,服务器的记录已经更新,但是在另外客户端并不会。
我想这样或可解:
再加入ServerSocket(Server端),ClientSocket(Client端),当服务端AfterUpdateData中
写入:
for i:=0 to Client_Number-1 do
begin
ServerSocket.Socket.Connections[i].SendText('Client Refresh');
end;
在Client端中的ClientSocket的OnRead事件中:
var str:string;
begin
str:=Socket.ReceiveText;
if str='Client Refresh' then
begin
ClientDataSet.Close;
ClientDataSet.CommandText:='select * from table';
ClientDataSet.Open;
end;
end;
Are you OK?