Données CSV vers Table

cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013 - 17 juil. 2007 à 10:35
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013 - 25 juil. 2007 à 14:43
Bonjour



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 





 




J’ai un fichier.TXT comme suite :



 




2007|01|102108|61|S|COSSE BATTERIE|300.25|



 




Je voudrais transfère  ces données dans une table en respectant la taille des champs :



 




Anne CHAR 4


Mois CHAR 2


STRCTURE   CHAR 10


COMPTE  CHAR 6


DESIGNATION  CHAR 45


MONTANT  NUMERIQUE  18.2



 




Quel est le code nécessaire pour le transfert   MILLE MERCI



 





 

17 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 juil. 2007 à 10:37
Salut,
Va falloir être plus précis j'ai pas trop compris quel était le problème.

NOTE: la prochaine choisi un titre plus explicit que celui ci

@+: Ju£i?n
Pensez: Réponse acceptée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2007 à 10:38
Split pour découper tes champs

ensuite, une simple requete d'insertion...

avec un Left$ pour tronquer tes données importées, au cas où
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2007 à 10:39
post renommé
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
17 juil. 2007 à 10:41
Salut

Soit plus precis Renfield donne moi le Code SVP


Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 juil. 2007 à 10:43
Re,
Ou la limite je trouve le "donne moi le code SVP"

PETIT RAPPEL

<ol><li>On fait une recherche sur le site avant de poster une question.</li><li>On est poli : « bonjour » et « merci » sont des mots appréciés.</li><li>On utilise un langage correct : pas de langage SMS, et on fait attention à l'orthographe.</li><li>On demande une explication sur un sujet précis, on ne l'exige pas.</li><li>On ne pose qu'une question par topic.</li><li>On pose une question aussi précise que possible.</li><li>On précise les détails du problème : contexte, langage, message d'erreur ...</li><li>On pense à donner le bout de code qui pose problème, et préciser le langage utilisé.</li><li>On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème
concret.
</li><li>On pense à laisser un petit message lorsqu'un problème est résolu et à cliquer
sur le bouton « réponse acceptée ».</li></ol>

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
17 juil. 2007 à 11:09
Salut et bonjour à tous,

En ce moment cela y va les : donne moi un code STP.....Faut pas croire zaatout, que les membres du site sont à ta disposition...

Faut quand même faire un minimum de recherche et en plus avec ce que vient de te dire Renfield...

La touche F1 de ton clavier ne fonctionne pas ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
17 juil. 2007 à 12:39
je m'excuse je me retire de ce forum
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
17 juil. 2007 à 13:03
Salut,

Ne le prend pas mal, ce sont là juste des explication sur le fonctionnement du forum...Lis le réglement et tu va vite comprendre pourquoi tu as ces réponses...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
22 juil. 2007 à 17:06
Bonjour  je m'excuse j'ete absent

pour plus dinformation je travaille sur le systeme unix et je programme sur informix bref

j'ai des donnees sur une table infomix pour les extraire je fais

dbunload to cons.txt select * from mouvement , le probleme le dbunload ne respect pas la taille des champs donc les donnes sont transfere comme suite
2007|01|102108|61|S|BRIDE|200,02|
2007|01|108101|61|S|ACIDE 28|28,41|

donc mois j'aimerais les avoir dans le formats suivant
champ1  4 caractere
champ2   2 caractere
champ3   10 caractere
champ4    6 caractere
champ5   20 caractere
champ6   11 caractere
donc prendre en consideration les blancs

200701102108    61    SBRIDE                    200,02
200701108101    61    SACIDE 28               28,41

j'ai trouve ce bout de code en VB6 qui lie et affiche le contenu de cons.txt

donc je voudrai bien ke kelk1 m'aide a modifie les ligne

