表A
|
|
表C 数据组合表
|
平面分区
|
平面分格代号
|
平面分格尺寸
|
|
平面分区
|
立面分区
|
平面分格代号
|
平面分格代号
|
平面分格尺寸
|
立面分格尺寸
|
|
第一分区
|
B1
|
100
|
|
第一分区
|
第一分区
|
B1
|
H1
|
100
|
1100
|
|
第一分区
|
B2
|
200
|
|
第一分区
|
第一分区
|
B1
|
H2
|
100
|
1200
|
|
第一分区
|
B3
|
300
|
|
|
|
|
|
|
|
|
第二分区
|
B4
|
400
|
|
第一分区
|
第一分区
|
B2
|
H1
|
200
|
1100
|
|
第二分区
|
B5
|
500
|
|
第一分区
|
第一分区
|
B2
|
H2
|
200
|
1200
|
|
第三分区
|
B6
|
600
|
|
|
|
|
|
|
|
|
第三分区
|
B2
|
700
|
|
第一分区
|
第一分区
|
B3
|
H1
|
300
|
1100
|
|
第三分区
|
B3
|
800
|
|
第一分区
|
第一分区
|
B3
|
H2
|
300
|
1200
|
|
第三分区
|
B4
|
900
|
|
|
|
|
|
|
|
|
|
|
|
|
第二分区
|
第二分区
|
B4
|
H1
|
400
|
1300
|
|
|
|
|
|
第二分区
|
第二分区
|
B4
|
H2
|
400
|
1400
|
|
表B
|
|
第二分区
|
第2分区
|
B4
|
第二分区
|
400
|
1500
|
|
立面分区
|
立面分格代号
|
立面分格尺寸
|
|
第二分区
|
第二分区
|
B4
|
H4
|
400
|
1600
|
|
第一分区
|
H1
|
1100
|
|
|
|
|
|
|
|
|
第一分区
|
H2
|
1200
|
|
第二分区
|
第二分区
|
B5
|
H1
|
500
|
1300
|
|
第二分区
|
H1
|
1300
|
|
第二分区
|
第二分区
|
B5
|
H2
|
500
|
1400
|
|
第二分区
|
H2
|
1400
|
|
第二分区
|
第二分区
|
B5
|
H3
|
500
|
1500
|
|
第二分区
|
H3
|
1500
|
|
第二分区
|
第二分区
|
B5
|
H4
|
500
|
1600
|
|
第二分区
|
H4
|
1600
|
|
|
|
|
|
|
|
|
第三分区
|
H5
|
1700
|
|
第三分区
|
第三分区
|
B6
|
H5
|
600
|
1700
|
|
第三分区
|
H6
|
1800
|
|
第三分区
|
第三分区
|
B6
|
H6
|
600
|
1800
|
|
第三分区
|
B4
|
900
|
|
第三分区
|
第三分区
|
B6
|
B4
|
600
|
900
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第三分区
|
第三分区
|
B2
|
H5
|
700
|
1700
|
|
|
|
|
|
第三分区
|
第三分区
|
B2
|
H6
|
700
|
1800
|
|
|
|
|
|
第三分区
|
第三分区
|
B2
|
B4
|
700
|
900
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第三分区
|
第三分区
|
B3
|
H5
|
800
|
1700
|
|
|
|
|
|
第三分区
|
第三分区
|
B3
|
H6
|
800
|
1800
|
|
|
|
|
|
第三分区
|
第三分区
|
B3
|
B4
|
800
|
900
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第三分区
|
第3分区
|
B4
|
H5
|
900
|
1700
|
|
|
|
|
|
第三分区
|
第3分区
|
B4
|
H6
|
900
|
1800
|
|
|
|
|
|
第三分区
|
第3分区
|
B4
|
B4
|
900
|
900
|
|
|
|
|
|
.........
|
.........
|
.........
|
.........
|
.........
|
.........
|
|
老师好! 我按您的代码稍微调整了一下啊,原来是采用数组,现在采用集合GetValue方法,代码如下:
问题1 一直报错:索引超出范围。必须为非负值并小于集合大小。参数名: index
问题2 如果表A 和 表B 的分区值数量不一样时,生成的表C数据就缺 集合第一元素 例如:表A 平面分区列的值:第一分区 第二分区 第三分区 第四分区 数量是4
表B 立面分区列的值:第一分区 第二分区 第三分区
数量是3
那么生成表C数据时 就没有第一分区的数据 如果表A,表B的分区值相等,例如都是4个分区,数量都是4 ,那么生成表C数据时就完整
问题3 不管表C生成的数据是否完整,生成的数据都是重复一遍 如下
请老师看看代码,代码是放在MainTableChanged事件中的,问题出在哪儿,
谢谢老师!
平面分区
|
平面分格代号
|
立面分格代号
|
立面分区
|
平面分格尺寸
|
立面分格尺寸
|
|
第二分区
|
B4
|
H1
|
第二分区
|
400
|
1300
|
|
第二分区
|
B4
|
H2
|
第二分区
|
400
|
1400
|
第二分区
|
B4
|
H3
|
第二分区
|
400
|
1500
|
第二分区
|
B4
|
H4
|
第二分区
|
400
|
1600
|
第三分区
|
B6
|
H5
|
第三分区
|
600
|
1700
|
第三分区
|
B6
|
H6
|
第三分区
|
600
|
1800
|
第三分区
|
B6
|
H4
|
第三分区
|
600
|
900
|
.........
|
.........
|
.........
|
.........
|
.........
|
.........
|
|
|
|
|
|
|
|
|
第二分区
|
B4
|
H1
|
第二分区
|
400
|
1300
|
数据重复
|
第二分区
|
B4
|
H2
|
第二分区
|
400
|
1400
|
第二分区
|
B4
|
H3
|
第二分区
|
400
|
1500
|
第二分区
|
B4
|
H4
|
第二分区
|
400
|
1600
|
第三分区
|
B6
|
H5
|
第三分区
|
600
|
1700
|
第三分区
|
B6
|
H6
|
第三分区
|
600
|
1800
|
第三分区
|
B6
|
H4
|
第三分区
|
600
|
900
|
.........
|
.........
|
.........
|
.........
|
.........
|
.........
|
|
|
|
|
|
|
|
MainTableChanged事件代码
Dim a1 As list(Of String) =
DataTables("表A").GetValues("平面分区")
Dim a2 As list(Of String) =
DataTables("表B").GetValues("立面分区")
For i As Integer = 1 To a1.count
If a1(i) = a2(i) Then
For Each dr1 As
DataRow In DataTables("表A").select("[平面分区]='" & a1(i) & "'")
For Each dr2 As DataRow In DataTables("表B").select("[立面分区]='" & a2(i) & "'")
Dim r As Row = Tables("表C").addnew
r("平面分区") = a1(i)
r("立面分区") = a2(i)
r("平面分格代号") = dr1 ("平面分格代号")
r("立面分格代号") = dr2 ("立面分格代号")
r("平面分格尺寸") = dr1 ("平面分格尺寸")
r("立面分格尺寸") = dr2 ("立面分格尺寸")
Next
Next
End If
Next