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 :

[FSO][VBA]Lecture de fichier texte actif


Sujet :

Access

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut [FSO][VBA]Lecture de fichier texte actif
    Bonjour,

    J'essaie de créer une procédure en VBA pour lire un fichier texte "actif" à l'écran.

    Mon application Access lit un fichier texte qui est un script SQL classique (renvoie à la ligne des instructions + commentaires).
    La procédure lit le fichier texte, supprime les retours à la ligne et les commentaires puis éxécute un docmd.runsql.

    J'ai crée une procédure pour rechercher le fichier texte à lancer et ça marche impecablement.

    Maintenant, je veux lancer mon script à partir de mon éditeur, en l'occurence Ultraedit. Pour vela je tape la commande "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\Mes documents\reports.mdb"

    Mais comment faire pour que mon appli Access arrive à lire le fichier texte actif à l'écran ?

    Merci

    Marco

  2. #2
    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 : 40
    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
    Access ne peut pas lire un fichier SQL comme cela.

    Il faut lire ligne à ligne avec le FSO et lancer les requêtes une à une.

  3. #3
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    As-tu explorer les possiblités de la ligne de commande ... et notamment l'option /cmd qui te permet de lancer une macro précise au démarrage... je n'ai jamais essayé mais il ya peutêtre moyen de lui fournir le nom du fichier (qu'il reste à déterminer ...)
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut
    Je peux t'assurer que mon lanceur de script marche super, c'est juste de la transformation de texte: un point virgule marque la fin d'une instruction et un double trait un commentaire... bien sur cela ne fonctionne qu'avec les instructions de type DDL:

    Code : 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
    Public Sub ExecuteSQLScript(NomFichier As String)
       On Error GoTo SQLError
       Dim db As Database
       Dim query As QueryDef
       Dim SQLStatement As String
       Dim ScriptLine As String
       Dim StopOrResume As Integer
     
       Set db = CurrentDb()
     
       Open NomFichier For Input As #1
       Do While Not EOF(1)
     
          SQLStatement = ""
          Line Input #1, ScriptLine
          ScriptLine = Trim(ScriptLine)
     
          If Left(ScriptLine, 2) <> "--" Then    
              SQLStatement = SQLStatement & " " & ScriptLine
              Do While (Not EOF(1)) And (ScriptLine <> "") And (Right(SQLStatement, 1) <> ";")
                  Line Input #1, ScriptLine
                  ScriptLine = Trim(ScriptLine)
                  SQLStatement = SQLStatement & " " & ScriptLine
              Loop
              SQLStatement = Trim(SQLStatement)
          End If
     
          If SQLStatement <> "" Then
              db.Execute SQLStatement
          End If
       Loop

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut
    Effectivement, j'ai résolu ce premier pb en créant une macro autoExec pour lancer ma procédure.

    Citation Envoyé par mout1234
    As-tu explorer les possiblités de la ligne de commande ... et notamment l'option /cmd qui te permet de lancer une macro précise au démarrage... je n'ai jamais essayé mais il ya peutêtre moyen de lui fournir le nom du fichier (qu'il reste à déterminer ...)

  6. #6
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    une autre piste .... j'ai vu une fois ou deux des solutions pour lancer un compactage d'une base Acces par clic droit sur le fichier dans l'explorer... peut être qu'en s'inspirant de ces astuces (qui s'inscrivent dans la base de registre ...) tu pourrais faire une commande similaire à partir d'un fichier texte ...

    Quant à pouvoir lancer à partir du texte à l'écran... il faut vraissemblablement passer par des APIs... mais cela me parait utopique et risqué...
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut
    D'accord avec sur l'utilisation des APIs, j'ai pas les compétences...
    Je vais essayer de coutourner le pb: Ultradit me propose une option de sauvegarde automatique de mon fichier avant de lancer mon appli
    Je vais essayer de determiner quel est le fichier ouvert dans un répertoire donné, puis ensuite je déterminerais le chemin complet du fichier.
    Reste à savoir comment tester si un fichier est ouvert !

    Citation Envoyé par mout1234
    une autre piste .... j'ai vu une fois ou deux des solutions pour lancer un compactage d'une base Acces par clic droit sur le fichier dans l'explorer... peut être qu'en s'inspirant de ces astuces (qui s'inscrivent dans la base de registre ...) tu pourrais faire une commande similaire à partir d'un fichier texte ...

    Quant à pouvoir lancer à partir du texte à l'écran... il faut vraissemblablement passer par des APIs... mais cela me parait utopique et risqué...

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut
    je n'ai pas trouvé comment tester si un fichier est ouvert.

    Je pars sur la stratégie suivante:

    Je paramète Ultraedit pour qu'il renregistre automatiquement mon fichier texte avec le lancement de mon appli Access. Puis je lis les dates de modification (DateLasteModified) de tous les fichiers d'un répertoire donné, enfin j'ouvre le plus récent.

    Alambiqué, mais je n'ai pas trouve autre chose !

    Toutes les autres idées sont les bienvenues

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Est-ce que dans Ultraedit, dans tes macros, tu peux lui indiquer le fichier en cours (ou ne le fait-il pas tout seul?)

    en gros il faudrait générer la ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\Mes documents\reports.mdb" ; "fichier"
    avec la comand "Command()" de vba, tu as le fichier à parser et c'est bon

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut
    Oui, on peut ajouter "%N" dans la ligne de commande pour indiquer le fichier en cours. Je vais tester...

    Citation Envoyé par Strontium
    Est-ce que dans Ultraedit, dans tes macros, tu peux lui indiquer le fichier en cours (ou ne le fait-il pas tout seul?)

    en gros il faudrait générer la ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\Mes documents\reports.mdb" ; "fichier"
    avec la comand "Command()" de vba, tu as le fichier à parser et c'est bon

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 82
    Points : 71
    Points
    71
    Par défaut
    Impecable, j'ai ajouté ; %f à la fin de la ligne de commande pour obtenir le chemin avec le nom complet:

    "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "C:\Mes documents\reports.mdb" ; %f
    Et j'ai ajouté dans mon code VBA "Fichier = Command sans les parenthéses

    Merci beaucoup de votre aide

    Marco

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

Discussions similaires

  1. [Toutes versions] Ouverture/lecture de fichier texte VBA Access
    Par mmmxtina dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/06/2009, 09h55
  2. [VBA-E]Lecture ecriture fichier texte
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2007, 05h46
  3. [AS2] Lecture Ecriture Fichier Texte
    Par cpr0 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 13/09/2005, 11h22
  4. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09
  5. lecture de fichier texte
    Par prorider dans le forum C
    Réponses: 36
    Dernier message: 08/09/2004, 20h55

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