以文本方式查看主题 - 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将对原来所有合同单号的数据删除,并重新增加对应数量的行,“报告编号”能够自动获取,且能从断号续号,不浪费之前删除行造成的断号,初始值要求为变量(如100、200等值可自由设定),以下代码为参考论坛后设计,但一直不成功,编号总是等于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 |