度量快速开发平台-专业、快速的软件定制快开平台

标题: 关于有他表关联的字段,赋值时候存在的字符转数字错误的解决方法 [打印本页]

作者: 王爱东    时间: 2020-6-13 19:54
标题: 关于有他表关联的字段,赋值时候存在的字符转数字错误的解决方法
   快速开发平台中,客户进行二次构建开发,有一个注册人员的功能,在选中一个岗位后,点击注册人员,发现有时候正常,有时候不正常。不正常的时候出现的错误如下:


failed to convert parameter value from a string to  a int32.
记录部件1.SetFieldValue("GANGWEIID",Me.GetParam("岗位ID"))

通过这个错误代码发现,是给记录部件的GANGWEIID字段赋值时,出现的,于是  msgbox(Me.GetParam("岗位ID") ) 查看传入的是什么,结果测试的时候是一个数字。那就奇怪了,为什么偶尔还出现这种字符转化整数错误呢?

经过排查,GANGWEIID这个字段,设置了他表关联,从部门岗位表关联过来,并且设置了关联条件。
之前的代码是:

        '设置所属岗位的他表业务表变量,并设置默认岗位ID
        zd= 记录部件1.GetColumnBizTable("GANGWEIID")
        zd.SetVaribleValue("orgidstr",记录部件1.GetFieldValue("SUOSHUBUMENID"))       
        记录部件1.SetFieldValue("GANGWEIID",cint(Me.GetParam("岗位ID")))


上面代码是先对这个字段的他表变量赋值了,然后再对这个字段设置值,就可能引起上面图的问题。

改正后的代码:


        记录部件1.SetFieldValue("GANGWEIID",cint(Me.GetParam("岗位ID")))
        '设置所属岗位的他表业务表变量,并设置默认岗位ID
        zd= 记录部件1.GetColumnBizTable("GANGWEIID")
        zd.SetVaribleValue("orgidstr",记录部件1.GetFieldValue("SUOSHUBUMENID"))       
       


先给字段赋值,在给字段的他表变量设置值。

然后就正常了。


作者: 王爱东    时间: 2020-6-13 19:55
这个可能要了解清楚他表关联变量赋值时候与字段赋值的执行情况。
作者: 王爱东    时间: 2020-6-13 19:55
这个问题我也排查了好久,才找到。是偶尔出现的。
作者: 万望    时间: 2020-6-13 20:47
还有这种啊
作者: 张兴康    时间: 2020-6-14 13:53
以后得注意些了
作者: 王爱东    时间: 2020-6-19 16:42
可能是执行的先后上有一定影响。
作者: 刘亚东    时间: 2020-6-19 18:04
还有这一手哦
作者: 同QQ名    时间: 2020-6-25 09:48
应该是因为当设置他表关联变量值的时候,系统会刷新他表关联的业务表,并将当前的字段的Value值在查询结果中进行检索,因为这时还没有设置字段的Value值,所以Value值为"",而Value值的类型为整数,所以系统就将""转化成整数,当然转化不成功,所以会报错。那为什么有的地方Value值没有填也不会报错呢,应该是在新增或修改数据的时候,设置了他表关联的字段的Value值虽然没有写,但实际的值是null,null是没有类型的,所以也不会出现类型转化问题,只是在检索的时候没有检索到而值而已。至于什么时候Value为"",什么时候为null,只有具体分析了
作者: 王爱东    时间: 2020-6-25 17:59
同QQ名 发表于 2016-1-25 09:48
应该是因为当设置他表关联变量值的时候,系统会刷新他表关联的业务表,并将当前的字段的Value值在查询结果 ...

不错不错,理解得很深入了。基本上是这样的。他表关联确实是很复杂的,很多地方场景不同,比如A场景需要这样设置,B场景需要那样设置,AB本身可能有冲突的。这个功能规划我们自己都分析了很久。目前是常用的都可以很好的使用。




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2