Foxtable(狐表)用户栏目专家坐堂 → [求助]在表中引用另一个表中的统计结果怎么做?


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

主题:[求助]在表中引用另一个表中的统计结果怎么做?

帅哥哟,离线,有人找我吗?
陈卫
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
[求助]在表中引用另一个表中的统计结果怎么做?  发帖心情 Post By:2016/6/17 15:05:00 [只看该作者]

专家您好,我有“表1”和“表2”,分别如下:
“表1”
图片点击可在新窗口打开查看此主题相关图片如下:表1.bmp
图片点击可在新窗口打开查看
“表2”
图片点击可在新窗口打开查看此主题相关图片如下:表2.bmp
图片点击可在新窗口打开查看
现在要在“表2”中找到“编号”同“表1”中“编号”相同的所有行中不同“设备”种类数量,例如:在“表2”中找到“编号”为“003”的所有行,统计使用的设备是“A1、B2、A2”共3种,将“3”赋值给“表1”中“编号”为“003”行的“投入设备数量”列中
应当怎么编码?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/17 15:22:00 [只看该作者]

方法一:直接设置关联,然后统计

 

http://www.foxtable.com/help/topics/0091.htm

 

http://www.foxtable.com/help/topics/0100.htm

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/17 15:22:00 [只看该作者]

方法二:用跨表统计即可

 

http://www.foxtable.com/help/topics/1472.htm

 


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2016/6/17 15:43:00 [只看该作者]

我使用的是方法二,在“表1”DataColChanged事件中设置如下代码:

If e.DataCol.Name = "编号" Then 
    e.DataRow("投入设备数量") = DataTables("表2").Compute("Sum(设备)","[设备] = '" & e.NewValue & "'")
    If e.DataCol.Name = "投入设备数量" Then

    Dim pr As DataRow
    pr = 
DataTables(表2).Find("设备 = '" & e.DataRow("设备") & "'")
        If
 pr IsNot Nothing 
Then
            pr(
"投入设备数量")= pr("投入设备数量") + e.NewValue - e.OldValue

        End If
    End
 If

End If


这样编码不能运行,可我不知道怎么写!请教专家


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/17 15:47:00 [只看该作者]

 

[此贴子已经被作者于2016/6/17 15:47:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/17 15:50:00 [只看该作者]

表1 的DataColChanged事件写代码

 

If e.DataCol.Name = "编号" Then
    e.DataRow("投入设备数量") = DataTables("表2").Compute("Count(编号)","编号 = '" & e.NewValue & "'")
End If

 

表2 的DataColChanged事件写代码

 

If e.DataCol.Name = "编号" Then
    DataTables("表1").datacols("编号").RaiseDataColChanged("编号 = '" & e.NewValue & "'")
End If

 


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2016/6/17 15:58:00 [只看该作者]

统计的结果不对,我要在“表2”中找到“编号”为“003”的所有行,统计使用的设备是“A1、B2、A2”3种,将“3”赋值给“表1”中“编号”为“003”行的“投入设备数量”列中,而不是将所有设备的数量(7)统计出来,并赋值给“表1”.请注意红色数字。(这里设备是在不同时间使用了同一台设备的,所以如A1使用了3天,统计时只能统计1次,而不是统计成3,B2使用了2天,统计时只能统计1次,而不是统计成2,A2使用了2天,统计时只能统计1次,而不是统计成2)
[此贴子已经被作者于2016/6/17 16:09:49编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/17 16:11:00 [只看该作者]

表1 的DataColChanged事件写代码

 

If e.DataCol.Name = "编号" Then 
    e.DataRow("投入设备数量") = DataTables("表2").GetValues("设备","编号 = '" & e.NewValue & "'").count
End If


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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2016/6/17 16:15:00 [只看该作者]

谢谢!

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


加好友 发短信
等级:幼狐 帖子:126 积分:813 威望:0 精华:0 注册:2015/10/22 10:35:00
  发帖心情 Post By:2016/6/29 8:56:00 [只看该作者]

专家您好,请看1楼的表1和表2,我想在关掉表2的同时,重置表1的“编号”列的指定行,假设第10行和最后一行,代码怎么写?写在表2属性的哪个事件中?
我在《指南》只找到以下代码,不知怎么改?

Dim dr As DataRow
dr
= DataTables("表2").Find("","[_SortKey]") '找出第十行和最后一行
If
dr IsNot Nothing Then 

    DataTables("表2").DataCols("编号").RaiseDataColChanged(dr)重置第十行和最后一行 
End
If


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