Foxtable(狐表)用户栏目专家坐堂 → 关于跨表引用数据进行组合数据表问题


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

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

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
关于跨表引用数据进行组合数据表问题  发帖心情 Post By:2025/1/8 11:19:00 [只看该作者]

A

C    数据组合表

平面分区

平面分格代号

平面分格尺寸

平面分区

立面分区

平面分格代号

平面分格代号

平面分格尺寸

立面分格尺寸

 

  第一分区      

B1

100

第一分区

1分区

B1

H1

100

1100

 

  第一分区

B2

200

第一分区

1分区

B1

H2

100

1200

 

  第一分区

B3

300

 

 

 

 

 

 

 

  第二分区

B4

400

第一分区

1分区

B2

H1

200

1100

 

  第二分区

B5

500

第一分区

1分区

B2

H2

200

1200

 

  第三分区

B6

600

 

 

 

 

 

 

 

  第三分区

B2

700

第一分区

1分区

B3

H1

300

1100

 

  第三分区

B3

800

第一分区

1分区

B3

H2

300

1200

 

 第三分区

B4

900

 

 

 

 

 

 

 

  第二分区

2分区

B4

H1

400

1300

 

  第二分区

2分区

B4

H2

400

1400

 

B

  第二分区

2分区

B4

H3

400

1500

 

立面分区

立面分格代号

立面分格尺寸

  第二分区

2分区

B4

H4

400

1600

 

1分区

H1

1100

 

 

 

 

 

 

 

1分区

H2

1200

  第二分区

2分区

B5

H1

500

1300

 

2分区

H1

1300

  第二分区

2分区

B5

H2

500

1400

 

2分区

H2

1400

  第二分区

2分区

B5

H3

500

1500

 

2分区

H3

1500

  第二分区

2分区

B5

H4

500

1600

 

2分区

H4

1600

 

 

 

 

 

 

 

3分区

H5

1700

  第三分区

3分区

B6

H5

600

1700

 

3分区

H6

1800

  第三分区

3分区

B6

H6

600

1800

 

第三分区

B4

900

  第三分区

3分区

B6

B4

600

900

 

 

 

 

 

 

 

 

  第三分区

3分区

B2

H5

700

1700

 

  第三分区

3分区

B2

H6

700

1800

 

  第三分区

3分区

B2

B4

700

900

 

 

 

 

 

 

 

 

  第三分区

3分区

B3

H5

800

1700

 

  第三分区

3分区

B3

H6

800

1800

 

  第三分区

3分区

B3

B4

800

900

 

 

 

 

 

 

 

 

  第三分区

3分区

B4

H5

900

1700

 

  第三分区

3分区

B4

H6

900

1800

 

  第三分区

3分区

B4

B4

900

900

 

.........

.........

.........

.........

.........

.........

 

 

 

 

 

