以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]想设计合同单号对应多份报告编号,关于自动编号的疑问  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113768)

--  作者:kakawcj
--  发布时间:2018/1/22 18:52:00
--  [求助]想设计合同单号对应多份报告编号,关于自动编号的疑问

DataColChanged事件,想当列“式”(初始默认值为1)改变之后能让表“报告管理_客服员”原对应合同单号的行数变化,如> 1将对原来所有合同单号的数据删除,并重新增加对应数量的行,“报告编号”能够自动获取,且能从断号续号,不浪费之前删除行造成的断号,初始值要求为变量(如100200等值可自由设定),以下代码为参考论坛后设计,但一直不成功,编号总是等于00200,请问问题出现在哪里呢?

另外还有一问,如果“式”的值由默认的1改为其它大于1的数字后,报告编号1对1合同单号的原来那一行数据不删除,仅作增加行且自动生成能获取断号的报告编号时又应该如何设计呢?

Select Case e.DataCol.Name

    Case ""

        Dim dr As DataRow = DataTables("报告管理_客服员").Find("合同单号 = \'" & e.DataRow("合同单号") & "\'")

        If dr IsNot Nothing Then \'如果找到(dr值为True)(此两行目的在于区分首次定义""值获得的"合同单号"值的情况)

            If e.NewValue > 1 Then \'""的值>1

                Dim Result As DialogResult = MessageBox.Show("即将重置\'报告管理\'表中" & e.DataRow("合同单号") & "的所有数据,\'(Y)\'的版式为\'按型号\',\'(N)\'的版式为\'按项目\'", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information)

                If Result = DialogResult.Yes Then

                    e.DataRow("版式") = "按型号"

                Else

                    e.DataRow("版式") = "按项目"

                End If

                DataTables("报告管理_客服员").DeleteFor("合同单号 = \'" & e.DataRow("合同单号") & "\'")

                For i As Byte = 1 To e.NewValue

                    dr = DataTables("报告管理_客服员").AddNew()

                    dr("合同单号") = e.DataRow("合同单号")

                    dr("预计交付") = e.DataRow("预计交付")

                    dr("版式") = e.DataRow("版式")

                    Dim flag As Boolean = False

                    Dim tzh As String = e.DataRow("场所") & e.DataRow("领域")

                    Dim bhs As List(of String) = DataTables("报告管理_客服员").GetValues("编号", "[_Identify] <> " & e.DataRow("_Identify"))

                    For j As Integer = 1 To bhs.count

                        If bhs(j-1) <> Format(j+199,"00000") Then \'如果初始值为x,j应改为j+x-1

                            tzh = tzh & Format(j+199,"00000") \'如果初始值为x,j应改为j+x-1

                            flag = True

                            Exit For

                        End If

                    Next

                    If bhs.count = 0 Then \'如数据为空白

                        tzh = tzh & "00200" \'设置初始值为x

                    ElseIf flag = False Then

                        tzh = tzh & Format(bhs.count+1, "00000")

                    End If

                    dr("报告编号") = tzh

                    dr("流水") = i

                Next

            End If

        End If

End Select


--  作者:有点蓝
--  发布时间:2018/1/22 20:12:00
--  
没看懂这段代码的意思,截图或者上传实例说明一下

For j As Integer = 1 To bhs.count
    If bhs(j-1) <> Format(j+199,"00000") Then \'如果初始值为x,j应改为j+x-1
        tzh = tzh & Format(j+199,"00000") \'如果初始值为x,j应改为j+x-1
        flag = True
        Exit For
    End If
Next
If bhs.count = 0 Then \'如数据为空白
    tzh = tzh & "00200" \'设置初始值为x
ElseIf flag = False Then
    tzh = tzh & Format(bhs.count+1, "00000")
End If