以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求助!出现一个错误不明白什么意思 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=8904) |
||||
-- 作者:yankunhao -- 发布时间:2010/12/23 14:02:00 -- 求助!出现一个错误不明白什么意思 做了个功能窗口,期中的的个按钮代码如下:
Dim cj =e.Form.Controls("ComboBox1").Value
执行一次上面的代码,没出错,如果第二次执行就出错提示如下图所示的信息!
我怀疑是红色部份的代码有问题,但测试了好几次都不成功,想不明白到底是什么原因。 [此贴子已经被作者于2010-12-23 14:06:31编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/12/23 14:44:00 -- 下面的代码并没有判断dr1是否找到:
dr1 = DataTables("订单生产安排供需流水账").Find("[会计期间] = \'" & cj & "\' And [料品编码] = \'" & dr("料品编码") & "\'and [_sortkey] < " & dr("_sortkey") ,"[日期] Desc, [_SortKey] Desc") 当然错误不一定在这里,类似的检查都应该判断的,建议你看看:
http://help.foxtable.com/topics/1485.htm
http://help.foxtable.com/topics/2044.htm
|
||||
-- 作者:yankunhao -- 发布时间:2010/12/23 14:58:00 -- 以下是引用狐狸爸爸在2010-12-23 14:44:00的发言:
下面的代码并没有判断dr1是否找到:
dr1 = DataTables("订单生产安排供需流水账").Find("[会计期间] = \'" & cj & "\' And [料品编码] = \'" & dr("料品编码") & "\'and [_sortkey] < " & dr("_sortkey") ,"[日期] Desc, [_SortKey] Desc") 当然错误不一定在这里,类似的检查都应该判断的,建议你看看:
http://help.foxtable.com/topics/1485.htm
http://help.foxtable.com/topics/2044.htm
我想不是这个问题,当然应该加上判断是最好的,
我在测代码的过程中发现:如果在结转完成后不加上锁定行和解锁的那部份功能就没问题; 我是后来加上等结转完后去锁定那些期初结存的行的代码时发现问题的; 发现问题后,我想是不是结转完成后再作一次同样的结转的过程在有先删除那些之前结转的数据行,但因为那些数行之前已经被锁定而导致删除出错了呢? 然后我在前面加上解锁的动作,但还是不行,所以想不明白啊!真痛苦。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/12/23 15:03:00 -- 呵呵,那就分别删除你怀疑的那两段代码,看看问题到底在那一段。 这个没有啥技巧的,只能先逐段排除,再逐行检查,找出问题。
还有:
Dim cj =e.Form.Controls("ComboBox1").Value
是不是应该改为:
Dim cj As String =e.Form.Controls("ComboBox1").Value
[此贴子已经被作者于2010-12-23 15:05:08编辑过]
|
||||
-- 作者:yankunhao -- 发布时间:2010/12/23 15:30:00 -- 测试是在:如果结转成功一次,再去做相同的结转是就出现,是在作第二次结转时要去删除刚才结转后的那些期初数据时出问题的,但不知如何解决! |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/12/23 15:35:00 -- 做个示例项目,带上数据并写上代码发上来。 [此贴子已经被作者于2010-12-23 15:35:27编辑过]
|
||||
-- 作者:yankunhao -- 发布时间:2010/12/23 17:10:00 -- 贺先生,帮我检查一下吧 我在 项目中的全部表的BeforeLoad中按照帮助的例子也做了一段代码,也出现了点问题,现在上传这个项目给你。麻烦帮我一起看看。
Select Case e.DataTable.Name
密码:123 [此贴子已经被作者于2010-12-23 17:16:13编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/12/23 17:30:00 -- 其实我在2楼就告诉你答案了,我将你的代码改为:
dr1 = DataTables("订单生产安排供需流水账").Find("[会计期间] = \'" & cj & "\' And [料品编码] = \'" & dr("料品编码") & "\'and [_sortkey] < " & dr("_sortkey") ,"[日期] Desc, [_SortKey] Desc") 就不再提示你所说的错误了。
为啥就不一开始就按照我所说的测试一下呢?
|
||||
-- 作者:yankunhao -- 发布时间:2010/12/23 17:39:00 -- 以下是引用狐狸爸爸在2010-12-23 17:30:00的发言:
其实我在2楼就告诉你答案了,我将你的代码改为:
dr1 = DataTables("订单生产安排供需流水账").Find("[会计期间] = \'" & cj & "\' And [料品编码] = \'" & dr("料品编码") & "\'and [_sortkey] < " & dr("_sortkey") ,"[日期] Desc, [_SortKey] Desc") 就不再提示你所说的错误了。
为啥就不一开始就按照我所说的测试一下呢?
真不好意思,因为我之前没加上这个代码的时候是正常的,且当时我去做BeforeLoad的相关代码,且做过程中也出现了问题,所以就没按你所说的去做。 现在我测试真的是这个问题,但我想不明白,为什么当初我没加上锁定行的相关代码时是正常的呢? 另外BeforeLoad中的代码又是什么原因呢? |
||||
-- 作者:狐狸爸爸 -- 发布时间:2010/12/23 17:44:00 -- 当初没有,是因为当初有符合条件的数据, dr1不是Nothing,数据变化后,dr1就可能找不到符合条件的行。 BeforeLoad我不明白你有啥问题,你可以在后面加一行检查一下代码的执行结果:
Select Case e.DataTable.Name MessageBox.Show(e.DataTable.Name & "|" & e.DataTable.LoadFilter ) [此贴子已经被作者于2010-12-23 17:52:13编辑过]
|