vb6和msaccess的时间查询

Posted

技术标签:

【中文标题】vb6和msaccess的时间查询【英文标题】:time query for vb6 and msaccess 【发布时间】:2010-01-25 07:00:31 【问题描述】:

查询 VB6 和 MS Access

表:-

         User Id       LogDate       LogTime 

            1            1/1/2010      9:00  

            1            1/1/2010     10:00   

            1            1/1/2010     11:29  

            1            2/1/2010     10:00

            2            2/1/2010     22:00

            2            3/1/2010    11:00

需要显示为:-

             User Id   LogDate   LogTime   LogDate     LogTime   

             1       1/1/2010  9:00    1/1/2010        10:00   

             1       1/1/2010  11:29   2/1/2010        10:00  

             2       2/1/2010  22:00   3/1/2010        11:00     

【问题讨论】:

是否保证每个用户ID的日志条目数为偶数? 【参考方案1】:

您需要使用子查询来查找用户的下一个日期,例如:

SELECT tbl***TimeQuery.lngUserId, tbl***TimeQuery.datLogDateTime,
  (SELECT TOP 1 tbl***TimeQuery2.datLogDateTime
   FROM tbl***TimeQuery AS tbl***TimeQuery2
   WHERE tbl***TimeQuery.lngUserId = tbl***TimeQuery2.lngUserId
     AND tbl***TimeQuery2.datLogDateTime > tbl***TimeQuery.datLogDateTime
   ORDER BY tbl***TimeQuery2.datLogDateTime
  ) AS datEndDateTime
FROM tbl***TimeQuery
ORDER BY tbl***TimeQuery.lngUserId, tbl***TimeQuery.datLogDateTime;

这将给出以下内容:

lngUserId   datLogDateTime          datEndDateTime
1           01/01/2010 09:00:00 01/01/2010 10:00:00
1           01/01/2010 10:00:00 01/01/2010 11:29:00
1           01/01/2010 11:29:00 02/01/2010 10:00:00
1           02/01/2010 10:00:00 
2           02/01/2010 22:00:00 03/01/2010 11:00:00
2           03/01/2010 11:00:00 

这不是你想要的,但它是一个开始。

使用代码来做这些事情是最简单的,但这取决于你想如何使用它。据推测,您的数据中没有任何内容可以指示哪个条目是开始,哪个是结束。

【讨论】:

以上是关于vb6和msaccess的时间查询的主要内容,如果未能解决你的问题,请参考以下文章

带有子查询的 MS ACCESS 查询

从 VB6 向 MS Access 插入订单

VB6 - 将数据从 mySQL 表插入访问表

VB6、MS Access、DAO - 显示列名不为空的所有记录

旧版 VB6 应用程序访问 SQL 数据库迁移

SQL 查询和 MS Access 查询返回不同的数据