Foxtable(狐表)用户栏目专家坐堂 → [求助]代码执行中会报出错误


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

主题:[求助]代码执行中会报出错误

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


加好友 发短信
等级:九尾狐 帖子:2191 积分:18007 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/7/6 22:08:00 [只看该作者]

先点TbMod表的第一行的C,弹出窗口,会依次显示系统响应代码。一般第一行的弹窗不会显示错误。
当所有代码执行结束后,关闭弹窗。

再点TbMod表的第二行的C,弹出窗口……

如果不报错,再点TbMod表的第三行的C,弹出窗口。如果不出意外的话,会报错。

如果还不报错,再点第四行……

我在测试的时候,点TbMod表的第二行的C,在执行过程中就报错了。

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


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

.NET Framework 版本:2.0.50727.8784
Foxtable 版本:2018.3.9.1
错误所在事件:自定义函数UnitWBS
详细错误信息:
调用的目标发生了异常。
已添加了具有相同键的项。

应该是组合统计结果有问题。GroupTableBuilder、SQLGroupTableBuilder、SQLGroupTableBuilder三种不同的东西组合可能会有问题,一般是同一种类型的进行组合

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


加好友 发短信
等级:九尾狐 帖子:2191 积分:18007 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/7/6 22:55:00 [只看该作者]

不会啊。我这里没有出现过这个问题。
你是不是没有删除冗余项啊。TbWL\TbModD\TbModWBSD三个表都要删除冗余项,否则肯定会报错
上次我也曾经报这个错,经过检查,是表中有数据冗余导致的。

把从这里开始的代码注释掉,再试也行啊。
MessageBox.Show("开始构建UnitWBS")
Functions.Execute("UnitWBS",4,1)

我每次执行完这里,就开始报错了。因为这一句没有执行
            MessageBox.Show("开始构建UnitWBS")


MessageBox.Show("开始给涉及WBSDR赋值,需要计算的数据=" & owbs.Count & "很奇怪的是执行到这里之后,就开始报错,问题在哪里呢?")
[此贴子已经被作者于2018/7/6 23:04:00编辑过]

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


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

没看懂你的逻辑。怎么样的数据算是冗余项?

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


加好友 发短信
等级:九尾狐 帖子:2191 积分:18007 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/7/6 23:05:00 [只看该作者]

TbWL表中,ProID、WBSID、LID三列的值不能完全相同
比如TbModD中,ProID、ModID、WLID中,三列的值不能完全相同,。
TbModWBSD中,ProID、ModID、WBSID三列的值不能完全相同。

如果完全相同,则就是重复数据,需要删除
[此贴子已经被作者于2018/7/6 23:39:01编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2191 积分:18007 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/7/7 9:51:00 [只看该作者]

需求并不复杂。
就是把TbMod所对应的TbModD和TbModWBSD的有关信息,展示在一个表中,用于编辑。
本来还可以在窗口中用两个表(一个绑定TbModWBSD,一个绑定TbModD)来做,但是在用和看的时候,并不方便。

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


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

没搞明白你的逻辑。自己使用日志跟踪一下,处理到那一句代码有问题?然后处理到哪个表哪一个数据有问题,对比看看这个数据有什么不一样

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


加好友 发短信
等级:九尾狐 帖子:2191 积分:18007 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/7/7 11:41:00 [只看该作者]

操作步骤:
1、打开项目,然后在TbMod表中增加任意4-10行数据都可以,注意Replydate列和C列不能为空。
2、在命令窗口依次执行三个自定义函数“随机增加TbWL表数据“、”随机增加TbModD"、"随机增加TbModWBSD"
3、选中“TbMod"表,点第一行的C列,开始执行弹窗和加载数据界面。不用理会正常的弹窗提示,一般第一行不会报错的。最终显示代码执行的耗时提示综合信息后,关闭最终的界面展示窗口。
4、选中“TbMod"表,依次点第二行的C列、第三行的C列……,我在测试的时候,点到第三行的时候就出现一个报错窗口了。
问题在这里
            MessageBox.Show("开始给涉及WBSDR赋值,需要计算的数据=" & owbs.Count & "很奇怪的是执行到这里之后,就开始报错,问题在哪里呢?")
            systemready = False
            For Each dr As DataRow In owbs
                dr("Temp") = True
            Next
            systemready = True
            
           
            MessageBox.Show("开始构建UnitWBS")   ‘这一行提示信息没有显示出来,很显然应当是上面这一段代码出问题了
            Functions.Execute("UnitWBS",4,1)  ‘问题应当不在这里
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:pm2018.foxdb



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


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

貌似表没有这个列呀:Temp

在什么地方添加的?

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


加好友 发短信
等级:九尾狐 帖子:2191 积分:18007 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/7/7 12:04:00 [只看该作者]

用代码加的临时列,在窗口打开的时候加的

 回到顶部
总数 39 上一页 1 2 3 4 下一页