mille merci
Private Sub ReadAllLines(ByVal sPath As String, ByRef aLines() As String)
Dim Buf As String
       On Error Resume Next
    Open sPath For Input As #1
     
              Buf = Input(LOF(1), #1)
    Close #1
    aLines = Split(Buf, vbNewLine)
End Sub


Private Sub Form_Load()
Dim toto As String
Dim aMesLignes() As String
Dim i, j As Long
Dim ligne As String


    Me.AutoRedraw = True
    Me.Show
   ReadAllLines "c:\cons.txt", aMesLignes
    Me.Print (1 + UBound(aMesLignes)) & " Enregistrements" & vbNewLine
    For i = LBound(aMesLignes) To UBound(aMesLignes)
        Me.Print aMesLignes(i)
           
    Next i
End Sub


 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 juil. 2007 à 12:03
Tu pourrais peut-être essayer en te créant un Type avec le nombre d'items nécessaire et de longueurs définies selon les besoins.

ex:
Type MyType
    Champ1 as String * 4
    Champ2 as String * 2
    Champ3 as String * 10
    Champ4 as String * 6
    Champ5 as String * 20
    Champ6 as String * 11 ' ou As Double
End Type
Dim MonType as MyType

(MonType pourrait être un tableau de type MyType)

Difficile d'expliquer plus précisément sans voir le fichier ... et sans savoir exactement ce que tu dois faire avec ces données qui semblent devoir être de longueurs fixes.

Donc, un premier Split sur vbcrlf ou vbnewline pour récupérer chaque ligne du fichier.
Et un autre Split sur le séparateur pour récupérer chaque partie de cette ligne.
Et tu affectes chaque item de cette ligne à une partie de "MonType"
MonType.Champ1 = Tablo(0)
..............

MPi
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
23 juil. 2007 à 14:32
Merci pour la Reponse
mais voila si vous pouvez me donner plus de details SVP je n'arrive pas a mettre a jour le fichier cons.txt en respectant la longeur des champs

c'est URGENT SVP
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 juil. 2007 à 15:08
Salut et bonjour MPI,

Attention le mot Urgent est à proscrire...lol...
A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
23 juil. 2007 à 15:41
Salut

Vraiment je suis bloque 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
24 juil. 2007 à 03:03
Et où es-tu bloqué ?

MPi
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
24 juil. 2007 à 10:53
Bonjour : Voici mon code d'affichage  du fichier .txt

Dim aaaa As String * 4
Dim mm As String * 2
Dim cptcae As String * 10
Dim compte As String * 6
Dim libelle As String * 30
Dim montant As String * 11


Option Explicit
Private Sub ReadAllLines(ByVal sPath As String, ByRef aLines() As String)
Dim Buf As String
       On Error Resume Next
    Open sPath For Input As #1
     
              Buf = Input(LOF(1), #1)
    Close #1
    aLines = Split(Buf, vbNewLine)
End Sub


Private Sub Form_Load()
Dim toto As String
Dim aMesLignes() As String
Dim i, j As Long
Dim ligne As String


    Me.AutoRedraw = True
    Me.Show
   ReadAllLines "c:\cons.txt", aMesLignes
    Me.Print (1 + UBound(aMesLignes)) & " Enregistrements" & vbNewLine
    For i = LBound(aMesLignes) To UBound(aMesLignes)
        Me.Print aMesLignes(i)
           
    Next i
End Sub


je n'arrive pas  a mettre a jour ce fichier .txt en respectant les tailles des champs .Les donnees sont affiche comme ça

2007|01|102102|61|ACIDE|300,25

j'aimerai les avoir comme suite

200701102102    61   ACIDE                         300,25

 DONC

le 1er champ    string*4
le 2eme champ string*2
le 3eme champ string*10
le 4eme champ string*6
le 5eme champ string*30
le 6eme champ string*11

JE CROIE QUE VAUS AVAEZ COMPRIS LE PROBLEME

A BIENTOT ET MERCI
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 juil. 2007 à 00:14
Dans to Form_Load, tu appelles une fonction (Sub) qui crée un tableau qui te donne ce genre de ligne
2007|01|102102|61|ACIDE|300,25

Donc, dans ta boucle, tu dois faire un autre Split sur le caractère "pipe" qui semble être ton séparateur et tu récupéreras chaque item de la ligne

    For i = LBound(aMesLignes) To UBound(aMesLignes)
'        Me.Print aMesLignes(i)
         MonAutreTableau = Split(aMesLignes(i), "|")  ' mettre le bon séparateur
        For j = 0 to UBound(MonAutreTableau)
            msgbox(MonAutreTableau(j))         
       Next j
    Next i

est-ce que ça aide un peu ?

MPi
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
25 juil. 2007 à 14:43
Bonjour

Merci du code que vous m'avez ecrie mais je n'arrive pas a l'interprete dans mon programme est ce que  vous voulez bien l'ajoute a mon programme.
merci
0
Rejoignez-nous