Foxtable(狐表)用户栏目专家坐堂 → 关于数据排列组合填充问题


  共有805人关注过本帖树形打印复制链接

主题:关于数据排列组合填充问题

帅哥哟,离线,有人找我吗?
刘效功天津
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
关于数据排列组合填充问题  发帖心情 Post By:2025/1/13 15:21:00 [显示全部帖子]

老师好,有一个问题是关于跨表数据进行排列组合填充的问题,代码没有完全实现想要的功能,请老师看看代码问题在哪儿,谢谢老师, 具体问题描述见压缩文件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据的排列组合填充.zip


 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
跨表数据排列组合填充  发帖心情 Post By:2025/1/13 16:35:00 [显示全部帖子]

老师好,测试代码放在MainTableChanged
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表数据排列组合测试文件.zip

事件中进行测试  方便测试,谢谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/13 16:53:00 [显示全部帖子]

老师,您看看数据,就是宽度分格2,3,4,5  高度分格2,3,4,5的数据都是一样的,没有根据门窗信息表的数据进行填充

 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/13 17:14:00 [显示全部帖子]

C1212 B1 100 10 框-挺 内开扇 H1 1000 100 框-框
C1212 B1 100 10 框-挺 内开扇 H2 3000 400 框-挺
C1212 B1 100 10 框-挺 内开扇 H3 3000 300 框-框
C1212 B1 100 10 框-挺 内开扇 H4 4000 400 框--框 内开扇
C1212 B2 200 20 挺-挺 H1 1000 100 框-框
C1212 B2 200 20 挺-挺 H2 3000 400 框-挺
C1212 B2 200 20 挺-挺 H3 3000 300 框-框
C1212 B2 200 20 挺-挺 H4 4000 400 框--框 内开扇
C1212 B3 300 30 框-框 H1 1000 100 框-框
C1212 B3 300 30 框-框 H2 3000 400 框-挺
C1212 B3 300 30 框-框 H3 3000 300 框-框
C1212 B3 300 30 框-框 H4 4000 400 框--框 内开扇
C2805 B1 1111 11 H1 555 5 框-挺
C2805 B1 1111 11 H2 6666 6 外开扇
C2805 B1 1111 11 H3 7777 7 外开扇
C2805 B2 2222 22 框-挺 H1 555 5 框-挺
C2805 B2 2222 22 框-挺 H2 6666 6 外开扇
C2805 B2 2222 22 框-挺 H3 7777 7 外开扇

 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/13 17:40:00 [显示全部帖子]

老师好,我还没升级软件,麻烦您把代码张贴一下,我先试试,谢谢老师


 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/14 16:19:00 [显示全部帖子]

 

 

门窗信息

 

区域划分

 

楼栋代号

门窗代号

宽度第1分格

宽度第2分格

高度第一分格

高度第二分格

 

分格代号

分格尺寸

分格数量

框挺选择

窗扇类型

分格代号

分格尺寸

分格数量

框挺选择

窗扇类型

分格代号

分格尺寸

分格数量

框挺选择 

窗扇类型

分格代号

分格尺寸

分格数量

框挺选择

窗扇类型

 

分区一

1号楼

C1212

B1

100

10

-

内开扇

B2

200

20

-

 

H1

1000

100

-

 

H2

3000

400

-

 

 

分区二

1号楼

C2805

B1

1111

11

 

 

B2

2222

22

-

内开扇

H1

555

5

-

 

H2

6666

6

 

外开扇

 

分区二

2号楼

C2805

B1

1111

11

 

 

B2

2222

22

-

内开扇

H1

555

5

-

 

H2

6666

6

 

外开扇

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

门窗玻璃

区域划分

楼栋代号

门窗代号

宽度度分格

高度分格

分格代号

分格尺寸

分格数量

框挺选择

窗扇类型

分格代号

分格尺寸

分格数量

框挺选择

窗扇类型

 

 

 

 

分区一

1号楼

C1212

B1

100

10

--

内开扇

H1

1000

100

--

 

分区一

1号楼

C1212

B1

100

10

--

内开扇

H2

3000

400

--

 

 

 

 

 

分区一

1号楼

C1212

B2

200

20

--

 

H1

1000

100

--

 

分区一

1号楼

C1212

B2

200

20

--

 

H2

3000

400

--

 

 

 

 

 

分区二

1号楼

C2805

B1

1111

11

 

 

H1

555

5

--

 

分区二

1号楼

C2805

B1

1111

11

 

 

H2

6666

6

 

外开扇

 

 

 

 

分区二

1号楼

C2805

B2

2222

22

--

内开扇

H1

555

5

--

 

分区二

1号楼

C2805

B2

2222

22

--

内开扇

H2

6666

6

 

外开扇

 

 

 

 

 

 

 

 

 

 

 

 

 

分区二

2号楼

C2805

B1

1111

11

 

 

H1

555

5

--

 

分区二

2号楼

C2805

B1

1111

11

 

 

H2

6666

6

 

外开扇

 

 

 

 

 

 

 

 

 

 

 

 

 

