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

VB 6 et antérieur Discussion :

Importer un fichier csv dans une table mdb


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 80
    Points : 53
    Points
    53
    Par défaut Importer un fichier csv dans une table mdb
    Bonjour le forum,

    J'explique mon probleme.
    J'exporte via une page php le resultat d'un requete dans un fichier csv, les lignes dans ce fichier sont séparées par un petit carré (donc dans notepad, j'ai toutes les données sur une seule ligne, or quand je l'ouvre avec excel, j'ai bien plusieurs lignes)

    Voici mon code pour importer dans ma base de donnée

    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
    Dim PathCsv As String          ' Chemin et Fichier .csv à traiter
    Dim LignE As String
    Dim TableW() As String
    Dim i As Long
    Dim NomCsv As String
    Dim db As DAO.Database
    Dim rc As DAO.Recordset
     
     
    'ImportCmdWeb
    dbsbase.Execute ("DELETE FROM commandeWeb")
        PathCsv = App.path & "\Import\ordersexports.csv"
        Open PathCsv For Input As #1
     
        Set db = DAO.OpenDatabase(App.path + "\gestion.mdb")
        Set rc = db.OpenRecordset("commandeWeb", dbOpenTable)    'Ouverture de la table
     
        Do While Not EOF(1)
          Line Input #1, LignE
          TableW() = Split(LignE, ";")
     
          rc.AddNew
     
          For i = 0 To UBound(TableW)
            rc.Fields(i).Value = TableW(i)                 ' Création dune ligne
          Next i
     
          rc.Update
        Loop
     
        MsgBox "Update OK"
     
        Close #1
        rc.Close
        Set rc = Nothing
        db.Close
    Ce code ne fonctionne pas car il l'interprete comme si il y avait qu'une seule ligne.
    Si je l'enregistre en csv avec excel et que je réexecute le code ca fonctionne car excel l'a enregistré sur plusieures lignes
    Comment interpreter dans mon code le petit carré qui sépare les lignes ?

    Merci d'avance

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tu peux vérifier de quel caractère il s'agit en faisant un "debug.print asc(mid(position de ton caractère dans la chaine,1))" mais je parierais sur un code Ascii 10 (Line Feed).
    Si c'est bien ça remplace tous les VbLf par des VbCrLf dans ton fichier, ce qui revient à ajouter le Carriage Return, ca devrait etre bon.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Salut OhMonBato,

    Merci pour ta réponse...
    Ca doit etre ca ... Peux-tu me dire ou je dois mettre le replace dans mon code ...

    Merci

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Ca DOIT etre ça ou C'EST ça ? Tu as vérifié ?

    Dans le principe tu pourrais ouvrir une fois ton fichier, tu testes la présence de plusieurs vbCRLF :
    - Y'en a, c'est bon, tu fermes le fichier, on continuera après
    - Y'en a pas : tu remplaces tous les VbLF par des vbCRLF, tu sauvegardes, tu fermes le fichier, tu n'auras ainsi pas à modifer à chaque lecture.

    Là maintenant tu peux de nouveau ouvrir ton fichier quel que soit le résultat du test précédent, tu es sûr que tout est bien séparé comme tu le souhaites.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #5
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 89
    Points : 73
    Points
    73
    Par défaut
    Moi j'utiliser transferText d'Access pour importer un fichier csv.

    Par exemple quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim cnPrinc As New ADODB.Connection
    Dim AcAPP As Access.Application
     
        cnPrinc.Provider = "Microsoft.Jet.OLEDB.4.0"
        cnPrinc.CursorLocation = adUseServer
        cnPrinc.ConnectionString = App.path & "\gestion.mdb"
        cnPrinc.Open
     
        Set AcAPP = New Access.Application
        AcAPP.OpenCurrentDatabase App.path & "\gestion.mdb"
     
        AcAPP.DoCmd.TransferText AcImportDelim, "SchemaGestion", "CommandeWeb", PathCsv , True
    Tu dois aller créer le Schéma "SchemaGestion dans ta base de données gestion.mdb. Tu fais prend un fichier que tu importes "manuellement" directement dans Access, le bouton avancé dans l'importation te permettra d'enregistrer ton Schema. Le fait d'importer "manuellement" te permettra également de voir comment ça se passe dans Access.

    J'espère n'avoir rien oublié et que ça pourra t'aider.

    Bonne chance!!

Discussions similaires

  1. Importer un fichier csv dans une table
    Par helmis dans le forum PL/SQL
    Réponses: 3
    Dernier message: 05/08/2008, 09h28
  2. Importer un fichier CSV dans une table Access
    Par zemeilleurofgreg dans le forum Bases de données
    Réponses: 17
    Dernier message: 09/07/2008, 22h48
  3. [WD9] Importer un fichier csv dans une table
    Par cactus666 dans le forum WinDev
    Réponses: 1
    Dernier message: 01/10/2007, 14h07
  4. Importer un fichier CSV dans une table mySQL
    Par crazydiver_e2 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/01/2007, 10h47
  5. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06

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