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 :

[A97] Lancement d'une importation chaque nuit via un .bat


Sujet :

Access

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Bonjour à tous,

    Croyez-vous que si j'arrive à trouver le chemin en "version dos", ça pourrait fonctionner ?
    Je ne sais pas si l'on dit version dos !?!?!?!

    Merci

  2. #22
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 034
    Points : 24 607
    Points
    24 607
    Par défaut
    Bizarre ce problème.

    Essaye un chemin au format cours


  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    'jour à tous, loufab

    Question bête : comment puis-je déterminer le chemin complet au format cours ?

    Merciiiiiiiiiiiiiiii

  4. #24
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 034
    Points : 24 607
    Points
    24 607
    Par défaut
    On prend les 6 premières lettre sans les espaces puis on rajoute ~1.

    J'ai fait un essai avec un répertoire sans accent : aucun pb
    mais avec un rep contenant des caractères accentués ça ne fonctionne pas.

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Ben pareil !!!

    On est donc bloqué ???

    Merci

  6. #26
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 034
    Points : 24 607
    Points
    24 607
    Par défaut
    Poste un message sur le forum Windows car ce n'est pas normal que tu ais des problèmes avec les accents.

  7. #27
    Invité
    Invité(e)
    Par défaut
    Bonjour Boulap,

    A priori la table de caractères définie sous Dos ne correspond pas à celle utilisée sous Windows. En ce qui concerne les caractères dont le code est 0 à 127 aucun problème, mais dès que l'on utilise de 128 à 255, on a souvent ce genre de problème.

    Un spécialiste de Windows trouvera peut-être la solution comme vous le propose Loufab.

    Personnellement, j'ai préféré depuis longtemps ne plus utiliser les caractères spéciaux (y compris les espaces que je remplace par _) et les caractères accentués dans les noms de répertoires, de fichiers, de variables etc...

    Ce n'est que mon avis, mais je pense que de toute façon ça ne peut qu'être source d'erreur surtout lorsque l'on utilise un langage de programmation quel qu'il soit.

    Amicalement.

  8. #28
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par loufab
    Poste un message sur le forum Windows car ce n'est pas normal que tu ais des problèmes avec les accents.
    ben tu as les mêmes tu m'as dis ;-)

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par jacques_jean
    Personnellement, j'ai préféré depuis longtemps ne plus utiliser les caractères spéciaux (y compris les espaces que je remplace par _) et les caractères accentués dans les noms de répertoires, de fichiers, de variables etc...
    'jour jacques

    c'est ce que je fais aussi...

    mais là il s'agit de répertoire existant que je ne peux renommer cas toutes les bases access viennent piocher dans ce répertoire en ce qui concerne les données !!!

    Merci

  10. #30
    Invité
    Invité(e)
    Par défaut
    Re Boulap,

    Je pense avoir trouvé une solution. En tout cas, chez moi, cela a fonctionné.

    Le problème est que j'ai fait au moins 5 manipulations différentes.

    Je recommence donc en pas-à-pas pour trouver laquelle a donné le bon résultat et je reviens (si vous n'avez pas obtenu une autre réponse d'ici là bien sûr).

  11. #31
    Invité
    Invité(e)
    Par défaut
    Re Boulap,

    Je vais commencer par une question :

    -avez-vous créé votre fichier .bat dans la fenêtre Dos avec la commande Edit ?

  12. #32
    Invité
    Invité(e)
    Par défaut
    Re Boulap,

    Lorsque j'ai créé le fichier .bat à travers l'Explorateur Windows j'ai eu le même problème que vous.

    Donc finalement, si ce n'est pas ce que vous avez déjà fait vous pouvez modifier votre fichier .bat :

    Démarrer puis Exécuter et taper Command puis cliquer sur OK.

    Dans la fennêtre Dos vous tapez : Edit chemin\nomfichier.bat

    La ligne de commande s'affiche dans l'éditeur. Elle devrait afficher des caractères bizarres à la place des caractères accentués. Vous remplacez ces caractères en tapant ceux qui sont nécessaires puis vous cliquez sur Fichier puis Enregistrer. A nouveau Fichier puis Quitter.

    Vous tapez Exit dans la ligne de commande Dos pour terminer.

    Vous pouvez de la même façon créer un nouveau fichier en tapant dans la fenêtre Dos : Edit chemin\nomfichier.bat

    Dans la ligne de de commande vous tapez la commande que vous voulez exécuter puis vous terminez comme pour la modification (enregistrer etc..)

    J'espère que cela va fonctionner pour vous comme pour moi (en matière d'informatique tant que l'on a pas vu le résultat, on peut toujours douter).

    Pour bien voir ce qui se produit :
    -à travers l'édition sous Windows vous tapez par exemple "exécuter" le "é" est remplacé par un autre caractère et donc la commande ne fonctionne pas.
    -à travers l'édition sous Dos vous allez bien voir "Exécuter" mais en éditant ce fichier sous Windows cette fois le "é" sera remplacé par un autre caractère mais la commande devrait fonctionner.

    Bonne chance.

  13. #33
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut alternative au .bat
    Bonsoir,

    à la place d'un fichier batch (.bat) on peut peut-être utiliser un fichier script vbs (.vbs)
    Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim WshShell
    Set WshShell = CreateObject("WScript.Shell")
     
    strACCESS = """E:\Program Files\Microsoft Office\Office\MSACCESS.EXE"""
    strDB = """E:\Mes Documents\Access\COMPTÖÎR2.MDB"""
    strCMD = strACCESS & " " & strDB & " /x import01 /cmd quit"
     
    WshShell.Run strCMD
    J'ai édité le script dans Notepad.
    J'ai mutilé deux caractères (O et I en Ö et Î), puis j'ai copié le nom de la base dans l'explorateur windows pour le coller directement dans Notepad.
    Et la (en tout cas chez moi), pas de problème de jeu de caractères.

    A+

  14. #34
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 034
    Points : 24 607
    Points
    24 607
    Par défaut
    effectivement le batch sans edit ou edlin avec des caractères accentués ça ne fonctionne pas.

  15. #35
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Bonjour à tous !

    -> jacques_jean : j'ai suivi à la lettre et tout fonctionne parfaitement, MERCI

    -> LedZeppII : j'ai fait un 1er essai rapide j'ai une erreur avec ce code : "fin d'instruction attentue"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim WshShell 
    Set WshShell = CreateObject("WScript.Shell") 
     
    strACCESS = """C:\Program Files\Microsoft Office\Office\msaccess.exe""" 
    strDB = """G:\Tables paramètres\Tables FORCE 9.mdb""" 
    strCMD = strACCESS & " " & strDB & " /excl /x "mcrImport /cmd quit" 
     
    WshShell.Run strCMD
    Faut dire que je n'y connais rien en vbs, j'ai mis ça dans le Bloc-Notes et j'ai ensuite enregistré en .vbs (reconnu car l'icone semble être le bon lol)

    -> loufab : ben dorénavant je le saurais ;-)

    Merci à tous !!!

  16. #36
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    il y a un " en trop devant mcrImport.

    WshShell.Run en vb script est équivalent à la commande Shell en vba.

    Autre présision : /cmd quit me permet de récupérer la chaîne "quit" avec la fonction Command().
    A la fin de ma macro, j'ai dans la colonne condition Commande()="quit" et en face, l'action Quitter.
    ça veut dire : si "quit" a été mis en tant que paramètre derrière /cmd alors exécuter l'action Quitter, pour fermer la base de données.

    A+

  17. #37
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    merci de toute ces précisions LedZepp, c'est excellent ! par contre la base n'a pas été fermée à la fin de la macro !

    ne pourrais-t-on également pas lui dire de compacter juste avant le quit ?

    Merci

  18. #38
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Voici ma macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Condition            Action
    ------------------   --------------------
                         Transférer Texte
    Commande()="quit"    Quitter
    Ceci dit la condition Commande()="quit" n'est pas indispensable.
    C'est juste que je veux pouvoir lancer ma macro à la main sans que cela ferme Access.
    Si tu ne mets pas Commande()="quit" et que tu laisse Quitter, la macro va fermer Access.
    Sauf si une boîte de dialoque s'ouvre.

    Pour ce qui est de la compaction, on ne peut pas demander à une base de se compacter elle-même
    depuis une macro ou du code faisant partie de ladite base.
    Il faut donc le faire faire par le script vbs.

    Code vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Dim WshShell, fso, oFile, dbe
    Set WshShell = CreateObject("WScript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    strACCESS = """E:\Program Files\Microsoft Office\Office\MSACCESS.EXE"""
    strDB = """E:\Mes Documents\Access\COMPTÖÎR2.MDB"""
    strCMD = strACCESS & " " & strDB & " /x import01 /cmd quit"
     
    ' Exécuter une commande et attendre la fin de l'exécution.
    WshShell.Run strCMD,,1
     
    ' On suppose que le nom la base est de la forme nom.xxx
    ' Enlève " à droite puis à gauche
    strDB = Left(strDB, Len(strDB)-1)
    strDB = Right(strDB, Len(strDB)-1)
    ' Crée chemin+nom pour sauvegarde base
    strBAKDB = Left(strDB, Len(strDB)-4) & "_BAK" & Right(strDB,4)
    ' Crée chemin+nom du fichier .ldb
    strLDB = Left(strDB, Len(strDB)-4) & ".ldb"
     
    ' On s'assure que le .ldb n'existe pas
    Do
       Wscript.Sleep 1000
    Loop Until fso.FileExists(strLDB)=False
     
    If fso.FileExists(strBAKDB) Then fso.DeleteFile strBAKDB
     
    ' On renomme la base (sauvegarde)
    Set oFile = fso.GetFile(strDB)
    oFile.Move strBAKDB
     
    ' On compacte la base sauvegardée dans nouvelle base
    ' CreateObject("DAO.DBEngine.30") ou CreateObject("DAO.DBEngine.3") pour A97 ?
    Set dbe = CreateObject("DAO.DBEngine.36")
    dbe.CompactDatabase strBAKDB, strDB
    Set dbe = Nothing
    J'ai Access 2000 et DAO 3.6 . Donc la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set dbe = CreateObject("DAO.DBEngine.36")
    n'est pas valide pour Access 97. Il faut remplacer "DAO.DBEngine.36" par ????? autre chose.
    Regarder dans la base de registre sous HKEY_CLASSES_ROOT. Il doit y avoir DAO.DBEgine ou DAO.DBEgine.xx

    En cas de problème avec le script, tu peux débogger cette façon :
    Créer une base Access vide.
    Créer un module, enlever "Option Explicit" si il est en début de module.
    Créer une Sub quelconque et coller le code du script dans la Sub.
    Mettre en commentaire la ligne Wscript.Sleep 1000 qui ne pourra pas fonctionner dans Access.
    Ensuite exécuter la Sub pas à pas (touche F8).

    Bon courage.

  19. #39
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup LedZepp, je m'en suis sorti avec tes explications et ta patience ;-)
    Pour le DAO.DBEngine.36, j'ai bien le même ;-)

    Encore merci, je cloture le sujet.

    @+

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/04/2015, 17h20
  2. Lancement d'une fonction chaque vendredi à 17h00
    Par Drost dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/11/2008, 16h13
  3. Lancement d'une fonction chaque nuit
    Par Xris dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/09/2007, 21h46
  4. Réponses: 2
    Dernier message: 29/05/2007, 14h50
  5. [VB]Importer une vue SQL Server via Visual Basic
    Par NoViceDel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/05/2006, 19h57

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