以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于跨表引用数据进行组合数据表问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194730) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 9:22:00 -- 关于跨表引用数据进行组合数据表问题
老师好! 我按您的代码稍微调整了一下啊,原来是采用数组,现在采用集合GetValue方法,代码如下: 问题1 一直报错:索引超出范围。必须为非负值并小于集合大小。参数名: index 问题2 如果表A 和 表B 的分区值数量不一样时,生成的表C数据就缺 集合第一元素 例如:表A 平面分区列的值:第一分区 第二分区 第三分区 第四分区 数量是4
表B 立面分区列的值:第一分区 第二分区 第三分区
数量是3
那么生成表C数据时 就没有第一分区的数据 如果表A,表B的分区值相等,例如都是4个分区,数量都是4 ,那么生成表C数据时就完整 问题3 不管表C生成的数据是否完整,生成的数据都是重复一遍 如下 请老师看看代码,代码是放在MainTableChanged事件中的,问题出在哪儿,
谢谢老师!
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2025/1/9 9:38:00 -- For i As Integer = 0 To a1.count - 1 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 10:29:00 -- 老师还是有问题,就是问啥表C 的数据会多出来:我删掉表C 数据,重新开始,切换到表A,或者切换到表B 然后切换到表C就多1倍数据 这个多出的数据用啥代码控制一下 谢谢老师 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2025/1/9 10:50:00 -- 先使用find查询是否存在数据再addnew |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 10:53:00 -- 好的,老师,我试试 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 10:56:00 -- 奥,老师我想起来了,它不管表C有没有数据,即是把表C的数据全部删除掉,只要是切换一下表,它就会多出重复数据,这和用Find查找没关系吧 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 11:10:00 -- 老师好,设置了Find 但是如果表C全部清除数据,没有一行,切换到表C后就没有数据组合,如果表C留有一行空行,切换到表C后还是有重复数据 怎么用代码处理一下,下面是我用代码处理的,不管用,请老师看看代码,谢谢老师 Dim a1 As list(Of String) = DataTables("表A").GetValues("平面分区") Dim a2 As list(Of String) = DataTables("表B").GetValues("立面分区") For i As Integer = 0 To a1.count-1 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 Tr As Row = Tables("表C").RowS(0) If Tr.IsNull ("平面分区") Then Dim r As Row = Tables("表C").addnew r("平面分区") = a1(i) r("立面分区") = a2(i) r("平面分格代号") = dr1 ("平面分格代号") r("立面分格代号") = dr2 ("立面分格代号") r("平面分格尺寸") = dr1 ("平面分格尺寸") r("立面分格尺寸") = dr2 ("立面分格尺寸") End If Next Next End If Next
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 11:12:00 -- 老师,昨天发上咱们论坛的有测试文件,请老师看看咋解决这个重复数据的问题 谢谢老师 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点蓝 -- 发布时间:2025/1/9 11:19:00 -- 没看到有find的用法 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:刘效功天津 -- 发布时间:2025/1/9 11:37:00 -- 老师这行代码不就说明表C没有数据吗? Dim Tr As Row = Tables("表C").RowS(0) If Tr.IsNull ("平面分区") Then
|