Foxtable(狐表)用户栏目专家坐堂 → 求助,如何解决 编号的启用与停用这个问题


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

主题:求助,如何解决 编号的启用与停用这个问题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/20 15:21:00 [显示全部帖子]

DataRowAdded事件

 

Dim dr As DataRow = e.DataRow
Dim bh As String = e.DataTable.Compute("Max(编号)") + 1
Dim fdr As DataRow
fdr = DataTables("号段管理").Find("开始号段 <= '" & bh & "' And 结束号段 >= '" & bh & "' And [启用] = True And ([停止] = False Or [停止] Is null)")

If fdr Is Nothing Then
    fdr = DataTables("号段管理").Find("开始号段 >= '" & bh & "' And [启用] = True And ([停止] = False Or [停止] Is null)", "开始号段")
    If fdr Is Nothing Then
        msgbox("没有号段了")
        e.DataRow.Delete
        Return
    Else
        dr("编号") = fdr("开始号段")
    End If
Else
    dr("编号") = bh
End If

DataTables("号段管理").ReplaceFor("停止", True, "结束号段 <= '" & dr("编号") & "'")

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/20 16:50:00 [显示全部帖子]

逻辑有问题,编号只能递增,不能回头。

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/20 17:02:00 [显示全部帖子]

如果要根据号段管理,取完所有编号,就这样写

 

Dim dr As DataRow = e.DataRow
Dim found As Boolean = False
For Each pdr As DataRow In DataTables("号段管理").Select("[启用] = True And ([停止] = False Or [停止] Is null)", "领用日期")
    For i As Double = pdr("开始号段") To pdr("结束号段")
        If e.DataTable.Find("编号 = '" & i & "'") Is Nothing Then
            dr("编号") = i
            found = True
            Exit For
        End If
    Next
    If found Then
        Exit For
    Else
        pdr("停止") = True
    End If
Next
If found = False Then
    e.DataRow.Delete
    msgbox("没有编号了")
End If


 回到顶部