Office中国论坛/Access中国论坛

标题: boss要我编一个access数据库的查询,求助 [打印本页]

作者: xm_bear    时间: 2008-11-25 15:59
标题: boss要我编一个access数据库的查询,求助
我的mdb里有一张表,里面其中有一列是日期时间的,大概有几千条。boss的要求是做一个程序,从上向下,当“报警信息”是相同时,时间相差小于30秒的都不显示,只有相差大于30秒的数据才显示出来,怎么实现呢?或者说有哪些类似的程序可以参考一下?
[:30]
vb或vc连access数据库。


boss现在又给了一个新任务。。。。。以前那些都是每车一个表的,现在他要求把所有的车辆的全部信息都放到同一个xls表格里然后再处理。和原来相比就是车牌变成不一样的了。

就像原来
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:52:37"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:53:43"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:56:44"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:57:20"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:58:22"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:59:02"

现在车牌

"小松服务车" "小松桂AAC1" "GPS接收机故障报警;" "2008-11-17 9:52:37"
"小松服务车" "小松桂AAC1" "GPS接收机故障报警;" "2008-11-17 9:53:43"
"小松服务车" "小松桂AAC1" "GPS接收机故障报警;" "2008-11-17 9:56:44"
"小松服务车" "小松桂AAC2" "GPS接收机故障报警;" "2008-11-17 9:57:20"
"小松服务车" "小松桂AAC2" "GPS接收机故障报警;" "2008-11-17 9:58:22"
"小松服务车" "小松桂AAC2" "GPS接收机故障报警;" "2008-11-17 9:59:02"

之类的。

该改动哪些地方呢?

[ 本帖最后由 xm_bear 于 2008-12-4 15:00 编辑 ]
作者: Henry D. Sy    时间: 2008-11-25 16:08
最简单的办法就是
炒掉boss
作者: Henry D. Sy    时间: 2008-11-25 16:13
把例子传上来,并且描述清楚点,是相邻两条记录相差<=10s
还是<10s,假设条件成立是不是下面一条不显示。
作者: fannky    时间: 2008-11-25 16:32
IC考勤钟的后台纪录?
问题是假设记录1~12都是A的记录,各顺序记录之间相差时间小于10秒,但记录1同记录12之间的时间差就大于10秒了,这种情况下如何显示?
呵呵
作者: xm_bear    时间: 2008-11-25 16:34
标题: 回复 3# 的帖子
比如说有这么一段数据

车 牌        报警信息        报警时间
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:24:42
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:06
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:25
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:40
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:26:04
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:26:24

他们相邻之间只相差了不到30秒,就只显示开头和结尾那2段数据,其他不显示。以前有类似的程序吗?

都是为了月薪1200的工作,唉。。。。。。
作者: tmtony    时间: 2008-11-25 16:38
按车牌 和时间排序
用一个变量保存上一条的时间
然后顺序取下一条的时间,如果与变量相比相差大于指定范围就做相应操作
作者: xm_bear    时间: 2008-11-25 16:48
原帖由 tmtony 于 2008-11-25 16:38 发表
按车牌 和时间排序
用一个变量保存上一条的时间
然后顺序取下一条的时间,如果与变量相比相差大于指定范围就做相应操作
[:30]


恩,我也是这么想,但是一扯到具体命令上就不会了。。。。
然后上网找类似的程序也米找到。。。
作者: Henry D. Sy    时间: 2008-11-25 20:41
车 牌        报警信息        报警时间
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:24:42
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:06
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:25
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:40
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:26:04
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:26:24
把这个做成表,传上来探讨探讨。
作者: xm_bear    时间: 2008-11-26 09:27
原始表和导出后形成的mdb数据都在一起
作者: Henry D. Sy    时间: 2008-11-26 10:40
如果条件成立,是哪一条记录不显示
作者: Henry D. Sy    时间: 2008-11-26 11:05
SELECT a.ID, a.定位, a.公司组别, a.车牌, a.报警信息, a.报警时间
FROM Sheet1 AS a
WHERE (((DateDiff("s",(select top 1 报警时间 from sheet1 b where b.id<a.id and b.车牌=a.车牌 order by b.报警时间 desc),[报警时间]))>30)) OR (((DateDiff("s",(select top 1 报警时间 from sheet1 b where b.id<a.id and b.车牌=a.车牌 order by b.报警时间 desc),[报警时间])) Is Null));

