2011-06-24 79 views
0

我想連接到VBA中的訪問數據庫文件並創建一個表,但我似乎無法在插入它們後查詢這些值。例如,查詢「SELECT * FROM TESTME WHERE'Portfolio'='FALL'總是返回沒有記錄,我甚至嘗試過」While NOT RS.EOF「,但它總是如此。 。訪問MDB VBA查詢不起作用

Sub CreateTblinDb() 
On Error GoTo errhandler: 
Dim scon As String 
Dim ssql As String 

scon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
    "Jet OLEDB:Engine Type=" & Jet4x & _ 
    ";Data Source=" & "C:\a2000.mdb" 
'creates a table in the database 

Dim cn As ADODB.Connection 
Dim rs As ADODB.Recordset 

ssql = "CREATE TABLE TESTME2 ('Portfolio' memo, 'TradeType' memo)" 

Set cn = New ADODB.Connection 

cn.Open scon 
cn.Execute ssql 

ssql = "INSERT INTO TESTME2 VALUES('FALL','TEST')" 
cn.Execute ssql 

ssql = "SELECT * FROM TESTME2 WHERE 'Portfolio' = 'FALL'" 

Set rs = New ADODB.Recordset 

rs.Open ssql, cn, adOpenKeyset, adLockOptimistic 
Debug.Print rs.RecordCount ' ALWAYS RETURNING 0 

Exit Sub 

errhandler: MSGBOX Err.Description 結束小組

回答

2

'Portfolio''FALL'是兩個不同的字符串和永遠不會彼此相等,甚至沒有在2011年6月23日在下午6時29

更重要的是,您的表定義語句不會ook由於類似的原因正確。

編輯:
由於反引號不是ANSI SQL,還有幾個其他的事情嘗試:

  1. 支架,或
  2. 雙引號。

在修復表定義語句,你可以試試這個查詢:

SELECT * FROM TESTME2 WHERE [Portfolio] = 'FALL' 

編輯:
例DDL的請求......

CREATE TABLE TESTME2 ([Portfolio] memo, [TradeType] memo) 
+0

好吧,我的意思是指實際'Portfolo'列。我該如何去做呢? – needsomehelp

+0

謝謝,什麼是定義我的表定義的正確方法?請注意,這些列在實際中是可讀的,並且它們可能有空格,這就是爲什麼我需要用引號括住列名或者是否有其他方式來實現它?你能舉一個例子嗎?非常感謝。 – needsomehelp