以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何自动编号而无前缀 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=67177) |
||||
-- 作者:童年 -- 发布时间:2015/4/19 23:29:00 -- [求助]如何自动编号而无前缀 现在有工号、年份、编号,根据年份,如何实现该工号在同一年份的编号自动生成,而没有前缀,可以为 01-99 ,也可以从1-99。求大神指点。 \'根据住院年份对"编号"列自动编号 If e.DataCol.Name = "住院年份" Then If e.DataRow.IsNull("住院年份") Then e.DataRow("编号") = Nothing Else Dim d As Date = e.DataRow("住院年份") Dim y As Integer = d.Year Dim bh As String = Format(d,"yyyy") \'生成编号的前4位,4位年. If e.DataRow("报告文号").StartsWith(bh) = False \'如果序号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)") \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(0,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = Format(idx,"000") End If End If End If 我试了一下以上代码不可以。
[此贴子已经被作者于2015/4/19 23:36:30编辑过]
|
||||
-- 作者:Bin -- 发布时间:2015/4/20 8:45:00 -- 01- 这个不就是前缀么? 前缀怎么来? 取年份? Dim bh As String = Format(d,"yy") \'生成编号的前4位,4位年. idx = CInt(max.Substring(3,3)) + 1 改这两句代码即可
|
||||
-- 作者:foxbable_saber -- 发布时间:2015/4/20 9:57:00 -- 没看明白,怎么就“该月最大值”了?没见到月怎么比? 没看明白,怎么就6位不符合了?提取4为年份比较,怎么就得出前6位不符合?
|
||||
-- 作者:Bin -- 发布时间:2015/4/20 9:59:00 -- e.DataTable.Compute("Max(编号)","住院年份=\'" & e.DataRow("住院年份") & "\'") 新手建议先按部就班学习一下帮助,不要贸然就从中间开始.这样只会浪费您更多的时间. 务必按部就学习一下帮助,图文帮助不喜欢的话,论坛置顶还有教程视频
|
||||
-- 作者:童年 -- 发布时间:2015/4/20 12:44:00 -- 以下是引用Bin在2015/4/20 8:45:00的发言:
那是备注错误了
01- 这个不就是前缀么? 前缀怎么来? 取年份? Dim bh As String = Format(d,"yy") \'生成编号的前4位,4位年. idx = CInt(max.Substring(3,3)) + 1 改这两句代码即可
|
||||
-- 作者:童年 -- 发布时间:2015/4/20 12:47:00 -- 以下是引用Bin在2015/4/20 8:45:00的发言:
01-不是前缀,意思是01,02,03,04……98,99这样的编号。
01- 这个不就是前缀么? 前缀怎么来? 取年份? Dim bh As String = Format(d,"yy") \'生成编号的前4位,4位年. idx = CInt(max.Substring(3,3)) + 1 改这两句代码即可
|
||||
-- 作者:Bin -- 发布时间:2015/4/20 13:38:00 -- 那后面是怎么回事? 具体请描述清楚问题,并且上个例子
|
||||
-- 作者:Bin -- 发布时间:2015/4/20 13:45:00 -- If e.DataCol.Name = "住院年份" Then If e.DataRow.IsNull("住院年份") Then e.DataRow("编号") = Nothing Else Dim d As Date = e.DataRow("住院年份") Dim y As Integer = d.Year If e.DataRow.ISNULL("报告文号") = False \'如果序号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)","住院年份=#" & e.DataRow("住院年份") & "# and 工号= \'" & e.datarow("工号") & "\'") \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(0,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = Format(idx,"000") End If End If End If
|
||||
-- 作者:童年 -- 发布时间:2015/4/20 20:36:00 --
例子已上传,补助表关联了在信息表下,信息表中该工号的人员,每年得到多次补助,如何将一年中的补助次第自动生成,次第格式为 1,2,3,4…… 谢谢版主
|
||||
-- 作者:有点甜 -- 发布时间:2015/4/20 20:47:00 -- 补助表 Datacolchanged事件:
Select e.DataCol.Name Case "工号" If e.DataRow.IsNull("工号") Then e.DataRow("次第") = Nothing Else Dim drs As List(of DataRow) = e.DataTable.Select("工号 = \'" & e.NewValue & "\'","_SortKey") For i As Integer = 0 To drs.count -1 drs(i)("次第") = i +1 Next End If End Select DataRowAdded事件: DataTables("补助").DataCols("工号").RaiseDataColChanged(e.DataRow) [此贴子已经被作者于2015/4/20 20:46:51编辑过]
|