以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]这个自动编号代码错在哪里 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67892) |
||||||||
-- 作者:荟美绘姿 -- 发布时间:2015/5/5 17:34:00 -- [求助]这个自动编号代码错在哪里 If e.DataCol.Name = "ajclqh_tijiaoqh" Then
说明: [ajdjh]=[案件登记号]
[案件登记号]中的澄交运稽罚字是案件登记号的前缀 前缀在机构编码维护表的编码前缀列中
我要的目的是: 当[是否提交到后台]=“已提交”时,则[案件登记号]中就按年自动生成编号
跪求大侠们帮我看一下上面的公式哪里不对
谢谢
|
||||||||
-- 作者:大红袍02 -- 发布时间:2015/5/5 17:48:00 -- 请上传数据库啊,你的这个备份没有一点用处啊,别人无法还原啊。 |
||||||||
-- 作者:大红袍02 -- 发布时间:2015/5/5 17:51:00 -- 不然,你就做一个简单的小例子上传上来。 |
||||||||
-- 作者:大红袍02 -- 发布时间:2015/5/5 17:57:00 -- If e.DataCol.Name = "ajclqh_tijiaoqh" Then If e.DataRow.IsNull("ajclqh_tijiaoqh") Then e.DataRow("ajdjh") = Nothing Else Dim d As Date = Date.Today Dim y As Integer = d.Year Dim fd As Date = New Date(y,1,1) Dim ld As Date = fd.AddYears(1) Dim bh As String = y & "-" Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(ajdjh)","y >= #" & fd & "# And y < #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.Length)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("ajdjh") = bh & Format(idx,"000") End If End If |
||||||||
-- 作者:荟美绘姿 -- 发布时间:2015/5/6 13:26:00 --
表A是主表,表B第二列中的内容是表A第一列自动生成编号的前缀 我的要求是: 当表A第表A第三列等于已提交时,第一列自动生成编号,编号的生成方法是按系统年份自动生成(如:2015年第一天时后五位就从00001开始,到了2016第一天时后五位又从00001开始),[2015]的是系统年份,每年都会自动系统年份。 结果为:前缀+"字"+"["+"系统年份"+"]"+按系统年份自动生成的编号+"号"
谢谢大侠指点一下下,跪求。 |
||||||||
-- 作者:Bin -- 发布时间:2015/5/6 13:42:00 -- 表A和表B 以什么作为关联, 我怎么知道取表B那一行的第二列作为前缀? |
||||||||
-- 作者:荟美绘姿 -- 发布时间:2015/5/6 15:01:00 -- 表A和表B没有关联,取表B的第一行的第二列 |
||||||||
-- 作者:Bin -- 发布时间:2015/5/6 15:02:00 -- 无论什么时候都取第一行第二列? |
||||||||
-- 作者:大红袍 -- 发布时间:2015/5/6 15:03:00 -- If e.DataCol.Name = "第三列" Then If e.DataRow("第三列") <> "已提交" Then e.DataRow("第一列") = Nothing Else Dim y As Integer = Date.Today.Year Dim qz As String = Tables("表B").Rows(0)("第二列") Dim bh_temp As String = qz & "字[[]" & y & "[]]" Dim bh As String = qz & "字[" & y & "]" Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(第一列)","第一列 like \'" & bh_temp & "%\' And [_Identify] <> " & e.DataRow("_Identify")) If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(bh.Length, 5)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("第一列") = bh & Format(idx,"00000") & "号" End If End If |
||||||||
-- 作者:荟美绘姿 -- 发布时间:2016/1/6 13:22:00 -- 这个代码写在DataRowAdding里后不能自动编号了,请大侠指教
If e.DataRow("cljbqh_cphm") > " " Then |