2012-04-05 121 views
2

我在Access數據庫中有VBA代碼。我在代碼中收到了一條錯誤消息「運行時錯誤3464 - 表達式中的數據類型不匹配」。這條線的正確格式是什麼?我確定它只是一個簡單的引號或缺少一行。訪問查詢 - MS Access查詢語句格式正確

在數據庫中,有一列稱爲APIC成員。我只想要在單元格中列出「1」的記錄。

Table$ = "SELECT * From WHY_Open_Cases_YTD WHERE WHY_Open_Cases_YTD.[APIC Member] = 1;" 
Set RST = myDB.OpenRecordset(Table$) 

請告知我做錯了什麼。當我調試這條消息時,我得到的Set RST = myDB.OpenRecordset (Table$)被突出顯示。

回答

0

「Data Type Mismatch」聽起來像是在打開錯誤類型的Recordset。
myDB.OpenRecordset()預計DAO.Recordset,而您的RST可能是ADODB.Recordset

進行了較爲深入的解釋看到這個答案:
Open recordset in Access 2003/2007

1

在我的Access 2003和2007和系統,用於錯誤#完整說明3464是「標準表達式數據類型不匹配」。數據庫引擎正在抱怨你要求它使用的SQL語句。

如果[APIC Member]是文本數據類型而不是數字數據類型,請在您比較的值周圍添加引號。

Table$ = "SELECT * From WHY_Open_Cases_YTD WHERE [APIC Member] = '1';" 
+0

謝謝。數據類型不是文本。這是一個數字(數字將是一個或零,我是否應該添加引號?) – JenP 2012-04-05 11:07:56

+0

在這種情況下,只需使用引號嘗試一次,並告訴我們收到了什麼錯誤消息,稍後可以刪除它們。奇怪的是,這個錯誤信息可能會產生一些影響 – HansUp 2012-04-05 13:49:04

0

嘗試

Table$ = "SELECT * From WHY_Open_Cases_YTD WHERE '[APIC Member]' = '1';" 

我有同樣的問題與DAO,而且事實證明,它不會接受SQL查詢,直到您所引述的字段名稱爲好。

+0

這是錯誤的,並且不起作用,並且您知道問題是4歲? – Andre 2016-04-16 21:14:27