2017-12-24 33 views
1

質問TimeQueryという名前のクエリがあります。私はMsgBoxがすべて表示されるようにします[開始_時間][ID] = 1、2など... 私は問題があります。私が使用するとき:(VBA)ForループとDLookup(MS ACCESS)

a = DLookup("Hour([start_hour])", "TimeQuery", "[id]=1") 

をそれが良い動作しますが、使用は[ID]は=カウンタそれを示していないとき。私はそのループのあとにMsgBoxも持っていて、[id] =カウンタでもMsgBoxは表示されません。どうしましたか?

For counter = 1 To 3 
Dim a As Variant 
a = DLookup("Hour([start_hour])", "TimeQuery", "[id]=counter") 
MsgBox (counter) 
Next 
Debug.Print ("") 

答えて

2

あなたはそうのように、これを使用したい場合は、文字列にあなたの変数を連結する必要があります。

For counter = 1 To 3 
    Dim a As Variant 

    a = DLookup("Hour([start_hour])", "TimeQuery", "[id]=" & counter) 
    MsgBox (counter) 

Next 

Debug.Print ("") 

をしかし、あなたがこれを適切に行いたい場合は、使用レコードセット

Dim rs As DAO.Recordset 
Set rs = CurrentDb.OpenRecordset ("SELECT Hour([start_hour]) As hr FROM TimeQuery WHERE [id] <=3 ORDER BY ID ASC") 
Do While Not rs.EOF 
    MsgBox rs!hr 
    rs.MoveNext 
Loop