2016-09-28 66 views
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 

回答

1

使用Nz()處理您[RESMILE]領域的明顯NULL

因此改變strRESMILE = rs("RESMILE")strRESMILE = Nz(rs("RESMILE"))

+0

,對於RS( 「RESMILE」)和代碼工作,通過第一循環去了。我將Nz應用到rs(「RESMONTH」),執行代碼,現在執行第二個循環時出現類型不匹配錯誤。思考? RESMILE和RESMONTH的數據類型相同。 – casaler

+0

劃傷我以前的評論。我剛剛意識到我有rs(「RESMONTH」)等於dblDATEHOLD,它不是一個字符串;更改爲strRESMONTH並且代碼沒有錯誤地運行。你能告訴我爲什麼代碼不檢查VIN保持的第一項嗎?也就是說,如果VIN有3個條目,則只檢查條目2和3。 – casaler

+0

你能告訴我爲什麼代碼不檢查VIN保持的第一項嗎?也就是說,如果VIN有3個條目,則只檢查條目2和3。 – casaler