2008-10-28 9 views

Répondre

0

Voici quelques VBA qui peut être utilisé pour vérifier une erreur dans les versions précédentes d'Access. Il peut également convenir à 2007.

Sub CheckForErr(tablename) 
Dim rs As dao.Recordset 
Dim db As Database 

Set db = CurrentDb 

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 Sub 
2

Aucun des objets de niveau application/base de données n'a une telle propriété "isCorrupted".

De plus, les bases de données corrompues n'ont pas de comportement standard. Selon la situation, la base de données peut ne pas s'ouvrir du tout (le fichier n'est pas reconnu comme un fichier mdb valide). S'il s'ouvre, une erreur peut survenir immédiatement ou lors de l'utilisation/ouverture d'un objet spécifique (table, formulaire ou code VBA).

Dans ces conditions, je ne pense pas qu'il y ait une réponse positive à votre question. Remarque: Outre l'option standard compact/repair d'Access, l'exportation d'objet vers d'autres bases de données (ou leur importation à partir de la base de données corrompue) ainsi que la commande .saveAsText non documentée peuvent s'avérer d'une aide précieuse.

+1

Il existe un article utile de Tony Toews sur la corruption: http://www.granite.ab.ca/access/corruptmdbs.htm – Fionnuala

0

Nous avions des problèmes de réseau causant la corruption dans une base de données d'accès sur notre lecteur partagé et j'ai passé beaucoup de temps à nettoyer les lignes corrompues à partir de quelques tables spécifiques.

Les champs mémo en particulier étaient une bonne indication de corruption car ils ne sont pas stockés en ligne comme le reste des données mais sont conservés dans une table séparée. Je pourrais ouvrir la table corrompue dans le mode de feuille de données et essayer de déterminer quelles lignes ont été corrompues en mettant l'accent sur une cellule de note corrompue - s'il y avait la corruption alors j'obtiendrais immédiatement une erreur.

Les colonnes Int et Date corrompues auraient des valeurs impaires (3/18/1890, -11100910, etc.) mais ne relèveraient pas d'erreur lors de la lecture de leurs valeurs. C'est pourquoi faire défiler tous les enregistrements et champs de la base de données comme indiqué dans le VBA à partir d'une réponse précédente est logique, mais fonctionnera de manière plus fiable uniquement si vous avez une corruption de champ mémo.

+1

Les champs de mémo sont conservés dans leur propre page dans une MDB Access, mais pas dans une table distincte. –

Questions connexes