簡體   English   中英

訪問 VBA 類型不匹配

[英]Access VBA type mismatch

我正在為當地的租賃公司創建一個數據庫。 我現在要做的是創建一些可以定期運行以將賬單添加到數據庫的代碼。

我在這里引用了兩個表,第一個是 tblRental,它是一個租賃單元表,其中包括作為主鍵的租賃 ID、租賃狀態和月租金,每個單元都不同。 另一個是 tblTransaction,其中包括作為 1 對多關系中的外鍵的租賃 ID,以及名為 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM