2016-02-12 33 views
1

我有一個名爲Crit with a Store列和TimeToRun列的表。DLookup,If-Then,Forms和Time

我創建了一個窗體,它的間隔是當觸發器將當前時間與我表中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通過我的代碼,即使我的一個時間被設置爲當前時間,它也永遠不會進入循環。

請幫忙!謝謝。

回答

1

您需要增量。找出你的上下襬動室兩次是「平等的」。這是你的三角洲。將其編入您的查詢。

p代碼:

商店代碼=使用DLookup( 「[存儲]」, 「暴擊」, 「ABS([TimeToRun] - 時間)<」 &三角洲)

0

我認爲你的問題在於您的通話DLookup這裏:

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

從問題的背景下顯然Crit有多個記錄。但是這個電話會始終返回第一個記錄的TimeToRun,因爲沒有標準。

所以你只會檢查第一個條目。

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