1

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

任何人都可以帮我解决确切的问题吗?它是 4D 还是需要合并到我的 SOAP 服务中的东西。

4

1 回答 1

2

通常您应该UNLOAD RECORD在修改记录后使用。

但是一条记录可能会被锁定很长时间,例如,如果客户打开一个对话框来修改它,例如并保持它打开。应该避免直接修改用户经常使用和修改的记录,但是如果需要这样做,更通用的方法是等到记录可写:

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
于 2018-09-15T22:11:23.083 回答