分区二

2号楼

C2805

B2

2222

22

--

内开扇

H1

555

5

--

 

分区二

2号楼

C2805

B2

2222

22

--

内开扇

H2

6666

6

 

外开扇

 

老师好!昨天您改写的代码已经实现所需的功能,现在再进行拓展一下  谢谢老师

目的: 增加判断条件原来只有一个判断条件,现在拓展一下增加俩个判断条件,其它不变,输出的结果也不变

     我增加了几行代码,红色的代码就是我增加的代码(判断条件增多到3个),我感觉我写的代码不正确,判断条件FIND 也没用上循环变量,老师看看代码咋处理一下  谢谢老师

                                              

 

Dim dr As DataRow

Dim pfs() As String = {"宽度第1分格1", "宽度第2分格1", "宽度第3分格1"}

Dim lfs() As String = {"高度第一分格1", "高度第二分格1", "高度第三分格1", "高度第四分格1"}

 

'Dim qyhf As list(Of String) = DataTables("门窗信息").GetValues("区域划分")

'Dim lddh As list(Of String) = DataTables("门窗信息").GetValues("楼栋代号")

 

For Each drc As DataRow In DataTables("门窗信息").select("[门窗代号] is not null")

 

    dr = DataTables("门窗玻璃").find(" [门窗代号] ='" & drc("门窗代号") & "'") 这个判断条件改成下面的判断条件

If dr Is Nothing Then

 

'    For R1 As Integer = 0 To qyhf.count - 1

'        For R2 As Integer = 0 To lddh.count - 1

           

            dr = DataTables("门窗玻璃").find("[区域划分] ='" & drc("区域划分") & "' AND  [楼栋代号] ='" & drc("楼栋代号") & "' AND  [门窗代号] ='" & drc("门窗代号") & "'")

            If dr Is Nothing Then

               

                For i1 As Integer = 0 To pfs.count - 1

                    For i2 As Integer = 0 To lfs.count - 1

                       

                        Dim r As Row = Tables("门窗玻璃").addnew

                        r("门窗代号") = drc("门窗代号")

                        r("区域划分") = drc("区域划分")

                        r("楼栋代号") = drc("楼栋代号")

                        r("门窗数量") = drc("门窗数量")

                       

                        r("宽度分格1") = drc (pfs(i1))

                        r("高度分格1") = drc (lfs(i2))

                       

                        Dim s1 As String = pfs(i1).TrimEnd("1")

                        r("宽度分格2") = drc(s1 & "2")

                        r("宽度分格3") = drc(s1 & "3")

                        r("宽度分格4") = drc(s1 & "4")

                        r("宽度分格5") = drc(s1 & "5")

                        r("宽度分格6") = drc(s1 & "6")

                        r("宽度分格7") = drc(s1 & "7")

                        r("宽度分格8") = drc(s1 & "8")

                        r("宽度分格9") = drc(s1 & "9")

                        r("宽度分格A") = drc(s1 & "A")

                        r("宽度分格B") = drc(s1 & "B")

                       

                        Dim s2 As String = lfs(i2).TrimEnd("1")

                        r("高度分格2") = drc(s2 & "2")

                        r("高度分格3") = drc(s2 & "3")

                        r("高度分格4") = drc(s2 & "4")

                        r("高度分格5") = drc(s2 & "5")

                        r("高度分格6") = drc(s2 & "6")

                        r("高度分格7") = drc(s2 & "7")

                        r("高度分格8") = drc(s2 & "8")

                        r("高度分格9") = drc(s2 & "9")

                        r("高度分格A") = drc(s2 & "A")

                        r("高度分格B") = drc(s2 & "B")

                    Next

                Next

            End If

'        Next

'    Next

Next

DataTables("门窗玻璃").DeleteFor("[宽度分格1] is null or  [高度分格1] is null")



 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/14 16:29:00 [显示全部帖子]

好的,谢谢老师


 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/14 16:51:00 [显示全部帖子]

老师好,我再拓展一下功能,就是想在排列组合的数据中去掉多余的没用的数据  谢谢老师

排除条件如下:

  有以下3种条件,如何删掉这三种条件的数据行

 

             平面分格代号       立面分格代号          平面分格尺寸                立面分格尺寸

 

     列名     平面分格1          立面分格1            平面分格2                   立面分格2

 

1种条件    代号(数量)=1        代号(数量)>2                                    分格尺寸(最大值)

 

2种条件    代号(数量)>2        代号(数量)=1        分格尺寸(最大值)

 

3种条件    代号(数量) >2        代号(数量)>2       分格尺寸(最大值)           分格尺寸(最大值)


我写的代码如下,红色字体为删掉这三种条件的数据行的代码 ,请老师看看如何修改一下啊代码  谢谢老师

Dim dr As DataRow

Dim pfs() As String = {"宽度第1分格1", "宽度第2分格1", "宽度第3分格1"}

Dim lfs() As String = {"高度第一分格1", "高度第二分格1", "高度第三分格1", "高度第四分格1"}

 

For Each drc As DataRow In DataTables("门窗信息").select("[门窗代号] is not null")

    

            dr = DataTables("门窗玻璃").find("[区域划分] ='" & drc("区域划分") & "' AND  [楼栋代号] ='" & drc("楼栋代号") & "' AND  [门窗代号] ='" & drc("门窗代号") & "'")

            If dr Is Nothing Then

               

                For i1 As Integer = 0 To pfs.count - 1

                    For i2 As Integer = 0 To lfs.count - 1

                       

                        Dim r As Row = Tables("门窗玻璃").addnew

                        r("门窗代号") = drc("门窗代号")

                        r("区域划分") = drc("区域划分")

                        r("楼栋代号") = drc("楼栋代号")

                        r("门窗数量") = drc("门窗数量")

                       

                        r("宽度分格1") = drc (pfs(i1))

                        r("高度分格1") = drc (lfs(i2))

                       

                        Dim s1 As String = pfs(i1).TrimEnd("1")

                        r("宽度分格2") = drc(s1 & "2")

                        r("宽度分格3") = drc(s1 & "3")

                        r("宽度分格4") = drc(s1 & "4")

                        r("宽度分格5") = drc(s1 & "5")

                        r("宽度分格6") = drc(s1 & "6")

                        r("宽度分格7") = drc(s1 & "7")

                        r("宽度分格8") = drc(s1 & "8")

                        r("宽度分格9") = drc(s1 & "9")

                        r("宽度分格A") = drc(s1 & "A")

                        r("宽度分格B") = drc(s1 & "B")

                       

                        Dim s2 As String = lfs(i2).TrimEnd("1")

                        r("高度分格2") = drc(s2 & "2")

                        r("高度分格3") = drc(s2 & "3")

                        r("高度分格4") = drc(s2 & "4")

                        r("高度分格5") = drc(s2 & "5")

                        r("高度分格6") = drc(s2 & "6")

                        r("高度分格7") = drc(s2 & "7")

                        r("高度分格8") = drc(s2 & "8")

                        r("高度分格9") = drc(s2 & "9")

                        r("高度分格A") = drc(s2 & "A")

                        r("高度分格B") = drc(s2 & "B")

                    Next

                Next

            End If

'        Next

'    Next

Next

DataTables("门窗玻璃").DeleteFor("[宽度分格1] is null or  [高度分格1] is null")

 

 

''定义去除窗户玻璃多余的分格组合功能性代码

'Dim int1 As Integer = DataTables("门窗玻璃").Compute("Count([宽度分格1])", "[区域划分] = '" & dr("区域划分") & "' and   [楼栋代号] ='" & dr("楼栋代号") & "' AND  [门窗代号] ='" & dr("门窗代号") & "'")

'Dim int2 As Integer = DataTables("门窗玻璃").Compute("Count([高度分格1])", "[区域划分] = '" & dr("区域划分") & "' and   [楼栋代号] ='" & dr("楼栋代号") & "' AND  [门窗代号] ='" & dr("门窗代号") & "'")

 

'Dim max1 As Integer = DataTables("门窗玻璃").Compute("max([宽度分格2])", "[区域划分] = '" & dr("区域划分") & "' and   [楼栋代号] ='" & dr("楼栋代号") & "' AND  [门窗代号] ='" & dr("门窗代号") & "'")

'Dim max2 As Integer = DataTables("门窗玻璃").Compute("max([高度分格2])", "[区域划分] = '" & dr("区域划分") & "' and   [楼栋代号] ='" & dr("楼栋代号") & "' AND  [门窗代号] ='" & dr("门窗代号") & "'")

 

'Dim dr1 As DataRow

'Dim dr2 As DataRow

'Dim dr3 As DataRow

 

'MessageBox.Show(1)

'dr1 = DataTables("门窗玻璃").find("[宽度分格1]=1,and   [高度分格1]>2, and [高度分格2]=max2")

'MessageBox.Show(2)

 

'If dr1 Is Nothing Then

'    dr1.Delete()

'End If

'MessageBox.Show(3)

 

'dr2 = DataTables("门窗玻璃").find("int1>2,and int2=1, and [宽度分格2]=max1")

'If dr2 Is Nothing Then

'    dr2.Delete()

'End If

 

'dr3 = DataTables("门窗玻璃").find("int1>2,and int2>2, and [宽度分格2]=max1 and 高度分格2]=max2")

'If dr3 Is Nothing Then

'    dr3.Delete()

'End If



 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/14 17:03:00 [显示全部帖子]

老师好,就是我写的那个判断条件,好像写法不对,没有正确描述出判断条件,老师请看看我写的判断条件语法上有啥问题,请老师改改find中判断条件的写法,我琢磨了半天还是写的语法不对,谢谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
刘效功天津
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:201 积分:1292 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/14 17:09:00 [显示全部帖子]

老师好,那个判断逻辑是对的,就是语法写法上没表达出来,,报错说没有引用到实体对象

 回到顶部
总数 16 1 2 下一页