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

Requêtes et SQL. Discussion :

Importation fichier texte Access [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Importation fichier texte Access
    Bonjour,

    Je souhaite importer un fichier texte dans access avec la structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    20032010;1;NOM1;PRENOM1
    20032010;2;NOM2;PRENOM2
    20032010;3;NO;3;PRENOM3
    20032010;4;NOM4;PRENOM4
    Mon problème est le suivant:

    - Si j'importe je fichier en délimité point-virgule, il ne prend pas bien la 3eme ligne.

    J'ai donc choisi l'option longueur fixe avec les caractéristiques suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Nom champ     Démarré     Largeur
    Date              1             8
    Type              10            1
    Nom               12            4
    Prenom            17            7
    J'ai alors le message d'erreur suivant:
    "Il y a un vide entre le champ Date et le champ Type."

    J'ai compris qu'il fallait que je mette largeur 9 par exemple pour le champ Date ou démarré à 9 pour type pour éviter cette erreur mais je ne veux pas prendre les points virgules en compte.

    Comment faire pour résoudre ce problème?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 85
    Points : 114
    Points
    114
    Par défaut
    Bonjour

    Quand je vois l'exemple que tu mets il y a un problème, en effet la troisième ligne comporte 5 champs et les autres 4 champs.

    Il faut que toutes tes lignes aient le même nombre de champs.

    PeyePo

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Non justement il n'y a pas de problème.

    Ici c'est un exemple mais en gros il y a des nom avec des points virgules au milieux de leur nom.

    Par exemple si la plupart des noms sont "Dupond" "Nom-Composé"...
    Il se peut qu'il y ait des "Nom;bizaremment composé" avec un point virgule et du coup il faut que je trouve comment prendre en compte ce point virgule sans le faire passer comme séparateur de champ.

    Et ça je ne trouve pas...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Essai de changer le séparateur à la génération de ton fichier d'orgine. un deux point ( par exemple.

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 547
    Points
    24 547
    Par défaut
    Citation Envoyé par Maxpuff Voir le message
    Non justement il n'y a pas de problème.

    Ici c'est un exemple mais en gros il y a des nom avec des points virgules au milieux de leur nom.

    Par exemple si la plupart des noms sont "Dupond" "Nom-Composé"...
    Il se peut qu'il y ait des "Nom;bizaremment composé" avec un point virgule et du coup il faut que je trouve comment prendre en compte ce point virgule sans le faire passer comme séparateur de champ.

    Et ça je ne trouve pas...
    Ce que veut te dire PeyePo c'est qu'il y a un problème pour interpréter la ligne pour la raison qu'il te cite.

    Il te faut changer de séparateur comme le suggère Dmboup ou utiliser un format différent. Le texte entouré par des double cote par exemple.

    Cordialement,

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci pour ces réponses.

    Citation Envoyé par DMboup
    Essai de changer le séparateur à la génération de ton fichier d'orgine. un deux point ( par exemple.
    Je n'ai pas la main sur la génération du fichier, donc pas possible de modifier la structure.


    Citation Envoyé par loufab
    Ce que veut te dire PeyePo c'est qu'il y a un problème pour interpréter la ligne pour la raison qu'il te cite.
    Oui je suis d'accord. C'est pour ça que j'essaie de passer par longueur fixe mais il faut que je prenne dans mes champs le point-virgule.


    La solution que je vois pour le moment afin de résoudre ce problème (car en remplaçant par ':' ou '"'... je tombe sur la même erreur au final si je trouve un champ contenant un ':' '"'...) est de créer une macro qui supprime les points virgules à position fixe, ce qui nous donnera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    200320101NOM1PRENOM1
    200320102NOM2PRENOM2
    200320103NO;3PRENOM3
    200320104NOM4PRENOM4

    Et ensuite j'importe ce nouveau fichier en utilisant la méthode longueur fixe.
    Y a-t-il une méthode plus simple pour arriver au même résultat?

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 547
    Points
    24 547
    Par défaut
    Bonjour,

    Tu peux faire ça en 2 passes.

    La première, comme tu le suggère , est de faire un import avec des tailles de champs fixes. Tu inclus le points virgule à la fin de chaque champ.

    Une fois que tu as fais ton import tu passes une requête update en supprimant le dernier caractère (le point virgule) de chaque champ sur les lignes que tu viens d'importer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expr1:left([monchamp],len([monchamp])-1)
    C'est un peu capilotracté mais c'est fonctionnel.

    Cordialement

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Alors juste pour tenir informé de la solution que j'ai utilisée.
    En fait j'ai fait une table avec des champs texte de taille 1 pour les Points-virgules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champs 1 | point-virgule1 | champs 2...
    J'importe en longueur fixe et donc je stocke les points-virgules dans le champs correspondant et ensuite je récupère les autres champs déjà formaté (plus pratique pour les dates par exemple...)

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

Discussions similaires

  1. Importation fichier TEXTE partculier dans ACCESS
    Par jobe3141 dans le forum Access
    Réponses: 7
    Dernier message: 18/05/2011, 17h14
  2. Réponses: 7
    Dernier message: 20/10/2008, 11h49
  3. importer des données d'un fichier texte à access
    Par soria_t dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/07/2008, 15h02
  4. [VBA] Importer fichier texte d'un lien HTML dans ACCESS
    Par VICTOIRE44 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/12/2006, 10h58
  5. Importer fichier texte dans base Access
    Par Mymi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/08/2006, 20h21

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