Foxtable(狐表)用户栏目专家坐堂 → 代码问题。。求纠正


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

主题:代码问题。。求纠正

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


加好友 发短信
等级:婴狐 帖子:99 积分:720 威望:0 精华:0 注册:2013/11/20 21:37:00
代码问题。。求纠正  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/11 15:56:00 [只看该作者]

B没有值吧

建议您用这个方法:
http://www.foxtable.com/help/topics/1485.htm

先找出是哪一行出错,然后分析原因,搞不定,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。


另外新手建议尽量不要使用这种链式编程,不利于你排错,也容易造成混乱.

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


加好友 发短信
等级:婴狐 帖子:99 积分:720 威望:0 精华:0 注册:2013/11/20 21:37:00
  发帖心情 Post By:2014/2/11 16:08:00 [只看该作者]

就是第一行出错,如果有第一行的话。。后面新增就不会出错
代码在上面已经贴出来了


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/11 16:27:00 [只看该作者]

你看看 e.DataRow("订单编号") 是否有值

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:99 积分:720 威望:0 精华:0 注册:2013/11/20 21:37:00
  发帖心情 Post By:2014/2/13 23:14:00 [只看该作者]

有值。。5楼这个代码。不会出错。但是新增第一行不会自动生成生产编号。(为空)如果第一行生产编号有值。就能正常生成第二行

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/2/13 23:17: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 if e.datatable.datarows.count = 0 then
           e.DataRow("生产编号")="123456"
    end if
End If
[此贴子已经被作者于2014-2-13 23:20:02编辑过]

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


加好友 发短信
等级:婴狐 帖子:99 积分:720 威望:0 精华:0 注册:2013/11/20 21:37:00
  发帖心情 Post By:2014/2/14 0:09:00 [只看该作者]

还是一样。第一行新增    生产编号为空。    第一行生产编号有值。。新增第2行的时候就正常了

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/2/14 8:43:00 [只看该作者]

直接上例子吧,纸上谈兵解决不了问题.  都折腾了8楼了.

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

 回到顶部
总数 11 1 2 下一页