错误:使用SQL语句Ms Access打开记录集

时间:2014-07-02 19:22:30

标签: sql sql-server access-vba

我的目标是测试一个表以获取记录,如果该特定记录存在,则不执行任何操作,否则执行一些插入记录。我编写了以下SQL语句来尝试检索特定记录

Update: Dim strSQL2 As String
        Dim objRecordset As ADODB.Recordset
Dim BatchID As Long
Dim instrumentName As String
strSQL2 = "SELECT * FROM tblInstrumentInterfacelog " & _
          "WHERE BatchID = " & BatchID & " " & _
          "AND InstrumentName = '" & InstrumentName & "'" 
Set objRecordset = CurrentDb.OpenRecordset(strSQL2, dbOpenDynaset, dbSeeChanges)
If objRecordset.RecordCount > 0 Then
Else
"logic to insert record"
End if 

我在第

行收到错误 type Mismatch
Set objRecordset = CurrentDb.OpenRecordset(strSQL2, dbOpenDynaset, dbSeeChanges)

tblInstrumentInterfaceLog的架构是:

  • [InstrumentInterfaceLogID] [int] IDENTITY(1,1)NOT NULL
  • [InstrumentName] nvarchar NOT NULL
  • [BatchID] [int] NOT NULL
  • [FileName] nvarchar NOT NULL

我只需要提供代码的帮助,为什么会出现这种类型不匹配?

3 个答案:

答案 0 :(得分:0)

我一直使用Set objRecordset = CurrentDB.OpenRecordset(strSQL2)

取得了成功

您可以发布特定的错误消息吗?

您可以尝试使用DAO.recordset吗?

答案 1 :(得分:0)

根据您发布的内容,您的sql语句中的两个变量实际上并未设置为任何内容。尝试在msgbox中打印出strSQL2,并确保它是有效的SQL。

同时尝试将Dim objRecordset As ADODB.Recordset替换为Dim objRecordset As Recordset

答案 2 :(得分:0)

替换

Dim objRecordset As ADODB.Recordset

使用

Dim objRecordset As DAO.Recordset
正如埃文所说。