Foxtable(狐表)用户栏目专家坐堂 → [求助]想设计合同单号对应多份报告编号,关于自动编号的疑问


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

主题:[求助]想设计合同单号对应多份报告编号,关于自动编号的疑问

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


加好友 发短信
等级:婴狐 帖子:14 积分:190 威望:0 精华:0 注册:2017/10/15 11:57:00
[求助]想设计合同单号对应多份报告编号,关于自动编号的疑问  发帖心情 Post By: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


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部