0
我的代碼生成無效使用空,我沒有看到問題。當我編譯代碼時,我沒有收到錯誤,但是當我運行並調試它時,錯誤發生在strRESMILE = rs(「RESMILE」)。生成查詢碼無效使用空
有什麼想法?如果需要,我可以上傳數據庫。
Sub COMPARE()
On Error GoTo err_COMPARE
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strHold As String
Dim strRESMILE As String
Dim strRESMONTH As String
Dim dblMILEAGEHold As Double
Dim dblDATEHold As Double
Set db = CurrentDb
strSQL = "SELECT * FROM TABLE3"
Set rs = db.OpenRecordset(strSQL)
With rs
' If Not .BOF And Not .EOF Then
' .MoveLast
' .MoveFirst
If Not .BOF Then
strHold = rs("VIN")
dblMILEAGEHold = rs("MILES")
.Edit
rs("RESMILE") = ""
.Update
.MoveNext
'While (Not .EOF)
Do Until .EOF
.Edit
If rs("VIN") = strHold Then
'do comparison
If rs("MILEAGE") > rs("MILES") Then
rs("RESMILE") = "Y"
Else
rs("RESMILE") = "N"
End If
End If
.Update
strHold = rs("VIN")
strRESMILE = rs("RESMILE")
.MoveNext
' Wend
Loop
End If
End With
Set db = CurrentDb
strSQL = "SELECT * FROM TABLE3"
Set rs = db.OpenRecordset(strSQL)
With rs
If Not .BOF Then
strHold = rs("VIN")
dblDATEHold = rs("MONTHS")
.Edit
rs("RESMONTH") = ""
.Update
.MoveNext
Do Until .EOF
.Edit
If rs("VIN") = strHold Then
'do comparison
If rs("INSM") > rs("MONTHS") Then
rs("RESMONTH") = "Y"
Else
rs("RESMONTH") = "N"
End If
End If
.Update
strHold = rs("VIN")
dblDATEHold = rs("RESMONTH")
.MoveNext
Loop
End If
End With
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
MsgBox "Comparisons Completed!"
exit_COMPARE:
Exit Sub
err_COMPARE:
MsgBox Err.Description
Resume exit_COMPARE
End Sub
,對於RS( 「RESMILE」)和代碼工作,通過第一循環去了。我將Nz應用到rs(「RESMONTH」),執行代碼,現在執行第二個循環時出現類型不匹配錯誤。思考? RESMILE和RESMONTH的數據類型相同。 – casaler
劃傷我以前的評論。我剛剛意識到我有rs(「RESMONTH」)等於dblDATEHOLD,它不是一個字符串;更改爲strRESMONTH並且代碼沒有錯誤地運行。你能告訴我爲什麼代碼不檢查VIN保持的第一項嗎?也就是說,如果VIN有3個條目,則只檢查條目2和3。 – casaler
你能告訴我爲什麼代碼不檢查VIN保持的第一項嗎?也就是說,如果VIN有3個條目,則只檢查條目2和3。 – casaler