专家老师好!   现在有2个原始数据表 (表A  B    1个数据组合表 (表C 

     A ,B   的 平面分区 与 立面分区  作为索引的关键列  在表C中进行数据组合   组合的结果就是表C 结构 

 

想要实现的功能: 1  就是在分区相同的数据整合到一起(如 第一分区  1分区)

在此基础上  每一个平面分格代号 与该分区下的所有立面分格代号进行组合 相应的数据 对应填入     B1  H1   100  1100

                                                                                       B1  H2   100  1200

 

                                                                                                           B2  H1   200  1200

                                                                                                           B2  H2   200  1200

                                                                                                                  依此类推

 

          2  C数据整合完后,如果以后再对表A,,表B 扩充追加数据, 表C原已整合完的数据不动, 还是在上述整合数据的原则下,在表C中增加追加新的扩充数据

           

我采用咱们的  数据填充器,手工编码数据填充的方式   以及咱们常规的跨表引用数据的方式进行了多次尝试,一点也没实现所需的功能,对这种数据整合代码一点也没摸着头脑,束手无策

请老师看看关于这种情况代码怎么写,谢谢老师

下面是我在maintablechanged事件中写入的代码,

If MainTable.Name = "C" Then '如果选择的主表是订单表

    Dim f As New Filler

   

    f.SourceTable = DataTables("A") '指定数据来源

    f.SourceCols = "平面分区, 平面分格代号, 平面分格尺寸" '指定数据来源列

    f.DataTable = DataTables("C") '指定数据接收表

    f.DataCols = "平面分区, 平面分格代号, 平面分格尺寸" '指定数据接收列

  

    f.ExcludeExistValue = True '排除接收表中已经存在的重复值

    f.Fill() '填充数据

   

    f.SourceTable = DataTables("B ") '指定数据来源

    f.SourceCols = "立面分区, 立面分格代号, 立面分格尺寸" '指定数据来源列

    f.DataTable = DataTables("C") '指定数据接收表

    f.DataCols = "立面分区, 立面分格代号, 立面分格尺寸" '指定数据接收列

   

'     f.Filter = "system.DBNull(DataTables("C ").DataCols("平面分格代号"))"

    

    f.ExcludeExistValue = True '排除接收表中已经存在的重复值

    f.Fill() '填充

   

End If

 

'Dim Vals As List(Of String())

'Vals = DataTables("B").GetValues("立面分格代号|立面分格尺寸")

'For i As Integer = 0 To Vals.Count - 1

'    Dim dr As DataRow = DataTables("C").AddNew()

'    dr("立面分格代号") = Vals(i)(0)

'    dr("立面分格尺寸") = Vals(i)(1)

'Next


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


加好友 发短信
等级:超级版主 帖子:111691 积分:568585 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/8 11:46:00 [只看该作者]

无法使用填充,只能遍历处理

dim a1() as string = {"第一分区","第二分区"}
dim a2() as string = {"第1分区","第2分区"}
for i as integer = 0 to a1.length - 1
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 ("面分格代号")
next
next
next

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/8 14:27:00 [只看该作者]

老师好,按您的代码,它还是老报错,说没找到数组中的元素“第一分区”的列,您再给看看,我把测试文件给您也发过去,看究竟问题出在哪儿,谢谢老师

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/8 14:28:00 [只看该作者]

老师好,按您的代码,它还是老报错,说没找到数组中的元
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据整合.zip

素“第一分区”的列,您再给看看,我把测试文件给您也发过去,看究竟问题出在哪儿,谢谢老师

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


加好友 发短信
等级:超级版主 帖子:111691 积分:568585 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/8 14:36:00 [只看该作者]

使用英文的逗号和双引号

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/8 14:57:00 [只看该作者]

老师好,我还专门在咱们得杂项菜单的执行窗口中写的数组元素,然后复制到代码中,还从咱们得帮助文件中复制的数组,改了一下名称,但是还是老报错,说找不到数组元素“第一分区”  ,上面发的示例文件,您看看究竟问题在哪儿

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/8 15:25:00 [只看该作者]

老师您好,我用了英文半角双引号和逗号,怎么还是不行,还是报同样的错,测试文件给您前面发过去了,您测试一下,能不能实现所需的功能要求,看看究竟是哪儿的问题,谢谢老师

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


加好友 发短信
等级:超级版主 帖子:111691 积分:568585 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/8 15:42:00 [只看该作者]

肯定还是没有改为英文半角双引号和逗号

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/8 15:58:00 [只看该作者]

我再试试,谢谢老师!

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


加好友 发短信
等级:幼狐 帖子:178 积分:1156 威望:0 精华:0 注册:2023/9/19 11:27:00
  发帖心情 Post By:2025/1/8 16:48:00 [只看该作者]

谢谢老师,问题解决了,还真是出在双引号和单引号上,我开始一直盯着数组上的双引号,逗号,后来是合成表达式上的双引号和逗号   谢谢老师

另外,这段代码我是放在mainTableChanged事件中,发觉这是从2个表中提出数据,经过循环合成表的数据就多了1倍,我算过了本来是26行数据,但只要是切换一次,就增价52行数据,这样多出来的数据就搞乱了,怎么添加点代码,不管切换多少次,它都是26行代码,  您说这段代码是放在mainTableChanged事件中好,还是放在其它事件中好  谢谢老师

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