以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求纠正代码 为什么不能显示编号为20140901-001而是显示了00010101-001  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=56242)

--  作者:李孝春
--  发布时间:2014/9/1 20:00:00
--  求纠正代码 为什么不能显示编号为20140901-001而是显示了00010101-001

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140901200359.jpg
图片点击可在新窗口打开查看



Case "门店名称"
        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
                Dim mendian As String
                mendian = GetPY( e.DataRow("门店名称"), True)
                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("门店单号") = mendian & bh & "-" & Format(idx,"000")
            End If
        End If

[此贴子已经被作者于2014-9-1 20:04:05编辑过]

--  作者:有点甜
--  发布时间:2014/9/1 20:03:00
--  
 你的【录入时间】没有赋值
--  作者:李孝春
--  发布时间:2014/9/1 20:05:00
--  
录入时间自动赋值的  原来是CASE中忽视了录入时间变动后的执行 谢谢老师提醒
[此贴子已经被作者于2014-9-1 20:06:29编辑过]

--  作者:李孝春
--  发布时间:2014/9/1 20:22:00
--  
老师 继续求解:


Case "门店名称","录入时间"
        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
                Dim mendian As String
                mendian = GetPY( e.DataRow("门店名称"), True)
                max = e.DataTable.Compute("Max(门店单号)","录入时间 = #" & e.DataRow("录入时间") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大客户编码
                If max > "" Then \'如果存在最大客户编码
                    idx = CInt(max.Substring(9,3)) + 1 \'获得最大客户编码的后三位顺序号,并加1    在没有加入门店拼音(mendian)之前这个代码可行 加入之后由于门店简拼字母是三个级以上不等会提示错误  
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("门店单号") = mendian & bh & "-" & Format(idx,"000")
            End If
        End If


错误代码如下:
.NET Framework 版本:2.0.50727.6419
Foxtable 版本:2014.7.26.1
错误所在事件:表,门店销售单,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“1-0”到类型“Integer”的转换无效。
输入字符串的格式不正确。

[此贴子已经被作者于2014-9-1 20:22:30编辑过]

--  作者:有点甜
--  发布时间:2014/9/1 20:24:00
--  

idx = CInt(max.Substring(9,3)) + 1 \'获得最大客户编码的后三位顺序号,并加1

 

改成

 

idx = CInt(max.Substring((mendian & bh & "-").Length,3)) + 1 \'获得最大客户编码的后三位顺序号,并加1

 

[此贴子已经被作者于2014-9-1 20:25:25编辑过]

--  作者:李孝春
--  发布时间:2014/9/1 20:29:00
--  回复:(有点甜)idx = CInt(max.Substring(9,3)) + 1...
有点甜老师 现在没有报错了 但是末尾编号永远是001
--  作者:有点甜
--  发布时间:2014/9/1 20:32:00
--  

max = e.DataTable.Compute("Max(门店单号)","录入时间 = #" & e.DataRow("录入时间") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大客户编码

 

改成

 

max = e.DataTable.Compute("Max(门店单号)","门店单号 like \'" & mendian & bh & "-"  & "%\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大客户编码


--  作者:李孝春
--  发布时间:2014/9/1 20:36:00
--  回复:(有点甜)max = e.DataTable.Compute("Max(门店...
问题依旧 有点甜老师
--  作者:有点甜
--  发布时间:2014/9/1 20:37:00
--  
 代码不可能有问题,你加入msgbox弹出对应的值看一下哪里错了。
--  作者:李孝春
--  发布时间:2014/9/1 20:40:00
--  回复:(有点甜)?代码不可能有问题,你加入msgb...
max弹出的值为空 然后又弹出一个当前编号  其他就没了
[此贴子已经被作者于2014-9-1 20:42:17编辑过]