Foxtable(狐表)用户栏目专家坐堂 → 请哪位高手帮忙看一下错在哪里?


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

主题:请哪位高手帮忙看一下错在哪里?

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
请哪位高手帮忙看一下错在哪里?  发帖心情 Post By:2013/12/8 15:48:00 [只看该作者]

我想在订单明细里的产品批号能自动生成,订单明细里的订单日期设为当天。代码如下:

If e.DataCol.Name = "订单日期" Then
    If e.DataRow.IsNull("订单日期") Then
        e.DataRow("产品批号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("订单日期"),"yyyyMMdd") '取得编号的8位前缀
        If e.DataRow("产品批号").StartsWith(bh) = False '如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(产品批号)","订单日期 = #" & e.DataRow("订单日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(9,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("产品批号") = bh & "-" & Format(idx,"000")
        End If
    End If
End If
我是在表的事件datacolschaned里设的以上代码?但运行不了。错误如下:.NET Framework 版本:2.0.50727.7905
Foxtable 版本:2013.10.14.1
错误所在事件:表,订单明细表,DataColChanged
详细错误信息:
调用的目标发生了异常。
startIndex 不能大于字符串长度。
参数名: startIndex
怎么也想不明白,我在其它表上用这个方法都行的,请高手指点一下!


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/12/8 17:07:00 [只看该作者]

If e.DataCol.Name = "订单日期" Then
    If e.DataRow.IsNull("订单日期") Then
        e.DataRow("产品批号") = Nothing
    Else
        Dim bh As String = Format(e.DataRow("订单日期"),"yyyyMMdd") '取得编号的8位前缀
        If e.DataRow("产品批号").StartsWith(bh) = False '如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(产品批号)","订单日期 = #" & e.DataRow("订单日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大编号
            If len(max) = 12 Then '如果存在最大编号且编号长度正确
                idx = CInt(max.Substring(9,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("产品批号") = bh & "-" & Format(idx,"000")
        End If
    End If
End If

 回到顶部