IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Supprimer les objets d'une BD externe


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Points : 62
    Points
    62
    Par défaut Supprimer les objets d'une BD externe
    Bonjour,

    Je souhaite écrire une procédure pour supprimer une série complète d'objets d'une base de donnée externe.
    J'ai trouvé ce code dans la FAC Access pour supprimer un objet déterminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Function DeleteObjectExterne() 
    Dim acApp As Access.Application 
    Set acApp = GetObject("toto.mbd") 
    acApp.DoCmd.DeleteObject acForm, "nom_form" 
    acApp.Quit 
    Set acApp = Nothing 
    End Function
    Pour supprimer une série complète, par exemple tous les forms, je pense qu'il faut faire une boucle. Mais je n'arrive pas à adapter le code ci-dessus.
    Pouvez vous m'aider?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 653
    Points : 34 370
    Points
    34 370
    Par défaut
    salut,
    les boucles For Each sont à utiliser dans ton cas :
    de plus une variable Database peut simplifier le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim tmpForm as Form
     
    For Each tmpForm In db.Containers("Forms")
    acApp.DoCmd.DeleteObject acForm, tmpForm.Name
    Next

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    Merci jpcheck pour le tuyau sur la boucle.
    J'ai laissé ce problème de coté quelques jours car j'en avais un autre plus urgent à régler.
    Comme j'avais des soucis pour faire tourner la boucle, je suis revenu sur le code simple qui permet de supprimer un seul module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim strdatabase As String
    Dim db As DAO.Database
    Dim acApp As Access.Application
        strdatabase = OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Fichier Access", "mdb")
        Set acApp = GetObject(strdatabase)
        acApp.DoCmd.DeleteObject acReport, "EGA-Enfants Internes"
        acApp.Quit
        Set acApp = Nothing
        MsgBox "Module supprimé"
    Le code s'exécute apparemment sans erreur, mais si je veux accéder à la db pour vérifier si la suppression est effective, une boîte de dialogue s'ouvre qui me demande 'Entrez le mot de passe de la base de données'.
    La base n'est protégée par aucun mot de passe et il me refuse mon mot de passe de session Vista.
    Si je relance la suppression j'ai une erreur 7874 : impossible de trouver EGA..., mais la db s'ouvre, je peux donc vérifier que la suppression est effective et effectuer des transactions normalement.
    Cependant lorsque je veux fermer cette db par un bouton 'Fermer' dans un formulaire, j'ai à nouveau la boîte de dialogue 'Entrez le mot de passe de la base de données'.
    Je suis alors obligé d'utiliser le bouton de fermeture en haut à droite de la fenêtre pour réellement fermer la db.
    J'ai regardé dans le propriétés du fichier, il n'y a aucune sécurité particulière.
    Pouvez m'indiquer comment éviter ce problème de mot de passe?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 653
    Points : 34 370
    Points
    34 370
    Par défaut
    salut,
    attention de vérifier avant que l'état en question existe bien

    pour ton aspect sécurité, il serait plus judicieux de poser la question dans le topic dédié, en mettant en lien cette discussion en point de départ

Discussions similaires

  1. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  2. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  3. Réponses: 9
    Dernier message: 27/10/2005, 13h20
  4. [DEBUTANT]Supprimer les espaces pour une requete
    Par tripper.dim dans le forum Oracle
    Réponses: 4
    Dernier message: 12/10/2005, 16h04
  5. norme pour nommer les objets d'une bd
    Par katou3 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/07/2005, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo