Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:关于跨表引用数据进行组合数据表问题

1楼
刘效功天津 发表于:2025/1/9 9:22:00

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 和 表的分区值数量不一样时,生成的表C数据就缺 集合第一元素    例如:表A   平面分区列的值:第一分区  第二分区  第三分区  第四分区   数量是4

                                                                                                                       B   立面分区列的值:第一分区  第二分区  第三分区                 数量是3

                                                          那么生成表C数据时   就没有第一分区的数据   如果表A,B的分区值相等,例如都是4个分区,数量都是,那么生成表C数据时就完整   

 

 问题不管表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

2楼
有点蓝 发表于:2025/1/9 9:38:00
For i As Integer = 0 To a1.count - 1
3楼
刘效功天津 发表于:2025/1/9 10:29:00
老师还是有问题,就是问啥表C 的数据会多出来:我删掉表C 数据,重新开始,切换到表A,或者切换到表B  然后切换到表C就多1倍数据  这个多出的数据用啥代码控制一下  谢谢老师
4楼
有点蓝 发表于:2025/1/9 10:50:00
先使用find查询是否存在数据再addnew
5楼
刘效功天津 发表于:2025/1/9 10:53:00
好的,老师,我试试

6楼
刘效功天津 发表于:2025/1/9 10:56:00
奥,老师我想起来了,它不管表C有没有数据,即是把表C的数据全部删除掉,只要是切换一下表,它就会多出重复数据,这和用Find查找没关系吧
7楼
刘效功天津 发表于: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
8楼
刘效功天津 发表于:2025/1/9 11:12:00
老师,昨天发上咱们论坛的有测试文件,请老师看看咋解决这个重复数据的问题  谢谢老师
9楼
有点蓝 发表于:2025/1/9 11:19:00
没看到有find的用法
10楼
刘效功天津 发表于:2025/1/9 11:37:00
 老师这行代码不就说明表C没有数据吗?
Dim Tr As Row = Tables("表C").RowS(0)
                If Tr.IsNull ("平面分区") Then
共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .04199 s, 2 queries.