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 :

Encore un pb ISAM [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre Expert
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Par défaut Encore un pb ISAM
    Hello
    je viens de passer ma matinée à chercher la réponse à une
    erreur 3441:
    "le séparteur du champ de spécification du fichier texte est identique au séparateur décimal ou au délimiteur de texte"
    sur une ligne VB qui fonctionnait tout à fait bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferText acExportDelim, , "export_données_client", nom_fich, True
    Ayant cherché partout, j'ai bien trouvé les explications sur le registre:
    Le dossier Jet\4.0\Engines\Text contient les paramètres d'initialisation du pilote
    j'ai bien trouvé le fichier mstext40.dll sur mon disque
    mais je n'arrive pas à trouver les clef correspondantes dans le registre!
    Dois-je les créer entièrement à la main ou bien existe-t-il une manip pour que cette installation soit réalisée?

  2. #2
    Expert confirmé
    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
    Par défaut
    Bonsoir,

    Avec Access 2010, la clé de registre est différente.

    Pour Access 2007 c'est :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text

    Pour 2010 ça doit être :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Text

    As-tu essayé de créer une spécification d'exportation enregistrée ?
    Cela devrait éviter d'utiliser les paramètres par défaut de la base de registre,
    en prenant ceux de la spécification d'exportation enregistrée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.TransferText acExportDelim, "spec_export_données_client" , _
                       "export_données_client", nom_fich, True
    A+

  3. #3
    Membre Expert
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Par défaut
    Bonjour LedZeppII
    bien content de te voir!
    j'ai effectivement cherché à cet endroit et je n'ai rien trouvé.

    de plus (et alors que c'était simple en version 2007) je n'arrive plus à trouver la méthode pour spécifier les paramêtres d'exportation

    Je viens de trouver mstex40.dll à cette adresse du registre:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Text
    commentaire: waoouwwww
    j'ai bien changé la valeur CSVdelimited par delimited( ; ) et rebooté mais ça n'a rien changé

    Je ne m'explique pas pourquoi les paramêtres d'exportation aparaissent lors de l'exportation d'une table et pas pour une requête. Je viens donc d'enregistrer un fichier de paramêtres, ce qui résoud le problème de cette ligne de programme.
    le souci reste de créer autant de fichiers de paramêtres que j'ai de requêtes différentes à exporter. mais surtout de devoir modifier ce fichier àchaque fois qu'on ajoute un champ à la requête (ce que les utlisateurs peuvent faire)
    Avec le risque de devoir faire cette manip sur chaque base frontale?

    avec tous mes remerciements

  4. #4
    Expert confirmé
    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
    Par défaut
    Bonsoir,

    J'ai testé pour voir avec Access 2007 (sous XP, 32bit donc).
    C'est bien ce qui est sous ..\Access Connectivity Engine\Engines\Text (ACETXT.DLL) qui est pris en compte.
    Ce qui est ..\Jet\4.0\Engines\Text ne doit servir que pour DAO 3.6.

    Je n'ai pas de "Wow6432Node" car mon système d'exploitation n'est pas 64bit.

    Pour la valeur «Format» de ..\Access Connectivity Engine\Engines\Text
    j'ai essayé différentes choses :
    • Delimited()
      Erreur : Paramètre incorrect dans la clé Excel de la section Engines du Registre Windows.

    • CSVDelimited
      Erreur : Le séparateur du champ de spécification du fichier texte est identique au séparateur décimal ou au délimiteur de texte.

      Je change dans les options régionales le séparateur décimal de virgule (,) en point (.).
      Erreur : Plus d'erreur.
      J'en déduis qu'avec CSVDelimited, le séparateur de champs est la virgule (,).
      Ce qui est confirmé à l'ouverture du fichier texte obtenu.

    • Delimited(;)
      Je remets mes options régionales d'origine : séparateur décimal virgule (,).
      Pas d'erreur.

    Tout ça pour dire que le message d'erreur
    Le séparateur du champ de spécification du fichier texte est identique au séparateur décimal ou au délimiteur de texte
    apparaît quand «Format» contient "CSVDelimited".
    Donc, essaie de faire une recherche dans la base de registre sur la donnée CSVDelimited.
    Essaie aussi sur la donnée ACETXT (pas ACETXT.DLL des fois qu'il y ait des version 32 et 64 bit)

    Bon courage.
    A+

  5. #5
    Membre Expert
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Par défaut
    Bonjour LedZeppII
    Donc, essaie de faire une recherche dans la base de registre sur la donnée CSVDelimited.
    Voilà la clef du problème !!
    le recherche m'a donné:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Text
    j'ai modifé Format pour mettre Delmited( ; ) et ma ligne de programme simpliste refonctionne correctement.

    effectivemment, dans HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ j'avais trouvé Jet et je m'étais jeté dessus comme la chtouille dans la braguette du bas-clergé

    il y a donc deux arborescences contenant \Engines\Text et \ISAM Formats\Text:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\
    tu as raison,
    Ce qui est ..\Jet\4.0\Engines\Text ne doit servir que pour DAO 3.6.
    c'est bien ..\Access Connectivity Engine\... qui règle le fonctionement de la commande DoCmd.TransferText acExportDelim,....

    D'autre part, mon apréhension d'une mauvaise installation de Access était injustifiée

    Un gand merci pour ton aide!! puisse cette discussion éclairer ceux qui rencontrent le même problème

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Par défaut Même problème
    Bonjour,

    Je déterre ce Post, car je rencontre le même problème avec ACCESS 2010, version 14.0.7615.1000, sous Windows 7 Entreprise SP1.

    J'utilise une base ACCESS qui a des liaisons vers des tables dans une base ORACLE.
    Je dois exporter le contenu de certaines tables Oracle, dans des fichiers au format CSV.
    Pour ce faire, j'ai créé une table ACCESS qui contient la liste des noms des tables Oracle à exporter.
    Appelons cette table Tbl1.

    Ce qui nous donne le code suivant (sans la gestion des erreurs) :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Option Compare Database
     
    Public Const OutputPath = "D:\Test\"
    Public Const LogFileName = "LogFile.csv"
     
    Option Explicit
     
    Function Export_Tables()
     
    Dim db As Database
    Dim rslt As Recordset
    Dim tbname$, ficname$
    Dim i%
     
    Set db = CurrentDb
    Set rslt = db.OpenRecordset("Tbl1")
     
    Open OutputPath & LogFileName For Output As #1
    Print #1, , "Date;Heure;Etape;Etat"
    Print #1, Date & ";" & Time & ";Debut traitement;OK"
     
    i = 0
    rslt.MoveFirst
    Do Until rslt.EOF
        tbname = rslt("NomTable")
        ficname = OutputPath & tbname & ".csv"
        DoCmd.TransferText acExportDelim, "", tbname, ficname, True
        i = i + 1
    rslt.MoveNext
    Loop
     
    Print #1, Date & ";" & Time & ";Fin traitement;OK"
    Close #1
     
    rslt.Close
    Set rslt = Nothing
    db.Close
     
    End Function
    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferText acExportDelim, "", tbname, ficname, True
    génère le message d'erreur suivant :
    "Le séparateur du champ de spécification du fichier texte est identique au séparateur décimal ou au délimiteur de texte."
    Si je modifie le format en Delimited sous HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines, j'obtiens le message suivant :
    "Paramètre incorrect dans la clé Excel de la section Engines du Registre Windows."

    J'ai essayé un export manuel, en spécifiant séparateur ";" et texte entre "", cela fonctionne.
    Si je crée un fichier de spécification d'export et que je l'utilise avec une table, cela fonctionne.
    J'ai 77 tables à exporter, je ne vais pas créer 77 fichiers de spécification, d'autant plus que la structure des tables est susceptible d'être modifiée.

    Pouvez-vous m'aider ?

  7. #7
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 235
    Billets dans le blog
    16
    Par défaut
    Bonsoir kennely,


    Une réponse un peut tardive de ma part, ici.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Par défaut Merci
    Merci beaucoup fsmrel.
    Je teste cela de suite

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

Discussions similaires

  1. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 15h43
  2. choix sgbdr (encore!)
    Par _Gabriel_ dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 23/03/2004, 11h39
  3. TEdit (encore)
    Par dj.motte dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/12/2002, 20h02
  4. TPalette (encore)
    Par Flipper dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2002, 00h45

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