2012-03-01 18 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'も試しましたが、うまくいきませんでした。ありがとう@リムー。 – GeezerGeek

+0

http://support.microsoft.com/kb/283849の手順を試しましたか? – Fionnuala

0

私は成功せず、VBAを使用して、問題のレコードを削除しようとしました。レコードは、コードがそれらを削除した後も残っていました。私はこれを回避するために手動で1レコードを削除してから "compact and repair"を使用しました。これは私が顧客のためにやらなければならないことです。みんな、ありがとう。

0

データベースが壊れている場合は、新しい空のデータベースを作成し、破損したデータベースからすべてのオブジェクトをインポートすることをお勧めします。

関連する問題