2011-06-24 8 views
0

VBAでアクセスデータベースファイルに接続しようとしていますが、テーブルを作成しようとしていますが、値を挿入した後で値を返すことができないようです。たとえば、 "SELECT * FROM TESTME WHERE 'Portfolio' = 'FALL'というクエリは、常にレコードを返すことはありません。私は" While 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 End Subの

答えて

2

'Portfolio''FALL'は、2つの異なる文字列であると等しい決して互いに意志;ていなくても6月23日、2011年18:29で

さらに、テーブル定義文は同様の理由で正しいことがあります。

編集:
バッククォートは、ANSI SQL、そこにしようとする他のもののカップルではありませんので:

  1. ブラケット、または
  2. 二重引用符。

あなたがテーブル定義文を修正した後、このクエリを試みる場合があります:

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

編集:
例DDL要求によって...

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

[OK]を私はを参照することを意味実際の「Portfolo」列。それをどうやってやるの? – needsomehelp

+0

ありがとう、私のテーブル定義を定義する正しい方法は何ですか?実際にはこれらの列はプログラマチックに読み込まれているので、引用符で列名を囲む必要があるか、それを行うには他にもいくつかの方法があります。あなたは例を見せてもらえますか?どうもありがとう。 – needsomehelp

関連する問題