2012-03-01 231 views
1

我有一個數據庫有一些損壞的記錄。在Access中查看錶格時,記錄將在字段中顯示「#Error」。同時彈出一個對話框「不是有效的書籤」。在處理某些VBA代碼中的這些記錄時,我得到相同的錯誤(錯誤編號爲3159)。我的問題是:如何在VBA中檢測這些損壞的記錄?我可以做到這一點,而不會陷入特定的錯誤?有沒有辦法使用SQL,我可以刪除這些記錄?我嘗試過「緊湊和修復」,但沒有碰到它們。處理「不是有效的書籤」。錯誤與記錄損壞

回答

0

也許:

Sub CheckForErr(tname) 
Dim rs As DAO.Recordset 
Dim db As Database 

Set db = CurrentDb 

If Left(tname, 4) <> "Msys" Then 

Set rs = db.OpenRecordset(tname) 

With rs 
    Do While Not .EOF 
     For Each fld In rs.Fields 
      If IsError(rs(fld.Name)) Then 
       Debug.Print "Error" 
      End If 
     Next 
     .MoveNext 
    Loop 
End With 


rs.Close 
Set rs = Nothing 
End If 

End Sub 
+0

不好,'isError'沒有檢測到錯誤。我也嘗試過'isNull',那沒有奏效。謝謝@Remou。 – GeezerGeek 2012-03-01 21:32:20

+0

您是否嘗試了http://support.microsoft.com/kb/283849中的步驟? – Fionnuala 2012-03-01 21:46:46

0

我試圖刪除使用VBA沒有成功的違規記錄。代碼刪除後,記錄仍然存在。我能夠通過手動刪除一條記錄然後使用「緊湊和修復」來解決這個問題。這是我必須爲客戶做的,我想。感謝大家。

0

在數據庫損壞的情況下,IMO最好的解決方案是創建一個新的空數據庫,並從損壞的數據庫中導入所有對象。