VB 如何求数据库里已经记录的时间差.....

dazhi518 2010-06-07 04:34:37
如下图: 求实际工时


各位帮忙改下代码:谢谢...
Dim i As Integer
Dim s As Variant
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenKeyset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Haiyang\桌面\
新建 Microsoft Office Access 应用程序.mdb;Persist Security Info=False"
rs.Open "select * from 123", cnn, adOpenKeyset, adLockOptimistic
For i = 1 To rs.RecordCount
s = DateDiff(s, Trim(rs.Fields("开工时间")), Trim(rs.Fields("完工时间")))
rs.Fields("实际工时") = s
rs.MoveNext
Next i
rs.Update
rs.Close
cnn.Close
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dazhi518 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lxq19851204 的回复:]
s = DateDiff(s, Trim(rs.Fields("开工时间")), Trim(rs.Fields("完工时间")))
rs.Fields("实际工时")=Format(DateAdd("s", s, 0), "hh:mm:ss")

试下可以不?
[/Quote]

可以呵呵...不过S这而要加双引号
s = DateDiff("s", Trim(rs.Fields("开工时间")), Trim(rs.Fields("完工时间")))
zm03173225 2010-06-07
  • 打赏
  • 举报
回复
关键看你要什么 然后再转化就可以了
lxq19851204 2010-06-07
  • 打赏
  • 举报
回复
s = DateDiff(s, Trim(rs.Fields("开工时间")), Trim(rs.Fields("完工时间")))
rs.Fields("实际工时")=Format(DateAdd("s", s, 0), "hh:mm:ss")

试下可以不?
dazhi518 2010-06-07
  • 打赏
  • 举报
回复
不知道.....我发现不用这个datediff函数也行.
直接这样写
For i = 1 To rs.RecordCount
t1 = rs.Fields("开工时间")
t2 = rs.Fields("完工时间")
rs.Fields("实际工时") = t2 - t1
rs.Update
rs.MoveNext
Next i
三个字段的格式设为日期/时间
不知道这样会不会有出现错误的时候....呵呵...
zm03173225 2010-06-07
  • 打赏
  • 举报
回复
S应该表示秒数啊 怎么会是日期呢
dazhi518 2010-06-07
  • 打赏
  • 举报
回复
继续求解......
dazhi518 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zm03173225 的回复:]
LS正解
s = DateDiff(s, Trim(rs.Fields("开工时间").value), Trim(rs.Fields("完工时间").value))
[/Quote]

不行...算出来的是日期...不是时间呀....那个S加单引号报错.加双引号不报错,但算出来结果的是日期
s = DateDiff("s", Trim(rs.Fields("开工时间").Value), Trim(rs.Fields("完工时间").Value))
zm03173225 2010-06-07
  • 打赏
  • 举报
回复
或者RS.EXCUTE "UPDATE 123 SET 实际工时=datediff('s',开工时间,完工时间)", cnn, adOpenKeyset, adLockOptimistic
zm03173225 2010-06-07
  • 打赏
  • 举报
回复
LS正解
s = DateDiff(s, Trim(rs.Fields("开工时间").value), Trim(rs.Fields("完工时间").value))
dazhi518 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 asftrhgjhkjlkttttttt 的回复:]
rs.Open "select 编号,开工时间,完工时间,datediff('s',开工时间,完工时间) as 实际工时 from 123", cnn, adOpenKeyset, adLockOptimistic
[/Quote]

要是一个一个的求怎么办 ,这样行吗 谢谢...
孤独剑_LPZ 2010-06-07
  • 打赏
  • 举报
回复
rs.Open "select 编号,开工时间,完工时间,datediff('s',开工时间,完工时间) as 实际工时 from 123", cnn, adOpenKeyset, adLockOptimistic

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