2015-05-25 165 views
0

我有以下我的VBA代碼DCountDCOUNT返回0,但應該返回1

If DCount("*", "tbl2Employee_Order", _ 
    "[Operation_Date] = #" & Operation_Date & _ 
    "# AND [Employee_ID]= " & Employee_ID & _ 
    " AND [Order_ID] = " & Order_ID & _ 
    " AND [Model_Operation_ID] = " & MO_ID) = 0 Then 

    'some code to insert into tbl2Employee_Order 
Else 
    'some code to update the existing record 
End If 

但是,我總是DCount返回0,即使記錄已經存在。以下:

Debug.Print Operation_Date, Employee_ID, Order_ID, MO_ID, DCount("*", "tbl2Employee_Order", "[Operation_Date] = #" & Operation_Date & "# AND [Employee_ID]= " & Employee_ID & " AND [Order_ID] = " & Order_ID & " AND [Model_Operation_ID] = " & MO_ID) 

返回如預期值:

08/05/2015  2    526   1107   0 

除了最後一個,預計爲1(記錄已經存在)。

tbl2EmployeeOrder有這樣的記錄:

Operation_Date: 08/05/2015 
Employee_ID: 2 
Order_ID: 526 
Model_Operation_ID = 1107 

有趣的是,它使用沒有問題,工作在幾個星期前,突然它的行爲如果記錄不存在。

編輯:

以下:

Debug.Print TypeName(Operation_Date), TypeName(Employee_ID), TypeName(Order_ID), TypeName(MO_ID) 

結果:

Date   Integer  Integer  Integer 

而這些也都是變量類型在tbl2Employee_Order。

同樣,如果我使用DLookup(與一些列名稱),而不是DCount我得到一個Null值返回。

+0

是您的日期*變量*(非現場)5月8日或8月5日?訪問SQL需要mm/dd/yyyy格式的日期 - 除非最近發生了更改。在Acc。中交叉檢查。查詢編輯器? – LocEngineer

+0

我將問題限制爲日期(例如,如果從'DCount'中刪除日期,它會查找記錄)。然而,我試着返回日期,並從表格中返回它,格式與我搜索的格式相同(即.Dlookup(「Operation_Date」....)返回08/05/2015,如果我然後評估(調試。打印mydate = Dlookup(...))它返回true。任何想法?:x – emihir0

回答

2

您是否更改區域設置?怎麼樣

If DCount("*", "tbl2Employee_Order", _ 
"[Operation_Date] = #" & Format(Operation_Date,"mm/dd/yyyy") & _ 
"# AND [Employee_ID]= " & Employee_ID & _ 
" AND [Order_ID] = " & Order_ID & _ 
" AND [Model_Operation_ID] = " & MO_ID) = 0 Then 

刪除日期條件,看看它是否工作

+0

事實上,這是解決方案,我發現它在@LocEngineer指向我在這個方向(格式),並發現它是問題 – emihir0

+0

無法找到與DateTime.Parse()類似的VBA - 很好的學習了Format()的技巧。感謝您指出這一點。 – LocEngineer

+0

在希臘這裏是日期處理的事實.... :) – John

相關問題