Datasnap Delphi XE7 - ApplyUpdates(0)问题

时间:2015-01-15 22:18:14

标签: delphi delphi-xe7 datasnap

我有一个最初使用XE5开发的datasnap服务器应用程序,可以在移动平板电脑上访问服务器上的Firebird数据库时使用客户端应用程序。我用XE7重新编译了代码。我必须对代码进行编译而没有任何错误的唯一更改是将DataSnap.DSProviderDataModuleAdapter添加到方法单元的使用中。已经更换了服务器上的服务器应用程序(停止服务/卸载/重新安装/启动服务),现在我无法再在服务器上的数据库中插入/更新记录。每当我到ApplyUpdates(0)的代码行时,我都会收到以下错误:

远程错误:模块Snackerservice.exe中地址0093CB3F处的访问冲突。读取地址00000000。

从数据库中检索要在平板电脑上显示的数据不是问题,因此连接正常。

如果我将服务器应用程序更改回XE5下开发的应用程序......一切正常。另一个奇怪的事情是,当使用'localhost'访问我的开发机器上的数据库副本时,XE7编译的应用程序没有问题......只有在通过IP连接访问服务器时才会出现。

有人可以帮我解决这个令人沮丧的问题。

Bill Zwirs

为了让它更清晰一点,这里有一些导致问题的代码:

iLic := ServerMethodsClient.Get_Licences;
iDev := ServerMethodsClient.Get_NumDevices;
if (iDev < iLic) then
begin
  iDevID := ServerMethodsClient.Get_NewDevID;
  MobClientDM.DevicesClient.Open;
  MobClientDM.DevicesClient.Insert;
  MobClientDM.DevicesClientDEVID.AsInteger:= iDevID;
  MobClientDM.DevicesClientMACADDRESS.AsString := sMacAddress;
  MobClientDM.DevicesClient.Post;
  if (MobClientDM.DevicesClient.ChangeCount > 0) then
    MobClientDM.DevicesClient.ApplyUpdates(0);         ....................Error occurs here
end;

1 个答案:

答案 0 :(得分:2)

问题终于解决了。

当我在服务器上安装服务器应用程序时,我还将Midas.dll添加到工作正常的目录,直到我使用XE7编译。所以我现在在服务器应用程序的uses子句中包含了MidasLib,并从安装目录中删除了Midas.dll文件。编译和安装,所有工作再次好。

希望这有助于其他可能遇到类似问题的人。

Bill Zwirs