Office中国论坛/Access中国论坛

标题: 请教一个追加查询的问题 [打印本页]

作者: lazybird    时间: 2012-6-7 10:59
标题: 请教一个追加查询的问题
请教一个追加查询的问题。两个按员工号排列的登录时间和退出时间表格,现想通过追加查询将两个时间汇总到一张表。追加的时候除了判断员工号一致外还须判断下列两个条件:
1.  退出时间必须大于登录时间。
2.  退出时间大于多次登录时间时必须追加到最接近的那一条记录。例如:登录时间有 3-15,4-15两条记录,退出时间为6-15,则只追加到4-15这一行。

(抱歉网络问题上传不了附件)下面为示例查询结果。

员工号        登录时间               退出时间
1001        6/15/2011       
1001        3/15/2011        4/15/2011
1001        4/15/2011        5/15/2011
1002        3/15/2011       
1002        4/15/2011        5/15/2011
1003        6/15/2011       
作者: Henry D. Sy    时间: 2012-6-7 12:37
那就等传来附件再说!
作者: lazybird    时间: 2012-6-7 20:36
这是附件,版主有空帮忙看看
作者: lazybird    时间: 2012-6-9 11:24
自己顶下
作者: Henry D. Sy    时间: 2012-6-9 15:00
表中数据会不会出现最小的退出时间小于最小的登陆时间?
作者: Henry D. Sy    时间: 2012-6-9 15:15
如果结果是0:00:00说明还没有退出
  1. Public Function gDATE(id As String, myDate As Date) As Date
  2.     Dim strSQL As String
  3.     Dim rs As New ADODB.Recordset
  4.     On Error GoTo gDATE_Error

  5.     strSQL = "select 退出时间 from 退出时间 where 工号='" & id & "' And 退出时间>#" & myDate _
  6.              & "# order by 退出时间"
  7.     rs.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  8.     gDATE = rs.Fields(0)
  9.     rs.Close
  10.     Set rs = Nothing

  11.     On Error GoTo 0
  12.     Exit Function

  13. gDATE_Error:

  14.     MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
  15. End Function
复制代码
  1. SELECT 时间汇总.工号, 时间汇总.登录时间, gDATE([工号],[登录时间]) AS 退出时间
  2. FROM 时间汇总
复制代码
[attach]49326[/attach]

自己看看对不对,我没有核对!
作者: lazybird    时间: 2012-6-11 10:58
不符合追加条件的话就不追加, 例如表中数据出现最小的退出时间小于最小的登陆时间, 或者出现最大退出时间小于最大的登陆时间。 版主,我运行了一下你的附件,出现 "Error 430 (Class does not support Automation or does not support expected interface)"




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