【问题标题】:Error: Opening recordset with SQL statement MsAccess错误:使用 SQL 语句 MsAccess 打开记录集
【发布时间】:2014-07-02 19:22:29
【问题描述】:

我的目标是测试一个表的记录,如果该特定记录存在,什么也不做,否则做一些插入记录。我编写了以下 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 

我收到一个错误类型不匹配

Set objRecordset = CurrentDb.OpenRecordset(strSQL2, dbOpenDynaset, dbSeeChanges)

tblInstrumentInterfaceLog 的架构是:

  • [InstrumentInterfaceLogID] [int] IDENTITY(1,1) NOT NULL
  • [InstrumentName] nvarchar NOT NULL
  • [BatchID] [int] 非空
  • [文件名] nvarchar NOT NULL

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

【问题讨论】:

  • 在哪里声明 objRecordset 变量?
  • 添加了更多的声明
  • 在哪里打开到 SQL 的连接?此外,您应该列出字段而不是使用SELECT *,并且应该使用IF objRecordset.EOF 测试空记录集。

标签: sql sql-server ms-access vba


【解决方案1】:

我总是使用Set objRecordset = CurrentDB.OpenRecordset(strSQL2)取得成功

你能发布具体的错误信息吗?

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

【讨论】:

    【解决方案2】:

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

    还可以尝试将Dim objRecordset As ADODB.Recordset 替换为Dim objRecordset As Recordset

    【讨论】:

      【解决方案3】:

      替换

      Dim objRecordset As ADODB.Recordset
      

      Dim objRecordset As DAO.Recordset
      

      正如埃文所说。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多