Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Défis

Défis Ce forum est celui des défis et challenges Office. Prêts à relever le gant ? C'est parti !

Réponse
 
Outils de la discussion
Vieux 06/05/2008, 22h06   #1 (permalink)
Membre expérimenté
 
Date d'inscription: août 2006
Messages: 597
Par défaut La table existe-t-elle ?

Remplacer ce qui est entre parenthèse par un test de l'existence d'une table

Code :
 
 If  (la table NomTable existe) Then DoCmd.DeleteObject acTable, NomTable
 
Sans créer de fonction, le test de l'existence de la table ne doit pas provoquer d'erreur.

Peut-être trop facile pour les experts. Alors se sera la meilleure solution.
La mienne fonctionne sous Access 2003.
helas est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/05/2008, 23h07   #2 (permalink)
Rédacteur
 
Avatar de LedZeppII
 
Date d'inscription: décembre 2005
Localisation: IdF
Messages: 2 064
Par défaut

Bonsoir,

Inspiré de ce qui se pratique sur SQL serveur:
Code :
Dim strNomTable As String
strNomTable = "Nom de la atble"
If DCount("*", "MSysObjects", "type=1 AND Name='" & strNomTable & "'")=1 Then DoCmd.DeleteObject acTable, strNomTable
A+

Edit : type=4 pour les tables liées ODBC, type=6 pour table liées Acces, Excel, Texte

Dernière modification par LedZeppII ; 06/05/2008 à 23h21
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/05/2008, 07h08   #3 (permalink)
Membre expérimenté
 
Date d'inscription: août 2006
Messages: 597
Par défaut

Bravo LedZeppII
C'est effectivement la solution que j'avais

Code :
 
If -DCount("*", "MSysObjects", "type=1 AND Name='" & strNomTable & "'") Then DoCmd.DeleteObject acTable, strNomTable
 
Je pensais trouver une fonction cachée, on ne sait jamais ...
A ce sujet, en existe-t-il ?
helas est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/05/2008, 12h26   #4 (permalink)
Rédacteur/Modérateur
 
Avatar de Demco
 
Date d'inscription: mai 2002
Localisation: Bordeaux / Lacanau-Océan, entre deux vagues
Âge: 27
Messages: 1 391
Par défaut

Voici une autre méthode utilisée dans la FAQ :
http://access.developpez.com/faq/?pa...les#TableExist

Pas de fonctionnalité caché permettant de savoir ça directement apparemment.
__________________
Modérateur Access & Web
Débogage des requêtes SQL écrites par VBA -- Vos cours Access -- Votre FAQ Access
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment.

*~* >>>>> A Lire Avant De Poster - Imperatif
Java User Group enfin sur Bordeaux. Inauguration le 9/10/08.
Demco est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/05/2008, 12h53   #5 (permalink)
Membre Confirmé
 
Date d'inscription: juillet 2005
Localisation: Mimet
Messages: 246
Par défaut Portable

Bonjour,

une autre bon d'accord
rien à voir avec les autres mais portable sur ADP

Code :
 
Function ExisteTable(Nomtable As String) As Boolean
    On Error GoTo err:
    Dim MCat As New ADOX.Catalog
    Dim MTable As ADOX.Table
    Set MCat.ActiveConnection = CurrentProject.Connection
    Set MTable = MCat.Tables(Nomtable)
    
    ExisteTable = True
err:
    Set MCat = Nothing
    Set MTable = Nothing
    Exit Function
End Function
 
Function SupprimerTable(Nomtable As String) As Boolean
    On Error GoTo err
    Dim MCat As New ADOX.Catalog
    Set MCat.ActiveConnection = CurrentProject.Connection
    MCat.Tables.Delete (Nomtable)
    SupprimerTable = True
err:
    Set MCat = Nothing
    Exit Function
End Function
 
' Ca donne 
 
If ExisteTable("latable") = True Then SupprimerTable "latable"
 
 
a+
naphta est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/05/2008, 12h55   #6 (permalink)
Membre Confirmé
 
Date d'inscription: juillet 2005
Localisation: Mimet
Messages: 246
Par défaut désolé

bonjour,
J'avais pas vu c'était dans la FAQ .....gasp
a+
naphta est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/05/2008, 14h31   #7 (permalink)
Responsable MSOffice
 
Avatar de Lou Pitchoun
 
Date d'inscription: février 2005
Localisation: Au soleil, Made In Marseille
Âge: 30
Messages: 5 137
Envoyer un message via MSN à Lou Pitchoun
Par défaut

Salut,

Citation:
Envoyé par Demco Voir le message
Voici une autre méthode utilisée dans la FAQ :
http://access.developpez.com/faq/?pa...les#TableExist

Pas de fonctionnalité caché permettant de savoir ça directement apparemment.
ok.

Citation:
Envoyé par naphta Voir le message
Bonjour,

une autre bon d'accord
rien à voir avec les autres mais portable sur ADP

Code :
 
Function ExisteTable(Nomtable As String) As Boolean
    On Error GoTo err:
    Dim MCat As New ADOX.Catalog
    Dim MTable As ADOX.Table
    Set MCat.ActiveConnection = CurrentProject.Connection
    Set MTable = MCat.Tables(Nomtable)
    
    ExisteTable = True
err:
    Set MCat = Nothing
    Set MTable = Nothing
    Exit Function
End Function
 
Function SupprimerTable(Nomtable As String) As Boolean
    On Error GoTo err
    Dim MCat As New ADOX.Catalog
    Set MCat.ActiveConnection = CurrentProject.Connection
    MCat.Tables.Delete (Nomtable)
    SupprimerTable = True
err:
    Set MCat = Nothing
    Exit Function
End Function
 
' Ca donne 
 
If ExisteTable("latable") = True Then SupprimerTable "latable"
 
 
a+
Re ok.

Sauf que :
Citation:
Envoyé par helas Voir le message
Sans créer de fonction, le test de l'existence de la table ne doit pas provoquer d'erreur.
__________________
Responsable Office
Futurs Modérateurs, Rédacteurs : We need you

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Défis

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide