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 :

Problème export csv limité à 255 caractères ! [AC-2007]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Problème export csv limité à 255 caractères !
    Bonjour à tous,

    Je réalise actuellement un access permettant de gérer l'intégration des données dans un site internet de manière automatique et régulière.
    Le problème est que j'ai besoin de passer par un fichier .csv et à ce moment la Access tronque mes champs mémo à 255 caractères !!!

    Je n'ai trouvé aucune solution fonctionnant sur le net alors j'appelle la communauté à l'aide !

    Bien à vous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Peux-tu expliquer comment tu fais l'import (en détaillant).

    Philippe

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour Philippe,

    Mon import fonctionne de cette manière :
    - une requête est généré avec tous les champs (dont certains sont des champs mémo)
    - ensuite un export .csv est réalisé avec l'outil exportations enregistré, fichier texte

    C'est à ce moment que tous mes champs mémo sont tronqués à 255 caractères, je n'ai encore trouvé aucune solution, est ce tout simplement possible ?

    Mika

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    Voici une solution pas terrrible je le reconnais mais qui a le mérite de fonctionner.
    Les pros du forum vous feront certainement quelque chose de mieux.

    Soit Champ1 votre champ mémo
    Dans votre requête, il faut le "découper" en champs de 255 caractères.
    Cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Len([champ1]) AS NbCarMemo, Mid([champ1],1,255) AS Part1, Mid([champ1],256,255) AS Part2, Mid([champ1],511,255) AS Part3
    FROM Table1;
    Bon, c'est sur qu'il faut adapter ça en fonction de vos besoins... et je vous avais prévenu que ce n'était pas terrible.
    Une fois l'export faite, il suffit de concaténer les champs part1, 2 etc... pour retrouver votre champ mémo d'origine.
    Bon courage

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Merci pour cette réponse elle m'est utile dans tous les cas.

    La solution que j'ai trouver aujourd'hui est de lié un xls à mes tables access ( dans ces conditions les champs mémo ne sont pas tronqués)
    Ensuite une macro récupère les champs dans le xls pour les réintégré proprement dans mon fichier .csv
    Ceci fonctionne de manière correcte mais l'augmentation du nombre de manipulation augmente le risque d'erreur...

    Donc si quelqu'un à une idée ...

  6. #6
    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,

    Autre solution, le format CSV est un format txt, alors pourquoi ne pas utiliser une fonction comme celle là :
    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
    'Chemin du fichier ouvert
    Chemin = ThisWorkbook.Path
     
    'Nom du fichier 
    NomFic = "Fichier.csv"
     
    'Création du fichier
    Open Chemin & "\" & NomFic For Append As #1
     
    'Ajout des lignes 
    SQL = "SELECT ... FROM ... WHERE ..."
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        With oSQL
            Do While Not .EOF
                Print #1, oSQL![CHAMP1] & ";" & oSQL![CHAMP2] & ....
                oSQL.MoveNext
            Loop
        End With
    oSQL.Close
     
    'Permet de fermer le fichier
    Close #1
    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

  7. #7
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Pourrais tu être plus précis sur ce que je dois mettre ici je ne connais pas du tout le SQL :

    "SELECT ... FROM ... WHERE ..."

  8. #8
    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
    Citation Envoyé par podalamina Voir le message
    Pourrais tu être plus précis sur ce que je dois mettre ici je ne connais pas du tout le SQL :

    "SELECT ... FROM ... WHERE ..."
    Tu y mets le code SQL de ta requête...
    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

  9. #9
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    J'avoue être bloqué même pour lancer la fonction, voici le code :

    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
    Function Export_CSV()
     
    'Chemin du fichier ouvert
    Chemin = ThisWorkbook.Path
     
    'Nom du fichier
    nomFic = "Q_export.csv"
     
    'Création du fichier
    Open Chemin & "\" & nomFic For Append As #1
     
    'Ajout des lignes
    SQL = "SELECT T_Stock.Motorisation, T_Stock.Description, "Home, " & [T_Véhicule]![Marque] & ", " & [T_Véhicule]![Modèle] AS Catégories, T_Stock.TTC_AlterAuto, [T_Véhicule]![Marque] AS SUPPLIER, [T_Véhicule]![Marque] AS Manufacturer, T_Stock.Options, T_Véhicule.[Meta-title], T_Véhicule.[Meta-keywords], T_Véhicule.[Meta-description], T_Véhicule.[URL rewritten], [T_Véhicule]![Image1] & ", " & [T_Véhicule]![Image2] & ", " & [T_Véhicule]![Image3] & ", " & [T_Véhicule]![Image4] & ", " & [T_Véhicule]![Image5] AS [Image], IIf([T_Stock]![Dispo]=True,"1","0") AS Dispo, T_Stock.[Code AlterAuto], T_Stock.Date_Ajout
    FROM T_Stock INNER JOIN T_Véhicule ON T_Stock.Modèle = T_Véhicule.Modèle;"
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        With oSQL
            Do While Not .EOF
                Print #1, oSQL![CHAMP1] & ";" & oSQL![CHAMP2] & ....
                oSQL.MoveNext
            Loop
        End With
    oSQL.Close
     
    'Permet de fermer le fichier
    Close #1
     
    End Function
    Ya t'il des erreurs ?
    et Comment faire pour lancer a partir d'un bouton sur formulaire ?

  10. #10
    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
    Premièrement dans ton code éviter d'utiliser les " utilise '.
    Ce qui donnera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL = "SELECT T_Stock.Motorisation, T_Stock.Description, 'Home', [T_Véhicule]![Marque] , [T_Véhicule]![Modèle] AS Catégories, " _
    & "T_Stock.TTC_AlterAuto, [T_Véhicule]![Marque] AS SUPPLIER, [T_Véhicule]![Marque] AS Manufacturer, T_Stock.Options, T_Véhicule.[Meta-title], " _
    & "T_Véhicule.[Meta-keywords], T_Véhicule.[Meta-description], T_Véhicule.[URL rewritten], [T_Véhicule]![Image1] , [T_Véhicule]![Image2] , " _
    & "[T_Véhicule]![Image3] , [T_Véhicule]![Image4] , [T_Véhicule]![Image5] AS [Image], IIf([T_Stock]![Dispo]=True,'1','0') AS Dispo, T_Stock.[Code AlterAuto], " _
    & "T_Stock.Date_Ajout " _
    & "FROM T_Stock INNER JOIN T_Véhicule ON T_Stock.Modèle = T_Véhicule.Modèle;"
    Et n'oublie pas de mettre à jour cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Print #1, oSQL![CHAMP1] & ";" & oSQL![CHAMP2] & ....
    Ensuite pour appeler ta fonction, sur le bouton de ton formulaire en code tu saisis :
    @+.
    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

  11. #11
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Pourriez vous m'aider encore un peu, j'ai un problème dans la syntaxe de ce code qui devient jaune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        With oSQL
            Do While Not .EOF
                Print #1, oSQL![T_Véhicule]![Marque] & ";" & oSQL![T_Véhicule]![Modèle] & ";" & oSQL![T_Véhicule]![Marque] & ";" & oSQL![T_Véhicule]![Marque] & ";" & oSQL![T_Véhicule]![Marque], "" _
                & ";" & oSQL![T_Stock].[Options] & ";" & oSQL![T_Véhicule].[Meta-title] & ";" & oSQL![T_Véhicule].[Meta-keywords] & ";" & oSQL![T_Véhicule].[Meta-description] & ";" & oSQL![T_Véhicule].[URL rewritten]; "" _
                & ";" & oSQL![T_Véhicule]![Image1] & ";" & oSQL![T_Véhicule]![Image2] & ";" & oSQL![T_Véhicule]![Image3] & ";" & oSQL![T_Véhicule]![Image4] & ";" & oSQL![T_Véhicule]![Image5] & ";" & oSQL![Dispo] & ";" & oSQL!Dispo; "" _
                & ";" & oSQL![T_Stock].[Code AlterAuto] & ";" & oSQL![T_Stock].[Date_Ajout]
                oSQL.MoveNext
            Loop
        End With
    oSQL.Close

  12. #12
    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
    Essaie avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set oSQL = CurrentDb.OpenRecordset(SQL)
        With oSQL
            Do While Not .EOF
                Print #1, oSQL![Marque] & ";" & oSQL![Modèle] & ";" & oSQL![Marque] & ";" & oSQL![Marque] & ";" & oSQL![Marque] _
                & ";" & oSQL![Options] & ";" & oSQL![Meta-title] & ";" & oSQL![Meta-keywords] & ";" & oSQL![Meta-description] & ";" & oSQL![URL rewritten] _
                & ";" & oSQL![Image1] & ";" & oSQL![Image2] & ";" & oSQL![Image3] & ";" & oSQL![Image4] & ";" & oSQL![Image5] & ";" & oSQL![Dispo] & ";"  _
                & ";" & oSQL![Code AlterAuto] & ";" & oSQL![Date_Ajout]
                oSQL.MoveNext
            Loop
        End With
    oSQL.Close
    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

  13. #13
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Cela ne marche pas, voici l'erreur que VBA me donne :
    erreur 3265 : élément non trouvé dans cette collection

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    voici une solution simple pour générer à la main un fichier CSV, je capitalise sur le travail de zoom61. Ce programme exporte tous les champs contenus dans la source de données sans avoir à les nommer individuellement.

    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
    'Chemin du fichier ouvert
    dim chemin as string:Chemin = ThisWorkbook.Path
     
    'Nom du fichier 
    dim NomFic as string:NomFic = "Fichier.csv"
     
    'Création du fichier
    dim f as dao.field
    dim i as long
    dim db as dao.database:set db=currentdb
     
    Open Chemin & "\" & NomFic For output As #1 
     
    'Ajout des lignes 
            SQL = "SELECT ... FROM ... WHERE ..."
            dim oSQL as dao.recordset:Set oSQL = db.OpenRecordset(SQL)
     
            Do While Not oSQL.EOF
     
                for i=1 to oSQL.fields.count
                   set f=oSQL.fields(i)
                   print #1,f; 'Écrit un champ
     
                   if i<>oSQL.fields.count
                      print #1,";"; 'Écrit un séparateur de champ
                   end if
     
                next f
     
                print #1,"" 'fini l'enregistrement. Les prochaines données seront mises sur une nouvelle ligne
     
                oSQL.MoveNext
            Loop
            oSQL.Close:set oSQL=nothing
     
    'Permet de fermer le fichier
    Close #1
     
    set db=nothing 'L'utilisation de la variable db évite qu'il reste de l'espace mémoire bloqué par Access.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Le donne une erreur de compilation, dois je le remplacer par ?

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Oui merci.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/07/2009, 14h45
  2. [CR 8] Export état dans Excel - colonne limitée à 255 caractères
    Par ARONE dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 20/07/2009, 10h50
  3. Réponses: 5
    Dernier message: 28/01/2008, 23h19
  4. Export au format CSV limité à 255 caractères
    Par RKU01 dans le forum Access
    Réponses: 1
    Dernier message: 07/12/2006, 04h53
  5. Variables string limité à 255 caractères?
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 27/01/2006, 15h29

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