以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 新手求助自动编号问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106427) |
-- 作者:pkq091225 -- 发布时间:2017/9/8 12:47:00 -- 新手求助自动编号问题 一个中有三列:项目区域、拼音简写、编号,想实现自动编号,规则为拼音简写+3位数字,项目区域列属性中设置了目录树列表,目录树来源于行政区域表,数据来源列为行政区域表的县(中文),拼音简写是通过项目区域转换而来,当通过手动在项目区域输入相同中文可以实现自动编号的增加,但通过列表树选择相同的地方时就报错: .NET Framework 版本:2.0.50727.4984 Foxtable 版本:2017.6.12.1 错误所在事件:表,测试,DataColChanged 详细错误信息: 调用的目标发生了异常。 从字符串“Q00”到类型“Integer”的转换无效。 输入字符串的格式不正确。 DataColChanged代码如下: If e.DataCol.Name = "项目区域" Then If e.NewValue > "" e.DataRow("拼音简写") = GetPY(e.NewValue, 1).ToUpper Else e.DataRow("拼音简写") = Nothing End If End If Select e.DataCol.Name Case "拼音简写" If e.DataRow.IsNull("拼音简写") Then e.DataRow("编号") = Nothing Else Dim lb As String = e.DataRow("拼音简写") If e.DataRow("编号").StartsWith(lb) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)","拼音简写 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该简写的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = lb & Format(idx,"000") End If End If End Select 请问是怎么回事???
|
-- 作者:有点甜 -- 发布时间:2017/9/8 13:45:00 -- idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
改成
idx = CInt(max.Substring(lb.length)) + 1 \'获得最大编号的后三位顺序号,并加1 |
-- 作者:pkq091225 -- 发布时间:2017/9/8 13:50:00 -- 谢谢,修改后问题解决 |