首页新闻找找看学习计划

在数据库access 利用vba 语言 -最终目的是求出某个时间段里面的登陆时间是多少

0
悬赏园豆:100 [已解决问题] 解决于 2012-07-03 10:11

 

这是需要用到的数据库表  使用的数据库是access 使用编程语言vba 

实现的功能 是 计算 登陆时间

 登陆时间计算方法 :数据的状态 有连接和断开 两种, 登陆时间的计算方法 是断开的时间 减去 连接的时间  但是要注意 状态上有出现连续 好几个连接 或者是断开 的现象

这就需要判断咯。 这个是 一对一的 连接和断开 才管用

比如:

 

上面这个是连着两个 连接 可以根据时间 来判断  看断开的时间 是18:31:50 找比这个时间小的  但是要最接近这个时间的连接时间18:28:42  然后用 断开的时间减去连接的时间。

 

最终目的 是 求出 某个时间段里面的登陆时间是多少? 此问题 周一结束   各位大虾 赶早哦 100 哦 不过我要 整个过程 还要有注释哦...要是详细了  可追加20-50

问题补充:

麻烦 连接数据库 的 过程也 给我  。   我vba直接在 access 里面写 给完  给分。。

寒灬丶的主页 寒灬丶 | 初学一级 | 园豆:121
提问于:2012-06-29 18:55
< >
分享
最佳答案
0
'断开时间作为一个分界线

conn '这些数据库基本连接对象自己会写吧?

Sub Main()

dim sql,rs

sql = "select * from ClientLoginLog where StateFlag='断开' order by RegTime ASC"

set rs = conn.execute(sql)

while not rs.eof

  dim EndTime '用于记录断开时间

  dim StartTime '用于记录开始时间

EndTime = rs("RegTime")

 StartTime = GetStartTime(EndTime)

 if StartTime<>"" then 
   '输出该时间段

    Debug.print "连接时间:"&StartTime&" 断开时间:"&EndTime&" 持续时长:"&DateDiff("s",CDate(EndTime),CDate(StartTime))

end if 

  rs.movenext

wend

'释放连接

rs.close

set rs = nothing

conn.close 

set conn = nothing 

End Sub

Function GetStartTime(EndTime)

   dim rs,starttime

GetStartTime = ""

   set rs = conn.Execute("SELECT TOP 1 * FROM [ClientLoginLog] WHERE RegTime<'"&EndTime&"' And StateFlag='连接'" order by RegTime DESC) '取出最近一条连接记录

 if not rs.eof then 

   starttime = rs("RegTime")

    '判断此条连接记录是否有效,中间不能包含断开记录

     set rs  = conn.execute("SELECT Count(*) AS CT FROM [ClientLoginLog] WHERE RegTime<'"&EndTime&"' And RegTime>'"&StartTime&"'" ")

   if rs("CT")=0 then

    GetStartTime   = starttime
  end if

 end if

End Function
收获园豆:100
Teddy110 | 菜鸟二级 |园豆:327 | 2012-06-30 10:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册