Foxtable(狐表)用户栏目专家坐堂 → [求助]双精度的nothing等于空字符“” :已解决,是电脑问题


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

主题:[求助]双精度的nothing等于空字符“” :已解决,是电脑问题

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[求助]双精度的nothing等于空字符“” :已解决,是电脑问题  发帖心情 Post By:2017/6/27 11:28:00 [只看该作者]

DataColChanging事件代码:

If e.DataCol.IsNumeric Then
  If
e.NewValue = 0 Then
    e.NewValue = Nothing
  End
if
End
If

CurrentTableChanged事件代码:

Case "项目借款"

  Dim ta As New DropTreeBuilder

  ta.SourceTable = DataTables("项目管理")

  ta.TreeCols = "部门名称|借款人|项目名称"

  ta.SourceCols = "项目名称|合同额|营业额|责任成本|匹配成本|支出合计|到款总计|借款余额|项目经理" '指定数据来源列

  ta.ReceiveCols = "项目名称|合同额|完成产值|预算成本|匹配成本|开累支出|累计到款|借款余额|项目经理" '指定数据接收列

  ta.TreeSort = "部门名称,借款人,项目名称"

  CurrentTable.Cols("项目名称").DropTree = ta.Build()


问题现象:

  在项目借款表中选择项目名称时,如果第一次选择的项目借款余额不为0,则改选借款余额为0的项目时,会出现下列错误,且原来的借款余额不会清0。实际上,所有的数值列引用都有这个问题。

  从字符串 "" 到类型 "Double" 的转换无效


解决办法:

1、修改代码为:If e.DataCol.IsNumeric andalso e.DataCol.name<>"借款余额" Then

但引用的数值列越多,上述代码就越长,数据表中显示0值就越多,因而越难看。

2、借款余额列为空白的改为数值0


求助:

这是bug吗?


[此贴子已经被作者于2017/6/28 15:15:06编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 12:35:00 [只看该作者]

If e.DataCol.IsNumeric Then
  If val(e.NewValue) = 0 Then
    e.NewValue = Nothing
  End If
End If


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/6/27 14:15:00 [只看该作者]

对于数值列, val(e.NewValue) 与e.NewValue是一样的。
所以,即使修改为2楼代码,错误提示还是一样的。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 16:00:00 [只看该作者]

 测试,不会报错。请上传实例测试。

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/6/27 20:49:00 [只看该作者]

多个数值表达式列的表达式中用到了null,而null被视为字符串,所以,不得不弃用null,显示所有的0,虽然不好看,但至少可以让这个功能完美了。


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

上实例测试

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/6/28 12:05:00 [只看该作者]

表A为原始数据表,其<营业额总计>为包含null的公式
表B的<项目名称>列中选数据齐全的“项目1”没问题,选缺少数据的“项目2”就有问题

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数值问题.foxdb

[此贴子已经被作者于2017/6/28 12:07:49编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/28 12:35:00 [只看该作者]

 你给的例子,测试没问题。

 

 再有就是,全局表事件需要开启的 DataTables("表B").GlobalHandler.DataColChanging = True


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2017/6/28 15:14:00 [只看该作者]

谢谢。我现在测试也正常了,原来的一些其它问题也突然没了。

 回到顶部