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