在报告中逐行检查

时间:2013-08-27 08:39:59

标签: vba ms-access database-design report

参考这个问题,

Changing Row Colour according to condition

我熟悉条件格式。但是我仍然面临这个问题。

我正在使用此代码将时间转换为分钟内的时间。

Dim TestString As String

TestString = Me.Duration

Dim TestArray() As String

TestArray = Split(TestString, ":")

Dim Hours As String
Dim Minutes As String
Dim Seconds As String

Dim HoursMinutes As Integer
Dim MinutesMinutes As Integer
Dim SecondsMinutes As Integer

Hours = TestArray(0)
Minutes = TestArray(1)
Seconds = TestArray(2)

HoursMinutes = CInt(TestArray(0)) * 60
MinutesMinutes = CInt(TestArray(1))
SecondsMinutes = CInt(TestArray(2)) / 60

Dim TimeInMinutes As Integer

TimeInMinutes = HoursMinutes + MinutesMinutes + SecondsMinutes

Me.Duration = TimeInMinutes

然而,由于某些原因,这不起作用。

您有什么想法如何为单独的行执行此操作?

提前致谢

ADD:

我尝试为Minutes创建一个字段,问题是它们会得到所有相同的数字。

1 个答案:

答案 0 :(得分:1)

以下代码有一个名为 dateTime 的String变量,它以这种格式存储当前日期和时间: 27/08/2013 10:55:52

dateTime 字符串被拆分为Variant arr 数组

Split(dateTime, Chr(32))(1)返回 10:55:52 变量的dateTime部分时间

然后Split(Split(dateTime, Chr(32))(1), ":")使用: (冒号)作为分隔符将时间分成3个数字

所以你最终得到arr持有小时数,分钟数,秒数。

CLng((arr(0) * 60) + arr(1) + (arr(2) / 60))返回计算出的时间值

的整数/长整数表示

将下面的sub粘贴在一个新模块中并运行它

Sub Convert()

    Dim dateTime As String
    dateTime = now

    Dim arr
    arr = Split(Split(dateTime, Chr(32))(1), ":")

    MsgBox "The time " & Split(dateTime, Chr(32))(1) & vbCrLf & _
        " as Integer is equal to " & CLng((arr(0) * 60) + arr(1) + (arr(2) / 60))

End Sub