Foxtable(狐表)用户栏目专家坐堂 → 求纠正代码 为什么不能显示编号为20140901-001而是显示了00010101-001


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

主题:求纠正代码 为什么不能显示编号为20140901-001而是显示了00010101-001

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求纠正代码 为什么不能显示编号为20140901-001而是显示了00010101-001  发帖心情 Post By:2014/9/1 20:00:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
  发帖心情 Post By:2014/9/1 20:05:00 [显示全部帖子]

录入时间自动赋值的  原来是CASE中忽视了录入时间变动后的执行 谢谢老师提醒
[此贴子已经被作者于2014-9-1 20:06:29编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)idx = CInt(max.Substring(9,3)) + 1...  发帖心情 Post By:2014/9/1 20:29:00 [显示全部帖子]

有点甜老师 现在没有报错了 但是末尾编号永远是001

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)max = e.DataTable.Compute("Max(门店...  发帖心情 Post By:2014/9/1 20:36:00 [显示全部帖子]

问题依旧 有点甜老师

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)?代码不可能有问题,你加入msgb...  发帖心情 Post By:2014/9/1 20:40:00 [显示全部帖子]

max弹出的值为空 然后又弹出一个当前编号  其他就没了
[此贴子已经被作者于2014-9-1 20:42:17编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 代码不可能有问题,你加入msgb...  发帖心情 Post By:2014/9/1 21:00:00 [显示全部帖子]

即便我参照教程例子 改成如下代码:效果还是末尾永远都是001

Case "录入时间","门店简拼"
        If e.DataRow.IsNull("录入时间") OrElse e.DataRow.IsNull("门店简拼") Then
            e.DataRow("门店单号") = Nothing
        Else
            Dim d As Date = e.DataRow("录入时间")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = e.DataRow("门店简拼") & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
            If e.DataRow("门店单号").StartsWith(bh) = False '如果门店单号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "门店简拼 = '"& e.DataRow("门店简拼") & "' And 录入时间 >= #" & fd & "# And 录入时间 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(门店单号)",flt) '取得该月的相同门店简拼的最大门店单号
                If max > "" Then '如果存在最大门店单号
                    'idx = CInt(max.Substring(12,4)) + 1 '获得最大门店单号的后四位顺序号,并加1
idx = CInt(max.Substring((bh).Length,3)) + 1 '获得最大客户编码的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("门店单号") = bh & Format(idx,"0000")
            End If
        End If


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)那就是没有满足要求啊。自己看看 men...  发帖心情 Post By:2014/9/1 21:05:00 [显示全部帖子]

一次弹出如下:

MD00010101-

MD20140901-

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)?这句改一下?idx = CI...  发帖心情 Post By:2014/9/1 21:20:00 [显示全部帖子]

改了后还是依旧

上例子 麻烦有点甜老师看看


门店销售单 这个表中
[此贴子已经被作者于2014-9-1 21:35:44编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim bh As String = Format(e.DataRo...  发帖心情 Post By:2014/9/1 21:35:00 [显示全部帖子]

感谢有点甜老师  我将代码弄成了 如下 也能够完美编号了 谢谢
Case "门店名称","录入时间"    
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")) '取得该天的最大客户编码
            max = e.DataTable.Compute("Max(门店单号)","门店单号 like '" & mendian & "-" & bh & "-"   & "%' And [_Identify] <> " & e.DataRow("_Identify")) '取得该天的最大客户编码
            If max > "" Then '如果存在最大客户编码
                'idx = CInt(max.Substring(9,3)) + 1 '获得最大客户编码的后三位顺序号,并加1
                idx = CInt(max.Substring((mendian & "-" & bh & "-").Length,3)) + 1 '获得最大客户编码的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("门店单号") = mendian & "-" & bh & "-" & Format(idx,"000")
        End If


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