打开记录集时出现数据类型不匹配错误



我在VBA 中编写了以下代码

Option Compare Database
Option Explicit
Private Sub MainButt_Click()
Dim mydb As Database
Dim Frs As DAO.Recordset
Dim Srs As Recordset
Dim strsql As String

strsql = "SELECT * FROM Firstable WHERE TransferDate <'" & Date & "'"
Set Frs = CurrentDb.OpenRecordset(strsql)
Set Srs = CurrentDb.OpenRecordset("secondtable")

编译器给我一个数据不匹配的错误并在终点前停在终点线上如果我不使用where条件,一切都会顺利所以我需要知道错误在哪里

您的问题是因为当您将Date连接到SQL字符串中时,您需要用八方括号("#"(而不是单引号来包装它:

strsql="SELECT * FROM Firsttable WHERE TransferDate<" & Format(Date,"#mm/dd/yyyy#")

此外,对于日期,您需要确保它们是明确的(即06/07/20 7月6日或6月7日(,因此包含Format。由于您只是使用当前日期,因此实际上不需要连接日期:

strsql="SELECT * FROM Firsttable WHERE TransferDate<Date();"

最后,使用Set frs=CurrentDb.openRecordset可能会遇到问题,因为这可能超出了范围。最好声明一个数据库对象,然后使用它:

Dim db As DAO.Database
Set db=DBEngine(0)(0)
Set frs=db.OpenRecordset(strsql)

问候,

相关内容

最新更新