以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]自动编号出错,哪儿有问题啊? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=85991) |
||||
-- 作者:cd_tdh -- 发布时间:2016/6/7 15:23:00 -- [求助]自动编号出错,哪儿有问题啊? If e.DataCol.Name = "登记时间" Then 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 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("序号") = bh & "-" & Format(idx,"000") End If End If End If 错误提示: .NET Framework 版本:2.0.50727.5485 Foxtable 版本:2015.12.22.1 错误所在事件:表,保证金管理,DataColChanged 详细错误信息: 调用的目标发生了异常。 未找到类型“Integer”的公共成员“StartsWith”。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/6/7 15:30:00 -- 代码换行后发上来。 另,可以先用这个方法调试一下: http://www.foxtable.com/help/topics/1485.htm 看看是哪一行出错。 |
||||
-- 作者:cd_tdh -- 发布时间:2016/6/7 15:34:00 -- If e.DataCol.Name = "登记时间" Then [此贴子已经被作者于2016/6/7 15:36:36编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/6/7 15:47:00 -- 问题在这一行: idx = CInt(max.Substring(9,3)) + 1 \'获得最大序号的后三位顺序号,并加1
可能你表中,原来有一些编号,这些编号不符合规范。
你可以清除原来的编号,然后重置登记时间列,重新生成编号。
接下来输入数据,看看有没有错。
如果还有做,做个例子发上来,我们帮你搞定 |
||||
-- 作者:cd_tdh -- 发布时间:2016/6/7 15:53:00 -- 我在示例里面运行没错啊,是正确的,我其他表里面运行都没问题啊,就这个表有问题。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/6/7 15:55:00 -- 删除原来的编号后测试,如果搞不定,传这个表上来 |
||||
-- 作者:cd_tdh -- 发布时间:2016/6/7 16:07:00 --
在第一个窗口里面 |
||||
-- 作者:cd_tdh -- 发布时间:2016/6/7 16:34:00 -- 狐爸,传上来了啊,坐等。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/6/7 16:42:00 -- 低级错误,序号列你设置成整数了,应该改为字符型。 |
||||
-- 作者:cd_tdh -- 发布时间:2016/6/7 16:45:00 -- 汗颜.................. |