错误61在编译的数据库中无法修改数组类型

时间:2015-08-18 07:11:35

标签: arrays web-services soap 4d-database

我有一个4D服务器(我们称之为4D服务器1),它通过SOAP Web服务将BLOB发送到另一个4D服务器(4D服务器2)。 BLOB由数组组成,解析后保存到相应的表中。

有时(很少)BLOB无法解析,然后我们登录到表。指出的错误是:

  

错误61:无法在已编译的数据库中修改数组类型。

如何确定BLOB中的哪个数组导致错误?
我采取了哪些措施来解决问题?

2 个答案:

答案 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位置:

  • 14 Real array
  • 15整数数组
  • 16 Longint数组
  • 17日期数组
  • 18文本数组
  • 19 Picture array
  • 21 String array
  • 22布尔数组
  • 39对象数组

cfr http://doc.4d.com/4Dv14/4D/14.4/Type.301-2512277.en.html