访问MDB VBA查询无法正常工作

时间:2011-06-24 01:23:35

标签: ms-access access-vba

我正在尝试连接到VBA中的访问数据库文件并创建一个表但我似乎无法在插入后查询这些值。例如,查询“SELECT * FROM TESTME WHERE'Portfolio'='FALL'总是返回没有记录。我甚至尝试过”虽然不是RS.EOF“,但它始终是真的。任何想法我的语法有什么问题?谢谢

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 结束子

1 个答案:

答案 0 :(得分:2)

'Portfolio''FALL'是两个不同的字符串,永远不会相等;甚至没有在2011年6月23日下午6:29。

更重要的是,由于类似的原因,您的表定义语句看起来不正确。

编辑:
由于反引号不是ANSI SQL,因此还有其他一些尝试:

  1. 括号或
  2. 双引号。
  3. 修复表定义语句后,您可以尝试此查询:

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

    编辑:
    按要求示例DDL ......

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