Foxtable(狐表)用户栏目专家坐堂 → [求助]下拉窗口选择数据报错


  共有2067人关注过本帖树形打印复制链接

主题:[求助]下拉窗口选择数据报错

帅哥哟,离线,有人找我吗?
huangjiacai
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
[求助]下拉窗口选择数据报错  发帖心情 Post By:2019/8/20 10:06:00 [只看该作者]

好奇怪,当初写代码的时候写完试运行没问题,现在发布项目出来,下拉窗口第一次选中记录不会报错,但是第二次选中就开始报错了,求助。下拉窗口的代码是参考文档写的。
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/8/20 10:24:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 10:27:00 [只看该作者]

检查上面错误提示对应的事件代码

 回到顶部
帅哥哟,离线,有人找我吗?
huangjiacai
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
  发帖心情 Post By:2019/8/20 10:32:00 [只看该作者]

我看了下报错的提示,好像是说我赋值的字段超出字符类型的长度,这个要怎么解决呢,数据类型好像改不了,只能字符型,单纯设置“位数”好像不起作用。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 10:58:00 [只看该作者]

和长度没有关系,第一个错误是说引用了空对象,也就是没有判断是否是空值

第二个错误有是条件表达式或者赋值有问题,把字符串值给整数列了

 回到顶部
帅哥哟,离线,有人找我吗?
huangjiacai
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
  发帖心情 Post By:2019/8/20 11:28:00 [只看该作者]

With Tables("预算使用申请表").Current
'    Dim r As Row = Tables("预算使用申请表").Current
    If .IsNull("预算编号") = False Then
        Dim r As Row = Tables("预算使用申请表").Current
        Dim dr As DataRow
        Dim dr1 As DataRow
        dr = DataTables("基础预算表").Find("[预算编号] = '" & Tables("预算使用申请表").Current("预算编号") & "'")
        r("预算项目名称") = dr("项目名称")
        r("预算金额") = dr("预算金额")
        dr1 = DataTables("预算使用情况汇总表").Find("[预算编号] = '" & Tables("预算使用申请表").Current("预算编号") & "'")
        r("已使用金额") = dr1("预算发生数")
        r("已使用占比") = dr1("预算完成率")
        r("预算使用说明") = dr1("预算使用说明")
        r("一级科目") = dr1("一级科目")
        r("二级科目") = dr1("二级科目")
        r("三级科目") = dr1("三级科目")
        r("四级科目") = dr1("四级科目")
        r("五级科目") = dr1("五级科目")
    End If

end with

 

是不是我在每一次赋值前要先加判断,还是说在 = 后面直接加上表达式就行了呢


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 11:41:00 [只看该作者]

在是current之前必须先判断current是否有值,比如表格没有行:http://www.foxtable.com/webhelp/topics/0445.htm

if Tables("预算使用申请表").Current isnot nothing 
......

同样道理find查询如果没有结果,dr就是空值
dr = DataTables("基础预算表").Find("[预算编号] = '" & Tables("预算使用申请表").Current("预算编号") & "'")
if dr isnot nothing then
......

 回到顶部
帅哥哟,离线,有人找我吗?
huangjiacai
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
  发帖心情 Post By:2019/8/20 11:49:00 [只看该作者]

谢谢老师,还有个疑问,我行有数据,但是部分列是空的,这个时候赋值的话一样会报错,是不是每条表达式都要加判断当前行某一列的值是否为空呀

 回到顶部
帅哥哟,离线,有人找我吗?
有点酸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2019/8/20 13:58:00 [只看该作者]

你是怎么赋值的呢,按道理任何类型的列,都可以接受空值的。
遇到错误,可以用这个方法调试一下:
http://www.foxtable.com/webhelp/topics/1485.htm
[此贴子已经被作者于2019/8/20 13:58:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
huangjiacai
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
  发帖心情 Post By:2019/8/20 17:48:00 [只看该作者]

老师,我想问一下,是不是位数也要一样呢?因为我看了每个表的表结构,数据类型基本上都是字符型的,唯一的区别就是16位,32位的区别,不知道为什么会报错

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/20 20:24:00 [只看该作者]

如果长度不足,比如列指定最大长度为16个字符,赋值超过16个字符肯定出错。

 回到顶部
总数 12 1 2 下一页