Web services 如果有人已经在使用4D数据库中的数据,SOAPWeb服务将无法更新该数据库中的数据

Web services 如果有人已经在使用4D数据库中的数据,SOAPWeb服务将无法更新该数据库中的数据,web-services,soap,4d-database,Web Services,Soap,4d Database,我在4D上有一个客户机-服务器应用程序(桌面应用程序有4个用户,安装在不同的机器上)。我已经编写了一个soapweb服务,其主要作用是从另一个sqlserver数据库读取数据并将这些数据插入4D。 如果没有人使用该应用程序,则一切正常。现在的问题是,如果有人使用该应用程序,那么我的SOAP服务将无法将数据写入4D。 另一个问题是,如果4D上应用了任何锁定功能,那么这应该适用于所有与集中式4D通信的4个用户 有谁能帮我一下到底是什么问题?它是在4D中还是需要合并到我的SOAP服务中。通常,在修改记

我在4D上有一个客户机-服务器应用程序(桌面应用程序有4个用户,安装在不同的机器上)。我已经编写了一个soapweb服务,其主要作用是从另一个sqlserver数据库读取数据并将这些数据插入4D。 如果没有人使用该应用程序,则一切正常。现在的问题是,如果有人使用该应用程序,那么我的SOAP服务将无法将数据写入4D。 另一个问题是,如果4D上应用了任何锁定功能,那么这应该适用于所有与集中式4D通信的4个用户


有谁能帮我一下到底是什么问题?它是在4D中还是需要合并到我的SOAP服务中。

通常,在修改记录后,您应该使用
卸载记录

但是,记录可能会被锁定很多时间,例如,如果客户打开一个对话框对其进行修改并保持打开状态。您应该避免直接修改用户经常使用和修改的记录,但如果需要这样做,更一般的方法是等待记录可写:

READ WRITE([Table]) //Change state to writeable
Repeat
   DELAY PROCESS(Current Process; 30) //just wait 30 ticks (= half second)
   LOAD RECORD([Table]) //Try to load record
Until(Not(Locked([Table])))
   // --> here you can make changes to record 
SAVE RECORD([Table]) 
UNLOAD RECORD([Table]) //this free the record lock
READ ONLY([Table]) //  Change state to read-only

您正在创建新记录还是更新现有记录?我正在创建新记录。您使用的是4D服务器还是4D单用户?另外,您收到的错误消息是什么?