我有一个包含一些损坏记录的数据库。查看Access中的表时,记录在字段中显示“#Error”。同时弹出一个“非有效书签”对话框。在某些VBA代码中处理这些记录时,我得到相同的错误(错误号是3159)。我的问题是:如何在VBA中检测这些损坏的记录?我可以在不捕获特定错误的情况下执行此操作吗?有没有办法使用SQL我可以删除这些记录?我试过“紧凑和修理”而且它没碰到它们。
答案 0 :(得分:2)
我尝试使用VBA删除违规记录但没有成功。代码删除后记录仍然存在。我能够通过手动删除一条记录然后使用“紧凑和修复”来解决这个问题。我猜,这是我必须为客户做的事情。谢谢,大家。
答案 1 :(得分:1)
对于数据库损坏的IMO,最好的解决方案是创建一个新的空数据库,并从损坏的数据库中导入所有对象。
答案 2 :(得分: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
答案 3 :(得分:0)
我只是遇到了同样的问题。
解决方案:
1-选择“紧凑并修复”:这将以空行更改有问题的“ #Error”行。
2-删除空白行。 (因为它们为空,所以它们通常位于表的末尾。)