Sql 访问VBA类型不匹配

Sql 访问VBA类型不匹配,sql,ms-access,vba,Sql,Ms Access,Vba,我正在为一家当地租赁公司创建一个数据库。我现在要做的是创建一些可以定期运行的代码,以便将账单添加到数据库中 我在这里引用了两个表,第一个是tblRental,它是一个租赁单元表,包括作为主键的rentalID、租赁状态和每月租金,每个单元的租金不同。另一种是tblTransaction,其中包括rentalID作为1对多关系中的外键,以及名为UnitRate的每张票据的金额。在数据库中,rentalID和UnitRate都设置为数字 我现在的代码是 Dim maxRentalID As Inte

我正在为一家当地租赁公司创建一个数据库。我现在要做的是创建一些可以定期运行的代码,以便将账单添加到数据库中

我在这里引用了两个表,第一个是tblRental,它是一个租赁单元表,包括作为主键的rentalID、租赁状态和每月租金,每个单元的租金不同。另一种是tblTransaction,其中包括rentalID作为1对多关系中的外键,以及名为UnitRate的每张票据的金额。在数据库中,rentalID和UnitRate都设置为数字

我现在的代码是

Dim maxRentalID As Integer

Dim db As Database
Dim rentID As DAO.Recordset
Dim unit As DAO.Recordset
Set db = CurrentDb
maxRentalID = Combo4.Value

For i = 1 To maxRentalID
    Set rentID = db.OpenRecordset("SELECT tblRental.RentalID, tblRental.Status FROM tblRental WHERE (((tblRental.Status)='3') AND ((tblRental.RentalID)=" & i & "));")
    Set unit = db.OpenRecordset("SELECT tblRental.Rentalcharge FROM tblRental WHERE (((tblRental.RentalID)=" & i & "));")
    If rentID Is Not Null Then
        DoCmd.RunSQL "INSERT INTO tblTransction ([RentalID], [UnitRate]) VALUES (" & rentID, unit & ");"
    End If
Next
maxRentalID是从一个确定最后一条记录的ID的表单中获得的,这样for循环将一直执行到结束

现在我得到一个类型不匹配错误,它告诉我问题是DoCmd.RunSQL行中的rentID

我试图让循环运行一个查询,如果它是一个有效的结果(存在的RentalID上的状态=3),则在tblTransaction中插入一条新记录,其中包含该RentalID和相应的计费率


根据调试器所说的,我假设所发生的事情是,SQL没有被计算到一个语句中,查询值被分配给变量,它试图将该语句放入一个不起作用的数字字段中。然而,我不知道如何使其正确评估。我尝试过使用OpenRecordSet,但它不起作用。

我会在没有循环和打开记录集的情况下使用它:

Dim maxRentalID As Integer
maxRentalID = Combo4.Value

CurrentDb.Execute "INSERT INTO [tblTransction] ([RentalID], [UnitRate]) " & _ 
                "SELECT [tblRental].[RentalID], [tblRental].[Rentalcharge] " & _ 
                "FROM [tblRental] " & _ 
                "WHERE [tblRental].[Status]='3' AND " & _ 
                      "[tblRental].[RentalID] BETWEEN 1 AND " & maxRentalID
1)
rentID
unit
是记录集,但不是值。2) 如果rentID不为Null,则将
替换为
如果不为rentID.EOF,则将
替换为
值(“&rentID,unit&”);“
-->
值(&rentID.Fileds(“RentalID”)、unit.Fileds(“Rentalcharge”)&”)”