Foxtable(狐表)用户栏目专家坐堂 → 跨表引用统计


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

主题:跨表引用统计

帅哥哟,离线,有人找我吗?
有点甜
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/11 15:49:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2015/1/12 13:14:00 [只看该作者]

我知道是查找功能,想搞明白所起到的作用,我推测不需要查找,实际只需要排除c = "操纵" 时情况,于是把代码改为:
 If dr.IsNull(c) = False Then
            If c <> "操纵" Then   
                ndr = dt.AddNew
            End If
我测试了一下,结果视乎一样,不知能否这样改?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/12 14:14:00 [只看该作者]

 直接说你想做什么。

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2015/1/19 23:07:00 [只看该作者]

通过代码获得“人员任务统计”表中的结果,通过分组统计现可以得到30天内每人累加起落数。

图片点击可在新窗口打开查看此主题相关图片如下:起落数.png
图片点击可在新窗口打开查看

得到如下结果:

图片点击可在新窗口打开查看此主题相关图片如下:起落结果.png
图片点击可在新窗口打开查看

但想对此表做一次删选,只显示累计起落数< 20的结果。该如何修改代码,谢谢




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/19 23:27:00 [只看该作者]

 Tables("统计表3").Filter = "起落数< 20"

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2015/3/29 12:54:00 [只看该作者]

其余代码都理解意思,就还是不明白代码中标蓝部分的意思:
Dim dt As DataTable = DataTables("人员任务统计")
dt.DataRows.Clear
Dim cs() As String = {"左座", "右座", "操纵者", "观察员1"}
For Each dr As DataRow In DataTables("任务书").Select("", "飞行日期")
    Dim ndr As DataRow
    For Each c As String In cs
        If dr.IsNull(c) = False Then
            If c = "操纵者" Then
                ndr = dt.Find("姓名 = '" & dr(c) & "'", "_Identify desc")

            Else
                ndr = dt.AddNew
            End If
我知道是查找某行,但此时dt("人员任务统计")为空表,如何去找到姓名 = “任务书”表中姓名列中的姓名的行呢?一直琢磨不明白,麻烦解答,谢谢

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/29 14:09:00 [只看该作者]

 查找 姓名=操纵者名字,且如果有多个,取最后一个 的行

 

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

 


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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2015/5/5 13:23:00 [只看该作者]

代码运行正常,每次都全部清除后重新统计,但随着需统计行最多,运算困难,超过2000行后,无法计算,每次死机。能否对代码进行修改,让计算机分批次计算,谢谢

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


加好友 发短信
等级:婴狐 帖子:88 积分:518 威望:0 精华:0 注册:2015/5/3 21:12:00
  发帖心情 Post By:2015/5/5 15:04:00 [只看该作者]

 方法一,你可以设定条件控制要统计的日期啊

 

Dim dt As DataTable = DataTables("人员任务统计")
'dt.DataRows.Clear
Dim cs() As String = {"左座", "右座", "操纵者", "观察员1"}
For Each dr As DataRow In DataTables("任务书").Select("飞行日期 > #4/30/2015#", "飞行日期")
    Dim ndr As DataRow
    For Each c As String In cs
        If dr.IsNull(c) = False Then
            If c = "操纵者" Then
                ndr = dt.Find("姓名 = '" & dr(c) & "'", "_Identify desc")
            Else
                ndr = dt.AddNew
            End If
            ndr("日期") = dr("飞行日期")
            ndr("机型") = dr("机型")
            ndr("姓名") = dr(c)
            ndr(c) = True

            ndr("总时间") = dr("总时间")

            ndr("经历时间") = dr("经历时间")
            If c = "操纵者" Then
                ndr("起落架次") = dt.Compute("sum(起落架次)", "姓名 = '" & dr(c) & "'") + dr("起落架次")
            End If
        End If
    Next
Next 


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


加好友 发短信
等级:婴狐 帖子:88 积分:518 威望:0 精华:0 注册:2015/5/3 21:12:00
  发帖心情 Post By:2015/5/5 15:12:00 [只看该作者]

 或者,你可以试试用下面的代码

 

Dim dt As DataTable = DataTables("人员任务统计")
dt.DataRows.Clear
Dim cs() As String = {"操纵者", "左座", "右座", "观察员1"}
For Each dr As DataRow In DataTables("任务书").Select("", "飞行日期")
    Dim ndr As DataRow
    Dim cdr As DataRow = Nothing
    For Each c As String In cs
        If dr.IsNull(c) = False Then
            If c = "操纵者" Then
                ndr = dt.AddNew
                cdr = ndr
            Else
                If cdr("姓名") = dr(c) Then
                    ndr = cdr
                Else
                    ndr = dt.AddNew
                End If
            End If
            ndr("日期") = dr("飞行日期")
            ndr("机型") = dr("机型")
            ndr("姓名") = dr(c)
            ndr(c) = True
           
            ndr("总时间") = dr("总时间")
           
            ndr("经历时间") = dr("经历时间")
            If c = "操纵者" Then
                ‘ndr("起落架次") = dt.Compute("max(起落架次)", "姓名 = '" & dr(c) & "'") + dr("起落架次")
            End If
        End If
    Next
Next


 回到顶部
总数 26 上一页 1 2 3 下一页