我創建了一個數據庫使用MS Access,它允許用戶選擇一個人和一個星期,並查看該人將要做的班次。VBA Dlookup不從表中選擇某些日期從下拉列表中選擇項目
這裏是我的問題,我已經得到了代碼工作使用使用DLookup使用pid搜索的工作人員,並尋找一個特殊的日子如下:正在使用的形式
'Look up shifts
If IsNull(DLookup("Monday", "tblShifts", "[SPID]= " & SPID)) Then
MsgBox "Sorry missing shifts", vbCritical, "Error"
Else
selectedDate = Form_frmMain.cboWeekCommencing.Value
'MsgBox selectedDate 'shows selected date
MonShift = DLookup("Monday", "tblShifts", "[SPID]= " & SPID & " AND [WeekBegin]= #" & selectedDate & "#")
TueShift = DLookup("Tuesday", "tblShifts", "[SPID]= " & SPID & " AND [WeekBegin]= #" & selectedDate & "#")
WedShift = DLookup("Wednesday", "tblShifts", "[SPID]= " & SPID & " AND [WeekBegin]= #" & selectedDate & "#")
ThurShift = DLookup("Thursday", "tblShifts", "[SPID]= " & SPID & " AND [WeekBegin]= #" & selectedDate & "#")
FriShift = DLookup("Friday", "tblShifts", "[SPID]= " & SPID & " AND [WeekBegin]= #" & selectedDate & "#")
SatShift = DLookup("Saturday", "tblShifts", "[SPID]= " & SPID & " AND [WeekBegin]= #" & selectedDate & "#")
End If
從上述圖像,日期下拉從接通形式負載以下代碼填充:
thisWeek = Date - Weekday(Date, vbMonday) + 1
nextWeek = Date - Weekday(Date, vbMonday) + 8
weekAfter = Date - Weekday(Date, vbMonday) + 15
cboWeekCommencing.AddItem (thisWeek)
cboWeekCommencing.AddItem (nextWeek)
cboWeekCommencing.AddItem (weekAfter)
這些各自涉及周開始22/05/2017
,29/05/2017
,05/06/2017
。當列表框或下拉框被改變時,調用頂層函數來填充輪班,但是當我選擇22/05/2017
和29/05/2017
的周時,它可以正常工作,但是當選擇05/06/2017
時,DLookup會返回NULL值。
有幾件事情我已經試過正在改變星期後幾周,如果日期設置爲,或26/06/2017
但時再12/06/2017
用作日期不工作再正常工作。
當只使用員工ID時,一切正常。
有沒有人知道爲什麼會發生這種情況?
是的cboWeekCommencing是日期/時間。我明白你說的話,但在選擇查詢確定表中的搜索將作爲我得到的問題是從05/06/2017。是的,我在英國格式化日期爲dd/mm/yyyy –
我不明白你說的是什麼。在SELECT查詢中,如果您傳遞其他字段,則行爲會有所不同。任何時候您使用DLOOKUP時,都需要格式化日期#MM/DD/YYYY#。如果你這樣做,你還有問題嗎? –
對不起,我打算在DLookup中說不是SELECT。它現在拋出一個類型不匹配的錯誤,這是在格式化日期之後,你建議的方式是因爲需要更新表格以使#MM/DD/YYY#格式的日期更新? –