我有一个4D服务器(我们称之为4D服务器1),它通过SOAP Web服务将BLOB发送到另一个4D服务器(4D服务器2)。 BLOB由数组组成,解析后保存到相应的表中。
有时(很少)BLOB无法解析,然后我们登录到表。指出的错误是:
错误61:无法在已编译的数据库中修改数组类型。
如何确定BLOB中的哪个数组导致错误?
我采取了哪些措施来解决问题?
答案 0 :(得分:0)
我们将Arrays和Variables作为使用ObjectTools创建的BLOB发送。有更好的(错误 - )记录和处理例程。我们从未腐蚀阵列。
http://www.aparajitaworld.com/objecttools/ ObjectTools是一个4th Dimension插件,它提供了一组允许您创建对象的例程:一个实体,您可以在其中存储和检索不同类型的任意数量的数据。
答案 1 :(得分:0)
要提取数组,您正在使用一些BLOB TO VARIABLE命令,如:
$vlOffset:=0
BLOB TO VARIABLE($blob;$array1;$vlOffset)
BLOB TO VARIABLE($blob;$array2;$vlOffset)
BLOB TO VARIABLE($blob;$array3;$vlOffset)
$ vlOffset将包含Blob中变量的位置开始。 blob的内部结构是: RVLB + Type + Var + Type + Var ..
所以你应该尝试检查Type:第一个位于第4位,其他位于$ vlOffset位置:
cfr http://doc.4d.com/4Dv14/4D/14.4/Type.301-2512277.en.html