以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于代码的问题(昨天还在用的代码今天突然不行了) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99426) |
-- 作者:an_1288 -- 发布时间:2017/4/19 10:15:00 -- [求助]关于代码的问题(昨天还在用的代码今天突然不行了) If e.DataCol.Name = "内转日期" Then If e.DataRow.IsNull("内转日期") Then e.DataRow("内转单号") = Nothing Else Dim d As Date = e.DataRow("内转日期") Dim bh As String = Format(d,"yyyy") \'生成编号的前6位,4位年,2位月. Dim max As String Dim idx As Integer If e.DataRow("内转单号").StartsWith(bh) = False \'如果编号的前6位不符 max = e.DataTable.Compute("Max(内转单号)","内转单号 like \'" & bh & "%\'") \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.length)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("内转单号") = bh & Format(idx,"000内") End If End If End If 上面这串代码在“内转日期”列输入2017-01-01后,在"内转单号"列可自动生成内转单号:2017001内,不知道为什么今天继续录入的时候突然不行了, 显示: 运行错误 .NET Framework 版本:2.0.50727.5485 Foxtable 版本:2017.3.18.1 错误所在事件:表,内转,DataColChanged 详细错误信息: 调用的目标发生了异常。 从字符串“001内”到类型“Integer”的转换无效。 输入字符串的格式不正确。 各位老师麻烦了! |
-- 作者:an_1288 -- 发布时间:2017/4/19 10:33:00 -- 我知道了:把e.DataRow("内转单号") = bh & Format(idx,"000内"),改为e.DataRow("内转单号") = bh & Format(idx,"000")就可以了,但生成“内转单号”为:2017001 如果要想生成“内转单号”为:2017001内,这种格式,要怎么修改代码呢?
|
-- 作者:有点色 -- 发布时间:2017/4/19 10:50:00 -- 改成
e.DataRow("内转单号") = bh & Format(idx,"000") & "内" |
-- 作者:an_1288 -- 发布时间:2017/4/19 14:18:00 -- 好像还是不行呢,还是和上面一样报错,麻烦了。 |
-- 作者:有点色 -- 发布时间:2017/4/19 14:54:00 --
[此贴子已经被作者于2017/4/19 14:57:40编辑过]
|
-- 作者:有点色 -- 发布时间:2017/4/19 14:58:00 -- If e.DataCol.Name = "内转日期" Then If e.DataRow.IsNull("内转日期") Then e.DataRow("内转单号") = Nothing Else Dim d As Date = e.DataRow("内转日期") Dim bh As String = Format(d,"yyyy") \'生成编号的前6位,4位年,2位月. Dim max As String Dim idx As Integer If e.DataRow("内转单号").StartsWith(bh) = False \'如果编号的前6位不符 max = e.DataTable.Compute("Max(内转单号)","内转单号 like \'" & bh & "%\'") \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.length, max.length-1-bh.length)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("内转单号") = bh & Format(idx,"000") & "内" End If End If End If |