以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]跨表填充,增加判断条件后死机(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=48650) |
-- 作者:yyzlxc -- 发布时间:2014/4/2 18:11:00 -- [求助]跨表填充,增加判断条件后死机(已解决) 一段代码跨表填充: For Each dr As DataRow In DataTables("在册名单").DataRows Dim pr As DataRow If dr.IsNull("编号") Then dr("单位") = Nothing Else pr = DataTables("变动日期").Find("编号 = \'" & dr("编号") & "\' And 变动日期 <= \'" & rq & "\'","变动日期 Desc") If pr IsNot Nothing Then dr("监区") = pr("监区") dr("单位") = pr("单位") dr("变动日期") = pr("变动日期") End If End If Next 运行后死机,折腾半天,找到规律:先将代码改成 pr = DataTables("变动日期").Find("编号 = \'" & dr("编号") & "\'") 运行正常,然后再改回原来的代码,运行达到效果,但是重新打开项目,在运行原来的代码,依旧死机。 现在用一个笨办法,就是先运行短代码,然后运行长代码,就不会出现死机,但感觉不爽,请各位老师帮助支招,谢谢。 现在运行的代码如下: For Each dr As DataRow In DataTables("在册名单").DataRows Dim pr As DataRow If dr.IsNull("编号") Then dr("单位") = Nothing Else pr = DataTables("变动日期").Find("编号 = \'" & dr("编号") & "\'") If pr IsNot Nothing Then dr("监区") = pr("监区") dr("单位") = pr("单位") dr("变动日期") = pr("变动日期") End If End If Next For Each dr As DataRow In DataTables("在册名单").DataRows Dim pr As DataRow If dr.IsNull("编号") Then dr("单位") = Nothing Else pr = DataTables("变动日期").Find("编号 = \'" & dr("编号") & "\' And 变动日期 <= \'" & rq & "\'","变动日期 Desc") If pr IsNot Nothing Then dr("监区") = pr("监区") dr("单位") = pr("单位") dr("变动日期") = pr("变动日期") End If End If Next [此贴子已经被作者于2014-4-3 13:57:42编辑过]
|
-- 作者:e-png -- 发布时间:2014/4/2 19:58:00 -- 呵呵,也有第二呀···· ,确有其事,希望狐爸找找原因。。。。 |
-- 作者:yyzlxc -- 发布时间:2014/4/2 20:01:00 -- 做了一个案例,先单击”短代码“按钮,运行正常,然后单击”长代码“按钮,运行正常,符合需要的效果。 但是打开项目后,如果直接单击”长代码“按钮,就会死机,请各位老师指教,谢谢!! [此贴子已经被作者于2014-4-2 20:02:20编辑过]
|
-- 作者:e-png -- 发布时间:2014/4/2 21:07:00 -- 我碰到过lz的问题,这样弄一下就ok了: ························ ···························· |
-- 作者:有点甜 -- 发布时间:2014/4/2 21:29:00 -- 效率问题,建议用sql语句来做,参考代码
\'日期转换
Dim cmd As new SQLCommand
Tables("在册名单").Sort = "单位,编号" |
-- 作者:yyzlxc -- 发布时间:2014/4/3 9:07:00 -- 谢谢e-png和有点甜两位老师的回复和指教! 两种方法试了一下,e-png老师的方法好像不见效,而有点甜老师的sql语句有点看不懂,难以理解,执行的效果可能会有问题: 1、变动日期的条件是<=,式中为=? 2、取值为变动日期的倒序,式中好像没有体现? 需要在完整的项目中进行测试。还是要再次感谢两位老师的热情帮助!! 另:跨表填充的代码比较直观,效率也可以接受,使用率很高,出现上述的问题,应该要想办法解决。 |
-- 作者:e-png -- 发布时间:2014/4/3 9:12:00 -- 呵呵,甜老师:快不了多少。。。 |
-- 作者:yyzlxc -- 发布时间:2014/4/3 9:18:00 -- e-png老师,您的方法试了一下,好像不见效,还是我的理解问题?请指教,谢谢。 |
-- 作者:yyzlxc -- 发布时间:2014/4/3 10:39:00 -- Bin老师,能否帮助看一下,谢谢! |
-- 作者:有点甜 -- 发布时间:2014/4/3 10:46:00 -- 回复6楼,应该是没有问题的。但是这种sql的方法,你使用之前,先把数据来源表保存才行,这样数据才正确。
效率的话,是因为这个问题,你可以变通这改一下
http://www.foxtable.com/help/topics/2219.htm
|