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


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

主题:跨表引用统计

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
跨表引用统计  发帖心情 Post By:2014/12/7 10:12:00 [显示全部帖子]

各位上午好,有如下需求请求帮忙:

目前我公司每次完成任务后,都会根据任务书格式录入(按任务),结果如下:

图片点击可在新窗口打开查看此主题相关图片如下:任务书.jpg
图片点击可在新窗口打开查看
然后根据录入任务书信息进行(按人员)进行统计,比如第一个任务统计后得出下表:

图片点击可在新窗口打开查看此主题相关图片如下:人员任务统计.jpg
图片点击可在新窗口打开查看
说明:
1. 任务书中左座和右座,总时间和经历时间都计入;
2. 如是观察员,只计入总时间,不计入经历时间;
3. 只有是操纵者,才计入起落次数;

例如在第一个任务中:
1. 黄山是左座,且是操纵者,所以人员任务书中左座和操纵者栏打钩,且是操作者,起落次数计入1,总时间和经历时间都计入;
2. 张力是右座,人员任务统计中右座打钩,总时间和经历时间都计入;
3. 苏峰是观察员,人员任务统计中观察员栏打钩,只计入总时间,不计入经历时间;

请教专家,如果通过编码来实现根据“任务书”录入信息自动生成“人员任务统计表”内容,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表引用.foxdb



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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2014/12/7 13:18:00 [显示全部帖子]

谢谢甜老师,真给力,一定好好学习。
能否稍微调整一下代码:
1. “如果观察员1,只计入总时间,不计入经历时间;”
2. 另外,我看到代码有“dt.DataRows.Clear“,这是每次执行时,先要清空所有内容吗?如果任务较多,会不会很耗费资源?能否只统计新录入的任务。谢谢指点。

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2014/12/7 22:31:00 [显示全部帖子]

谢谢建议,我会认真采纳。

在大量导入处理时,出现一些问题,列举一些,麻烦看看:
1. 在第2个任务的两人的总时间和经历时间都是04:45,而统计出来黄山、张力的时间都是09:45,多了5小时;
2. 在第3个任务中两人的总时间和经历时间都应该是04:40,而统计出来苏锋的总时间是09:45;
3. 示例中虽未出现,但我测试大量统计中还出现起落架次多次累加。

水平有限,代码不太明白,看到使用了“Compute("sum”,个人感觉“人员任务统计”表中只是引用“任务书”中的时间,不需要进行累加,可能我表述需求不太明白。
谢谢专家!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表引用1.foxdb



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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2014/12/7 23:05:00 [显示全部帖子]

谢谢回复。
还有点问题,列举一些,麻烦看看:
1. 在第2个任务的两人的总时间和经历时间都是04:45,而统计出来黄山、张力的总时间准确,但经历时间还是09:45,多了5小时;
2. 测试大量统计中还出现多次累加。

麻烦老师了。

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2015/1/11 15:41:00 [显示全部帖子]

谢谢专家代码,学习过程中对以下代码理解有困难,麻烦解释其意思、作用和目的,谢谢
If c = "操纵者" Then
                ndr = dt.Find("姓名 = '" & dr(c) & "'", "_Identify desc")



 回到顶部
帅哥哟,离线,有人找我吗?
一笑
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
我测试了一下,结果视乎一样,不知能否这样改?


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


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

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

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

得到如下结果:

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

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




 回到顶部
帅哥哟,离线,有人找我吗?
一笑
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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("人员任务统计")为空表,如何去找到姓名 = “任务书”表中姓名列中的姓名的行呢?一直琢磨不明白,麻烦解答,谢谢

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


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

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

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


加好友 发短信
等级:四尾狐 帖子:808 积分:6213 威望:0 精华:0 注册:2014/3/23 23:02:00
  发帖心情 Post By:2015/5/5 22:18:00 [显示全部帖子]

谢谢狐友。

1. 统计时间可行,但每次要选择;2. 代码简洁,但随着行数量增加,迟早机器会崩溃。

能否用类似for...next语句,比如每200行退出,让后再继续执行,直到完成所有,谢谢!

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