[VBA] Suppression d'un objet.

Suppression d'un objet. [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 13-06-2007 à 11:42:56    

Bonjour,
 
j'ai une base Access et je voudrais supprimer une table.
Le souci c'est qu'elle n'existe pas forcément, et donc si je fait un DeleteObject je me tape une erreur.
Je dois pouvoir passer ça en gérant le code erreur, mais ce n'est pas très propre.
 
Y a t il une solution pour forcer la suppression, ou pour tester l'existence d'un objet ?
 
 
Merci

Reply

Marsh Posté le 13-06-2007 à 11:42:56   

Reply

Marsh Posté le 13-06-2007 à 11:48:24    

passe par la requete  
"DROP TABLE Tableàdégager"
 
tu peux utiliser ce bout de code pour tester si ta table existe:

Code :
  1. Function fExistTable(strTableName As String) As Boolean
  2. Dim i As Integer
  3.  
  4.     fExistTable = False
  5.     CurrentDb.TableDefs.Refresh
  6.     For i = 0 To CurrentDb.TableDefs.Count - 1
  7.         If strTableName = CurrentDb.TableDefs(i).Name Then
  8.             'Table Exists
  9.             fExistTable = True
  10.             Exit For
  11.         End If
  12.     Next i
  13. End Function


 
au final, tu mets donc ceci :

Code :
  1. if fExistTable("Tableadégager" ) then
  2. DoCmd.RunSQL "DROP TABLE Tableàdégager"
  3. end if

Reply

Marsh Posté le 13-06-2007 à 13:12:12    

jpcheck a écrit :

Code :
  1. Function fExistTable(strTableName As String) As Boolean
  2. Dim i As Integer
  3.  
  4.     fExistTable = False
  5.     CurrentDb.TableDefs.Refresh
  6.     For i = 0 To CurrentDb.TableDefs.Count - 1
  7.         If strTableName = CurrentDb.TableDefs(i).Name Then
  8.             'Table Exists
  9.             fExistTable = True
  10.             Exit For
  11.         End If
  12.     Next i
  13. End Function



Merci beaucoup :jap:

Reply

Marsh Posté le 13-06-2007 à 13:39:11    

Une gestion d'erreur adaptée peut aider quand même

Function fExistTable(strTableName As String) As Boolean
    Dim tbdef As TableDef
     
    On Error Resume Next
    Set tbdef = CurrentDb.TableDefs(strTableName)
    fExistTable = Not tbdef Is Nothing
    Set tbdef = Nothing
     
End Function

J'ai une préférence pour cette version, mais au final ça ne doit pas changer grand chose.

Reply

Marsh Posté le 13-06-2007 à 15:35:05    

Effectivement une gestion d'erreur au sein d'une fouction qui ne ferait que tester son existence fonctionne.
D'ailleurs maintenant je me rappelle que j'avais utilisé ce principe (fonction avec gestion d'erreur sans conséquence) il y a qq années, et il me semble bien que c'était également pour droper des tables :lol: j'me fait vieux ...  
 
Merci les gars en tous cas :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed