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

Access Discussion :

Question sur le code compactage de la FAQ


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut Question sur le code compactage de la FAQ
    Bonjour,

    Je suis intérressé par le code de la faq, en effet j'ai une base fractionnée appli/données, et je voudrai compacter de temps temps par un bouton, la base donnes depuis la base appli,donc ce code est tout à fait celui qu'il me faut :

    seulement je n'arrive pas à le faire fonctionner , je bloque :

    Voilà le code en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub cmdCompacter_Click ()
        sNomBase= "C:\Mes documents\Base.MDB" 
        sNomBaseTmp= "C:\Mes documents\BaseTmp.MDB" 
        DBEngine.CompactDatabase sNomBase, sNomBaseTmp '1. Compactage dans une nouvelle base  
        Kill sNomBase '2. Suppression de la base originale  
        Name sNomBaseTmp As sNomBase '3. Renommer la base compactée avec le nom de la base originale  
    End Sub
    lien de la faq http://access.developpez.com/faq/?page=General#Compact

    Tout d'abord j'ai ajouter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim snombase as string
    dim snombase as string
    sinon ca ne fonctionne pas , et maintenant je suis bloqué à ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp .
    comment dois-je déclarer , ou préciser DBengine.Compactdatabase ???

    il me manque pas grand chose , mais je tourne en rond !!
    Je suis pas très calé en code, j'ai cherché dans l'aide access, le forum , mais je n'ai pas réussi à m'en sortir

    merci de votre aide

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Si tu as écrit le code que tu dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim snombase as string 
    dim snombase as string
    Le problème de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp
    Le problème vient que la variable sNomBaseTmp n'est pas défini dans ton code (cf : 1er code)...
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    oups non, excuse moi erreur !! (copier coller )

    le code est bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim snombase as string 
    dim sNomBaseTmp  as string
    snombase est bien déclaré et dbengine ne fonctionne pas !

    problème de référence ?
    comment faut-il déclarer dbengine.compactdatabase ?

    vb n'a apparamment pas suffisament de paramètres ??

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Je ne comprends car je viens de faire un test avec le code est cela fonctionne correctement.

    Vérifie les points suivant :
    - ne pas y avoir de fichier BaseTmp.MDB dans le répertoire proprement dit.
    - de voir quelles sont les bibliothèques de références (dans le mode module "Outils/Référence..."
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    La base que tu compactes est ouverte. va voir il y a le fichier lbd de créé.
    De plus le message d'erreur que tu dois avoir est assez explicite non ???

    Vous avez essayé d'ouvrir une base de données déjà ouverte en mode exclusif par l'utilisateur <nom> sur la machine <nom>. Recommencez lorsque la base de données sera disponible. (Erreur 3356)
    Or la FAq précise bien :
    3/Une solution par code :


    Sub cmdCompacter_Click ()
    sNomBase= "C:\Mes documents\Base.MDB"
    sNomBaseTmp= "C:\Mes documents\BaseTmp.MDB"
    DBEngine.CompactDatabase sNomBase, sNomBaseTmp '1. Compactage dans une nouvelle base
    Kill sNomBase '2. Suppression de la base originale
    Name sNomBaseTmp As sNomBase '3. Renommer la base compactée avec le nom de la base originale
    End Sub

    Remarque : Cette dernière solution ne vous permet pas de compacter la base de données en cours.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    mille excuse , j'ai du faire une erreur quelque part j'ai tout refait , et également v"rifier les références cela fonctionne bien.

    Merci Zoom21 et Kikof

    @ Kikof :

    A-tu lu mon premier post j'ai bien dit :

    en effet j'ai une base fractionnée appli/données, et je voudrai compacter de temps temps par un bouton, la base donnes depuis la base appli,donc ce code est tout à fait celui qu'il me faut :
    soit 2 bases , je compacte l'une depuis l'autre

    Merci

  7. #7
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    soit 2 bases , je compacte l'une depuis l'autre
    Oui mais si une utilise les données de l'autre, un fichier ldb est bien créé et donc la base de données verrouillée pour ton opération de compactage

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 196
    Points : 102
    Points
    102
    Par défaut
    Très juste , mais j'ai fait en sorte que cela n'arrive jamais , de façon simple. (je n'est pas énormément de compétence pour le moment)

    le bouton est sur un formulaire général , quand on est sur celui, tout les état formulaires requetes sont inactives. donc pas de fichiers ldb ( j'aime pas les .ldb )
    Ce formulaire général n'est pas en liaison direct avec les tables , tout du moins pas avant que l'on est appuyé sur un bouton de commande.

    il existe un risque de manouvre en effet , ou alors que l'on appuie quasi simultanément sur 2 boutons peut-être , en tous cela reste infime.

    c'est peut-être pas dans tout à fait dans les règles mais cela est fonctionnel .

    je ne suis pas calé pour sortir du code qui prendrait en compte le verrouillage
    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question sur un code proposé dans la FAQ
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 07/04/2009, 14h24
  2. Questions sur le code
    Par Pedro dans le forum Sepi
    Réponses: 5
    Dernier message: 23/12/2006, 13h10
  3. une question sur le code ASP-Nuke
    Par ghita269 dans le forum ASP
    Réponses: 1
    Dernier message: 14/01/2006, 09h41
  4. [Conception] Question sur un code permettant de connaître le nombre de connectés
    Par inferno66667 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 19/12/2005, 19h49

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