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 :

Récuperation des donnees dans un fichier .csv


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Récuperation des donnees dans un fichier .csv
    Bonjour à tous,
    Apres de vaines recherches, je me tourne vers vous dans l'espoir que vous pourrez m'aider.
    J'essaye de lire un fichier .csv dans lequel les données sont séparées par des virgules (,). Adodb refuse de le lire correctement.
    J'ai fait des essais en changeant les virgules par les points virgules (;) tout se passe bien. Mais je voudrais ne pas avoir a transformer mon .csv avant de l'exploiter.
    Pouvez vous me dire si vous avez déja eu le probleme ?
    Voici le code pour ouvrir et lire les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Set cnAS400 = New Connection
    Set RSImport = New Recordset
    cnAS400.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Projet ePlastic\;Extended Properties='text;HDR=yes;FMT=.'"
    'RSImport.CursorLocation = adUseClient
    RSImport.Open "select * from [test.csv]", cnAS400, adOpenDynamic, adLockReadOnly, adCmdText
    Merci de votre aide

  2. #2
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Bonsoir,

    Etant donné qu'un fichier n'est rien d'autre qu'un fichier TXT particulier. Tu peux lire les différentes lignes de ton fichier de la même manière que tu lirais un fichier TXT.

    Par rapport au code que tu donnes j'essayerais plutot ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set cnAS400 = New Connection
    Set RSImport = New Recordset
    cnAS400.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Projet ePlastic\nom_fichier.csv;Extended Properties='text;HDR=yes;FMT=.'"
    'RSImport.CursorLocation = adUseClient
    RSImport.Open "select * from [test.csv]", cnAS400, adOpenDynamic, adLockReadOnly, adCmdText
    Je n'ai jamais utilisé de fichier CSV comme fournisseur de données.

    Mow

  3. #3
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonsoir Mow,
    J'ai essayé et cela ne marche pas. La data source attendue dans cette instruction est un directory et vb me renvoie une erreur.

  4. #4
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je m'apercois qu'une erreur s'est gliséé dans le code que j'ai donné au début. Il fau lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set cnAS400 = New Connection
    Set RSImport = New Recordset
    cnAS400.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Projet ePlastic\;Extended Properties='text;HDR=yes;FMT=delimited'"
    RSImport.Open "select * from [test.csv]", cnAS400, adOpenDynamic, adLockReadOnly, adCmdText

  5. #5
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Excel étant capable de lire un fichier csv tu n'a qu'a l'ouvrir comme si c'était un fichier xls et il le mettra en colonne et en ligne tout a fait correctement si tu veut j'ai créé un control pour Excel, va sur mon site (cf mon profil)
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  6. #6
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Avigeilpro. Est ce que ton controle va permettre a adodb de charger monrecorset correctement. Quel serait le code approprié à mettre dans mon programme ? Merci.

  7. #7
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Mon control ne fait que réccupérer les données du fichier Csv après à toi d'en faire ce que tu veux. Cherche un peu et si tu as un problème dis le

    Juste une question : à quoi sert ton recordset?
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  8. #8
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Le controle dont tu parles c'est XLcontrol.ocx ?

  9. #9
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Oui, pourquoi ?
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  10. #10
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Parce que je ne sais pas comment m'en servir.

  11. #11
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Il est très simple d'utilisation. Voici un exemple de chaque méthode :

    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
    Dim Valeur As String
     
    'Ouvre la première feuille du fichier
    XlControl1.Ouvrir "C:\MonFichier.xls", 1
     
    'Réccupère la valeur de la 1ère ligne 1ère colonne
    Valeur = XlControl1.Lire(1, 1)
     
    'écrit la valeur dans la 1ère ligne 2ème colonne
    XlControl1.Ecrire Valeur, 1, 2
     
    'Imprime la feuille
    XlControl1.Imprimer
     
    'ferme le fichier
    XlControl1.Fermer True
    Bien sûr pour ouvrir un fichier Csv tu fait pareil mais tu mais par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Ouvre la première feuille du fichier
    XlControl1.Ouvrir "C:\MonFichier.Csv", 1
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  12. #12
    Candidat au Club
    Inscrit en
    Août 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Hummm, le probleme c'est que je dois renvoyer les datas dans un recorset adodb. Ta methode me permet d'ouvrir le fichier et de le lire ligne par ligne. Je ne peux pas employer d'instructions SQL.
    Pour le moment j'utilise l'astuce suivante :
    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
    41
     
    Private Sub Form_Load()
    Dim strSQL1 As String
    Dim i As Integer
    Dim cnAS400 As adodb.Connection
    Dim RSImport As adodb.Recordset
     
     
    Call Convertfile
    Set cnAS400 = New Connection
    Set RSImport = New Recordset
     
    cnAS400.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & "c:\Projet ePlastic\" & _
           ";Extended Properties=""text;HDR=Yes;FMT=Delimited"""
    strSQL1 = "select [SPLTNBR1], [SPPROD]," & _
    "[SPRQTY], [SPLORD], [SPCUNM], [SPCDDT],  [SPPRLN]" & _
    "from [mfgdwh1.csv] where [SPPLTNAM] = 'FOS' and [SPYEAR] = 2006" & _
    " and [SPWEEK] = 32 and [SPLTNBR1] <> 0"
    RSImport.Open strSQL1, cnAS400, adOpenDynamic, adLockReadOnly, adCmdText
    .../...
     
    RSImport.Close
    Set RSImport = Nothing
    cnAS400.Close
    Set cnAS400 = Nothing
    End Sub
     
    Sub Convertfile()
    Dim File1, File2, a, b As String
     
    File1 = "c:\Projet ePlastic\mfgdwh.csv"
    File2 = "c:\Projet ePlastic\mfgdwh1.csv"
    Open File1 For Input As #1
    Open File2 For Output As #2
    a = Input(LOF(1), #1)
    b = Replace(a, ",", ";")
    Print #2, b
    Close #1
    Close #2
    End Sub
    La fonction convertfile me convertit les virgules (,) par des point virgules ( ce qui permet à ado de fonctionner correctement.
    Il resque que c'est tout de meme frustrant de ne pas pouvoir utiliser ado directement sur des .csv dont le delimeteur est une virgule....

    avigeilpro, je te remercie quand meme beaucoup de ton support !

Discussions similaires

  1. Remplacer des donnees dans un fichier csv
    Par pitchalov dans le forum VBScript
    Réponses: 1
    Dernier message: 16/07/2008, 16h44
  2. Réponses: 4
    Dernier message: 13/12/2006, 17h10
  3. [SQLLite] Lecture des données dans un fichier .db
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 31
    Dernier message: 13/11/2006, 17h12
  4. Extraire des données dans un fichier .csv
    Par orj30754 dans le forum C
    Réponses: 7
    Dernier message: 03/11/2006, 14h48
  5. Mettre des donnees dans un fichier Excel
    Par Mouawad dans le forum C++Builder
    Réponses: 6
    Dernier message: 07/10/2004, 14h55

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