以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 代码问题。。求纠正 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=45816) |
|
-- 作者:wzl0927 -- 发布时间:2014/2/11 15:48:00 -- 代码问题。。求纠正 If e.DataCol.name="订单编号" Then Dim b As String = e.DataTable.Compute("max(生产编号)","订单编号=\'" & e.DataRow("订单编号") & "\'") e.DataRow("生产编号")=e.DataRow("订单编号") & Convert.ToChar(Convert.ToInt32(b.SubString(b.length-1,1).ToCharArray()(0))+1) End If 关联新增第一行是报错 .NET Framework 版本:2.0.50727.4984 Foxtable 版本:2013.10.14.1 错误所在事件:表,生产进度表,DataColChanged 详细错误信息: 调用的目标发生了异常。 未将对象引用设置到对象的实例。 如果有第一行如 20140211001a 新增第2行的时候就不会出错
|
|
-- 作者:Bin -- 发布时间:2014/2/11 15:56:00 -- B没有值吧 建议您用这个方法: http://www.foxtable.com/help/topics/1485.htm 先找出是哪一行出错,然后分析原因,搞不定,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。 另外新手建议尽量不要使用这种链式编程,不利于你排错,也容易造成混乱.
|
|
-- 作者:wzl0927 -- 发布时间:2014/2/11 16:08:00 -- 就是第一行出错,如果有第一行的话。。后面新增就不会出错 代码在上面已经贴出来了 |
|
-- 作者:Bin -- 发布时间:2014/2/11 16:27:00 -- 你看看 e.DataRow("订单编号") 是否有值 |
|
-- 作者:狐狸爸爸 -- 发布时间:2014/2/11 16:28:00 -- If e.DataCol.name="订单编号" Then
Dim b As String = e.DataTable.Compute("max(生产编号)","订单编号=\'" & e.DataRow("订单编号") & "\'")
if b > "" then
e.DataRow("生产编号")=e.DataRow("订单编号") & Convert.ToChar(Convert.ToInt32(b.SubString(b.length-1,1).ToCharArray()(0))+1)
end if
End If
|
|
-- 作者:wzl0927 -- 发布时间:2014/2/13 23:14:00 -- 有值。。5楼这个代码。不会出错。但是新增第一行不会自动生成生产编号。(为空)如果第一行生产编号有值。就能正常生成第二行 |
|
-- 作者:有点甜 -- 发布时间:2014/2/13 23:17:00 -- 这样改一下,修改了一下
[此贴子已经被作者于2014-2-13 23:20:02编辑过]
|
|
-- 作者:wzl0927 -- 发布时间:2014/2/14 0:09:00 -- 还是一样。第一行新增 生产编号为空。 第一行生产编号有值。。新增第2行的时候就正常了 |
|
-- 作者:Bin -- 发布时间:2014/2/14 8:43:00 -- 直接上例子吧,纸上谈兵解决不了问题. 都折腾了8楼了. |
|
-- 作者:狐狸爸爸 -- 发布时间:2014/2/14 8:57:00 -- If e.DataCol.name="订单编号" Then
Dim b As String = e.DataTable.Compute("max(生产编号)","订单编号=\'" & e.DataRow("订单编号") & "\'")
if b > "" then
e.DataRow("生产编号")=e.DataRow("订单编号") & Convert.ToChar(Convert.ToInt32(b.SubString(b.length-1,1).ToCharArray()(0))+1)
else
这里写不存在最大编号时的代码,也就是此订单的第一个生成编号
end if
End If
|