以文本方式查看主题 - 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 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编辑过]
|