[ 本帖最后由 dddddd 于 2008-11-26 14:11 编辑 ]
作者: xm_bear    时间: 2008-11-26 11:58
比如这一堆数据,他们时间间隔条件都成立的话,在结果中只显示第一条和最后一条。
例子:
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:24:42(显示)
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:06(隐藏
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:25(隐藏
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:25:40(隐藏
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:26:04(隐藏
小松桂AAC        GPS接收机故障报警;        2008-11-17 8:26:24(显示)
作者: Henry D. Sy    时间: 2008-11-26 12:08
2应该是跟1比,假设条件成立,2不显示,哪3应该跟哪个比?是1或是2.
作者: xm_bear    时间: 2008-11-26 13:58
3也是跟2比,然后4又跟3比。
假如5跟4比,时间差大于某一数时,就只显示1和5。
作者: Henry D. Sy    时间: 2008-11-26 14:05
时间差大于某一数时,就只显示1和5。
现在怎么变成大于了
作者: Henry D. Sy    时间: 2008-11-26 14:12
更新在11楼,看看是不是你要的结果,(假设时间差为30秒)
作者: xm_bear    时间: 2008-11-26 15:28
好~谢谢~~
我试一下
作者: xm_bear    时间: 2008-11-26 15:37
[:50]

数据库里操作可以了,下面我看看怎么调试先
谢谢阿~~~
作者: xm_bear    时间: 2008-11-26 16:22
查询的数据不能超过690几条,后面就是直接显示原始数据了。排序时无响应。。。。。。。。。估计是我这里的电脑处理能力不行,回家换一台试下。
作者: xm_bear    时间: 2008-11-27 17:17
当数据量大于700时,后面的就不再起作用了,和机子无关。。。。自己查也查不出来原因,有人知道吗?

我把数据库文件放在第一贴里了
作者: Henry D. Sy    时间: 2008-11-27 17:30
可以的呀,只不过少了个定位字段,你把他去掉就是了,
就不知道结果是不是你所要的
查询得到263条记录(条件是30秒)
作者: 明镜    时间: 2008-11-27 21:19
学习!
作者: xm_bear    时间: 2008-11-28 10:52
原帖由 Henry D. Sy 于 2008-11-27 17:30 发表
可以的呀,只不过少了个定位字段,你把他去掉就是了,
就不知道结果是不是你所要的
查询得到263条记录(条件是30秒)



我这里查也是263条,不过正确来说的话应该只有很少条数的

我看了一下,发现查询报警时间在10点之前的都正常,10点之后就不正常了。是因为字节设置的问题导致不起作用吗?


"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:52:37"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:53:43"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:56:44"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:57:20"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:58:22"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:59:02"    ----------------从这里下面后就不正常了
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 10:00:09"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 10:00:09"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 10:00:36"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 10:00:51"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 10:01:23"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 10:01:37"
作者: Henry D. Sy    时间: 2008-11-28 11:19
没注意你的报警时间有重复,改用id排序

SELECT a.ID, a.公司组别, a.车牌, a.报警信息, a.报警时间
FROM Sheet1 AS a
WHERE (((DateDiff("s",(select top 1 报警时间 from sheet1 b where b.id<a.id and b.车牌=a.车牌 order by b.id desc),[报警时间]))>30 Or (DateDiff("s",(select top 1 报警时间 from sheet1 b where b.id<a.id and b.车牌=a.车牌 order by b.id desc),[报警时间])) Is Null));
作者: kangking    时间: 2008-11-28 13:02
做了一个示例。
加了一个查询,主要是为了分组。加了一个表,保存查询(计算)的结果。
运行模块中的query过程可以得到结果。

[ 本帖最后由 kangking 于 2008-11-28 13:03 编辑 ]
作者: luckydevil_2001    时间: 2008-11-28 14:41
good questions......

所有问题均回复
good questions......
属恶意灌水

[ 本帖最后由 Henry D. Sy 于 2008-11-28 14:45 编辑 ]
作者: zhilinjing02    时间: 2008-11-28 14:53
标题: 为什么,啊
我下载 都要钱啊 。怎么发贴啊
作者: xm_bear    时间: 2008-11-28 16:15
[:50]

果然如上面高人所说,现在改动后正常了


我周末用vb做一个小程序引用这个数据库计算然后再把查询结果输出来就能交差了。谢谢你们~~~~~
作者: xm_bear    时间: 2008-12-4 10:52
boss现在又给了一个新任务。。。。。以前那些都是每车一个表的,现在他要求把所有的车辆的全部信息都放到同一个xls表格里然后再处理。和原来相比就是车牌变成不一样的了。

就像原来
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:52:37"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:53:43"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:56:44"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:57:20"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:58:22"
"小松服务车" "小松桂AAC" "GPS接收机故障报警;" "2008-11-17 9:59:02"

现在车牌

"小松服务车" "小松桂AAC1" "GPS接收机故障报警;" "2008-11-17 9:52:37"
"小松服务车" "小松桂AAC1" "GPS接收机故障报警;" "2008-11-17 9:53:43"
"小松服务车" "小松桂AAC1" "GPS接收机故障报警;" "2008-11-17 9:56:44"
"小松服务车" "小松桂AAC2" "GPS接收机故障报警;" "2008-11-17 9:57:20"
"小松服务车" "小松桂AAC2" "GPS接收机故障报警;" "2008-11-17 9:58:22"
"小松服务车" "小松桂AAC2" "GPS接收机故障报警;" "2008-11-17 9:59:02"

之类的。

该改动哪些地方呢?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3