Foxtable(狐表)用户栏目专家坐堂 → 关于自动编号


  共有2669人关注过本帖树形打印复制链接

主题:关于自动编号

帅哥哟,离线,有人找我吗?
扶风
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
关于自动编号  发帖心情 Post By:2015/10/15 16:04:00 [只看该作者]

Select e.DataCol.Name
     Case  "cpmc"
          If e.DataRow.IsNull("cpmc") Then
             e.DataRow("xuhao") = Nothing
         Else
             Dim lb As  String = e.DataRow("cpmc")
             If e.DataRow("xuhao").StartsWith(lb) = False  '如果单据编号前缀不符
                Dim max  As  String
                 Dim idx  As  Integer
                max = e.DataTable.Compute("Max(xuhao)","cpmc = '" & lb  & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > ""  Then  '如果存在最大编号
                    idx = CInt(max.Substring(2)) + 1  '获得最大编号的后三位顺序号,并加1
                 Else
                     idx = 1  '否则顺序号等于1
                 End  If
                 e.DataRow("xuhao") = lb.Substring(5,2) & Format(idx,"000000")
         End  If
      End  If
 End  Select

 

老师,如上代码写在表的dotacolchanged里实现了自动分类编码,但是存在这样的问题:

表的beforeload事件写了如下一段代码

e.DataTable.LoadFilter = "jiean = False "

 

用来控制仅加载未结案的行,如果所有行均已结案它会又从头开始编号。这并不是我们希望看到的,因为我们要用这个编号作为更新数据库里数据的依据,请问老师要如何修改?


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/15 16:46:00 [只看该作者]

max = e.DataTable.Compute

 

改成

 

max = e.DataTable.SqlCompute

 

------------

 

e.DataRow("xuhao") = lb.Substring(5,2) & Format(idx,"000000")

 

改成

 

e.DataRow("xuhao") = lb.Substring(5,2) & Format(idx,"000000")

e.DataRow.Save


 回到顶部
帅哥哟,离线,有人找我吗?
扶风
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
  发帖心情 Post By:2015/10/15 16:58:00 [只看该作者]

好的谢谢老师


 回到顶部