以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助,如何解决 编号的启用与停用这个问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77558) |
||||
-- 作者:covechen -- 发布时间:2015/11/20 14:28:00 -- 求助,如何解决 编号的启用与停用这个问题 原范例是论坛上找的,实际应用中发现有些不大方便的地方,如下图 图2
1、如图1,我设了四个编号段,其中红色、黄色框内的号码段是正常情况下的(从小到大,号码段>=2),图2中也可以看出自动排出来的号码属于正常范围(灰色框) 2、但,图1中,绿色框内的号码段,开始号码比红色、黄色的还要小,在图2中就出现BUG了,只提取出1个号,其后的号码就不对了。 3、图1中,蓝色框的号码段只有1,图2也出现BUG。。
请教一下,如何解决2、3 这两个问题? 谢谢!
实例如下
|
||||
-- 作者:大红袍 -- 发布时间:2015/11/20 15:21:00 -- DataRowAdded事件
Dim dr As DataRow = e.DataRow If fdr Is Nothing Then DataTables("号段管理").ReplaceFor("停止", True, "结束号段 <= \'" & dr("编号") & "\'")
|
||||
-- 作者:covechen -- 发布时间:2015/11/20 15:58:00 -- 麻烦版主再帮我改下。 我刚刚用你的代码试了一下, 第3个问题解决了,但第2个问题还是不行, 你的代码直接跳过2,就是说,比最后一个号码还小的号码段,直接跳过
|
||||
-- 作者:狐表开发 -- 发布时间:2015/11/20 16:30:00 -- Dim dr As DataRow = e.DataRow Dim dt As DataTable = DataTables("号段管理") Dim dr1 As DataRow = dt.Find("[启用] = True And [停止] = False") If dr1 IsNot Nothing Then Dim bh As String = dr1("开始号段") bh = Format(e.DataTable.Compute("Max(编号)","编号 >= " & dr1("开始号段") & " and 编号 <= " & dr1("结束号段")) + 1,"0000000") Do While bh > dr1("结束号段") dr1("启用") = False dr1("停止") = True dr1 = dt.Find("[启用] = False And [停止] = False") If dr1 IsNot Nothing Then dr1("启用") = True bh = dr1("开始号段") bh = Format(e.DataTable.Compute("Max(编号)","编号 >= " & dr1("开始号段") & " and 编号 <= " & dr1("结束号段")) + 1,"0000000") If bh <= dr1("结束号段") Then Exit Do End If Else MessageBox.Show("没有号段了") Return End If Loop dr("编号") = bh End If
|
||||
-- 作者:大红袍 -- 发布时间:2015/11/20 16:50:00 -- 逻辑有问题,编号只能递增,不能回头。
|
||||
-- 作者:大红袍 -- 发布时间:2015/11/20 17:02:00 -- 如果要根据号段管理,取完所有编号,就这样写
Dim dr As DataRow = e.DataRow |
||||
-- 作者:covechen -- 发布时间:2015/11/20 18:21:00 -- 谢谢,很完美地解决所有问题 |