2012-03-01 3 views
1

손상된 레코드가있는 데이터베이스가 있습니다. Access 내에서 테이블을 볼 때 필드에 "#Error"와 함께 레코드가 표시됩니다. 동시에 "유효한 책갈피가 아닙니다."라는 대화 상자가 나타납니다. 일부 VBA 코드에서 이러한 레코드를 처리하는 동안 동일한 오류가 발생합니다 (오류 번호는 3159 임). 내 질문은이 : VBA 내에서 이러한 손상된 레코드를 어떻게 검색 할 수 있습니까? 특정 오류를 포착하지 않고이 작업을 수행 할 수 있습니까? SQL을 사용하여 이러한 레코드를 삭제할 수있는 방법이 있습니까? 나는 "compact and repair"를 시도했고 그것들을 만지지 않았다. 아마도"유효한 북마크가 아닙니다." 손상된 레코드의 오류

답변

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

+0

http://support.microsoft.com/kb/283849에서 단계를 시도 했습니까? – Fionnuala

0

내가 성공하지 VBA를 사용하여 문제가되는 기록을 삭제하려고했습니다. 코드가 코드를 삭제 한 후에도 레코드는 남아있었습니다. 수동으로 한 레코드를 삭제 한 다음 "압축 및 복구"를 사용하여이 문제를 해결할 수있었습니다. 이것은 고객을 위해해야 ​​할 일입니다. 고마워, 모두들.

0

데이터베이스가 손상된 경우 IMO에서 가장 좋은 해결책은 비어있는 새 데이터베이스를 만들고 손상된 데이터베이스에서 모든 개체를 가져 오는 것입니다.

관련 문제