DLookup,If-Then,Forms和Time

时间:2016-02-12 22:45:09

标签: vba ms-access

我有一个名为Crit的表,其中包含Store列和TimeToRun列。

我创建了一个Form,其间隔在触发时将当前时间与我表中TimeToRun列中的时间进行比较,并触发另一个名为SendCC()的函数,并将Store字符串作为参数传递。这是我的代码:

Private Sub Form_Timer()

Dim storecode As String

If Time = DLookup("TimeToRun", "Crit") Then
storecode = DLookup("[Store]", "Crit", "[TimeToRun] = " & Time)
SendCC (storecode)
End If

End Sub

我将列设置为日期/时间数据格式,因此不应存在不匹配。但是,正如我F8通过我的代码,即使我的一个时间设置为当前时间,它也永远不会进入循环。

请帮忙!谢谢。

3 个答案:

答案 0 :(得分:1)

你需要一个三角洲。弄清楚你的上下摆动室两次是什么等于'。那是你的三角洲。将其编入您的查询。

p代码:

storecode = DLookup(" [Store]"," Crit"," abs([TimeToRun] - Time)<"& delta)

答案 1 :(得分:0)

我认为您的问题出在DLookup来电:

If Time = DLookup("TimeToRun", "Crit") Then

从问题的上下文中可以清楚地看出Crit有多条记录。但此次调用将始终返回第一个记录的TimeToRun,因为没有条件。

所以你只会检查第一个条目。

答案 2 :(得分:0)

你需要这样的东西:

Private Sub Form_Timer()

    Dim storecode As String
    Dim Moment As Date

    Moment = Time
    If DateDiff("s", Moment, DLookup("TimeToRun", "Crit")) = 0 Then
        storecode = DLookup("[Store]", "Crit", "DateDiff('s', [TimeToRun], #" & Format(Moment, "hh\:nn\:ss") & "#) = 0)")
        SendCC storecode
    End If

End Sub

但是,如前所述,第一个 DLookup 将始终找到相同的 TimeToRun