以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于自动更新和统计数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39017) |
||||
-- 作者:祁阳 -- 发布时间:2013/8/13 18:03:00 -- [求助]关于自动更新和统计数据
拜求高手指点:我想达到如下效果: 1.检查登记表根据已录入名单自动生成或更新档案号这一列的内容(说明:检查登记表是事先登记好了的,当时档案号是空的,过段时间导入录入名单的内容,当导入录入名单时,这时要检查登记表档案号列自动更新内容,最好判断一下,当此列单元格的内容是空白的话根据录入名单这个表的内容自动更新,) 2.统计表孕检人数列自动统计出在检查登记表随访地区列与统计表中乡镇名称列文本相同且检查登记表检查类别中含有“孕”字的总行数,也就是各乡镇的孕检对数,并随访时根据检查登记表变化。
[此贴子已经被作者于2013-8-13 18:05:18编辑过]
|
||||
-- 作者:lsy -- 发布时间:2013/8/13 18:26:00 -- 从理论上说,你这两张表的档案号,无法一一对应。 从实际操作来说,可以把“丈夫姓名”、“妻子姓名”、“随访地区”,三列合为一个也许是不重复的条件,使两张表的档案号能对应上。 最好是在两张表里,都完整填写妻子证件号码,这样可以避免重复,也使档案号唯一对应。
又发现问题: 检查登记表、统计表,两张表里面的地名,还不完全一样。 不规范啦,不好统计,还容易出错。
[此贴子已经被作者于2013-8-13 18:55:16编辑过]
|
||||
-- 作者:lsy -- 发布时间:2013/8/13 19:52:00 --
|
||||
-- 作者:祁阳 -- 发布时间:2013/8/13 23:11:00 -- 呵呵,感谢提出宝贵的意见。 第一个问题可以在检查登记表增加“妻子证件号码”和“检查日期”来解决,通过这个唯一的标识相同且已录入名单表中的建档日期在检查日期起一年内(因为可能重复检查,但规定一年只能检查一次)来判断应该不会有问题了。 第二个问题不是问题,是我的疏忽,在检查登记表中可能没有写入两个单位的相关的数据,也可以理解为如果没某些乡镇的数据,那么它的检查对数就是0
。 希望来个具体的加了代码能实现上面目标的例子。 这有修改好的附件
|
||||
-- 作者:lsy -- 发布时间:2013/8/14 7:53:00 -- 例子已经做好了的,点击左上方的“婚检统计”,就全部统计出来了,不过现在应该根据你新的条件,改变一点代码。 地址问题,你理解错了。 按常识推断,【龙山街道办事处】应该和【龙山办事处】是一个地方,还有那个文明镇,人知道,电脑却有点费劲。 细节规范,软件才好用。不然,以后查询、统计的时候,想要的出不来,不想要的赶不走。
|
||||
-- 作者:lsy -- 发布时间:2013/8/14 8:23:00 -- 你这个不规范,会害死你的。 建档日期是字符列,检查日期是日期列。
我是按同一年来判断的,你不会是要判断两个日期间隔不超过365天吧。 [此贴子已经被作者于2013-8-14 8:29:12编辑过]
|
||||
-- 作者:lsy -- 发布时间:2013/8/14 8:29:00 --
|
||||
-- 作者:祁阳 -- 发布时间:2013/8/14 10:28:00 -- 感谢感谢!!! Dim names As List (Of String) =
DataTables("检查登记表").GetUniqueValues("随访地区 Is Not
Null","随访地区") For Each name As String In names For Each r As Row In Tables("统计表").Rows If r("乡镇名称") = name Then r("孕检人数") =
DataTables("检查登记表").Compute("Count(检查类别)","随访地区 =
\'" & name & "\' And 检查类别 Like \'*" & "孕*\'") End If Next Next
For Each r As Row In
Tables("检查登记表").Rows For Each rw As Row In Tables("已录入名单").Rows If r("妻子证件号码") = rw("妻子证件号码")
AndAlso Left(r("检查日期"),4) = Left(rw("建档日期"),4) Then r("档案编号") = rw("档案编号") End If Next Next 上面的 If r("妻子证件号码") = rw("妻子证件号码") AndAlso Left(r("检查日期"),4) = Left(rw("建档日期"),4) Then这个条件我确实想改成建档日期在检查日期后365天内,因为假如在某一天的最后一天检查,而在新的一年头一天录入,原来的代码就查不到了。您看改成:If r("妻子证件号码") = rw("妻子证件号码") AndAlso r("检查日期") <= rw("建档日期")Then应该就行了(这样也避免了将以前将以前曾经检查过的人原来的档案号导入的问题) |
||||
-- 作者:lsy -- 发布时间:2013/8/14 12:03:00 --
|
||||
-- 作者:祁阳 -- 发布时间:2013/8/15 16:51:00 -- 谢谢,不过现在又了现了一个问题,如果数据量大的话很是要较长时间,能不能在条件判断一下,如果原来已好档案号的就不要重新再填了。 |