Transfert donnees

Résolu
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013 - 11 mars 2008 à 10:13
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 - 12 mars 2008 à 14:56
Bonjour

J'ai une table access qui contient des donnees (nom,prenom,date n, adresse .. ) je dois importe
des donnees mensuellement sur cette table d'un fichier .TXT  qulqu'un peut me donne l'idée commen faire
merci d'avance
le nom de la table releve
le fichier txt  rele.txt

16 réponses

cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
12 mars 2008 à 14:51
Bonjour

Merci pour votre orientation voici le code inser des donnes d'un fichier TXT vers une table access avec vb6

Dim tablo() As String
Dim g As Double
Dim b, c, d, e, f, h, k As String
Dim bd As Database


Private Sub Command1_Click()


Set bd = OpenDatabase("c:\rapprochement.mdb")
Open "C:\rele.txt" For Input As #1




While Not EOF(1)
    Input #1, a$
 
  tablo() = Split(a$, "|")


b = tablo(0)
c = tablo(1)
d = tablo(2)
e = tablo(3)
f = tablo(4)
g = tablo(5)
h = tablo(6)
k = tablo(7)


bd.Execute "INSERT INTO releve values ('" & b & " ','" & c & "'," & _
"             '" & d & " ','" & e & "'," & _
"             '" & f & " ','" & g & "'," & _
"             '" & h & " ','" & k & "')"
Wend
MsgBox ("Transfert termine Au revoir")
Close #1
End Sub
3
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
11 mars 2008 à 10:22
re

je suis sous VB6
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
11 mars 2008 à 10:31
Salut,

Il me faudrait plus de détails.
Les données de ton fichiers texte sont elles lignes par lignes ?
Y a t il un séparateur si oui lequel ? (cela donne donc un fichier plat)

Si tu réponds oui à toutes ces questions :

Vérifie si ta base et ton fichier existe et si la date correspond à la date où tu dois importer (ex : dernier import le 01/01/2008, prochaine le 01/02/2008)

Si tout est bon,

Parcours ton fichier ligne à ligne en stockant dans un tableau ta ligne en la splitant suivant ton séparateur.

Une fois fait, lance ta requête de INSERT INTO releve (col1, col2, ..., colN) VALUES (tableau (1), tableau (2), ..., tableau(N));
Fait attention mais il serait quand même bon de vérifier que tu ne sois pas en train d'écrire un doublon.

J'espère que ton fichier n'est pas trop gros (10 Mo commencent à être dur).
Je ne sais pas si en vb6 tu peux faire des threads mais là ça serait peut être une bonne idée afin de ne pas figer le poste.

Bonne prog.
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
11 mars 2008 à 10:58
Salut

mon fichier txt possed un separateur entre les champs |.....|.....| etc
je n'est pas de date je dois insere 1 fois par mois les donnees du mois

a + et merci
0

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

Posez votre question
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
11 mars 2008 à 11:12
Cela signifie donc que il y a une personne qui doit s'en charger manuellement (je parle de lancer et d'exécuter l'appli ???). C'est je trouve un peu dommage surtout quand tu automatises tout le reste.

Vérifie, ça me paraît bizarre. Quand on a chaîne de production, on cherche à ce que out soit automatisé généralement.

C'est pas un jugement sur la manière de fonctionner juste une reflexion. Je ne voudrais pas non plus qu'on te le repproche après coup et que tu doives le faire en catastrophe parce que ta livraison est pour hier !!! (Et au fond qui peux le plus peux le moins)

Sinon pour ton séparateur,
Quand tu as une ligne de ton fichier texte,

dim tableau as string ()
tableau = LaLigneLue.split("|") 'Ton séparateur
'Maintenant ton tableau est rempli

Attention l'index d'un tableau commence à 0 donc :
et donc si tu parcours ton tableau arrête toi bien à tableau.lenght - 1 (indice aximum de ton tableau)
tableau(0) contient ta première donnée
tableau(1) contient ta seconde donnée
...

Tu n'as plus qu'à te connecter et passer ta requete d'insert.

Bon courage.
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
11 mars 2008 à 11:24
Salut 

eclaire moi 1peu svp comment procede esct que je dois declare un tableau comment faire le debut

a+
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
11 mars 2008 à 11:59
Désolé je fais du .Net: l'exemple ne sera pas exactement à suivre.

'Vérifie si ton fichier texte existe
if not file.exists("C:\rele.txt") then
msgbox("Le fichier n'existe pas")
exit sub
end if

'On ne sais jamais mais vérifie si ta base existe pas
if not file.exists("C:\releve.mdb") then
msgbox("La base n'existe pas")
exit sub
end if

' Déclaration d'un flux de lecture dans le fichier
Dim StreamR As New StreamReader("C:\rele.txt", False)
Dim Maligne as string
Dim Tableau as string ()

'Tant qu'on lit dans le fichier
Do Until StreamR.Peek = -1
'On stocke la ligne dans une variable
MaLigne = StreamR.ReadLine.ToString
tableau = maligne.split("|")

'Le reste de ton traitement
'Connection à la base
'Insertion des données

Loop

msgbox("Procédure terminée avec succès")

Voici comment c'est en .net. Pour VB6 regarde sur le forum comment parcourir ton fichier ligne à ligne, te connecter à une base access et envoyer une requête. Ton est sur le forum si tu donnes la peine de chercher.

Allez @+
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
11 mars 2008 à 13:06
re salut

c'est tres gentil de votre part mais ca n'a pas marche sur vb6

a+
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
11 mars 2008 à 13:36
Je te l'ai dit que ça ne marcherait en vb6 car c'est du .Net. Là tu as la logique, l'algo si tu veux. Il te faut juste adapter ça en vb 6 et tu as toutes les sources sur le forum.
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
12 mars 2008 à 08:59
Bonjour

le probleme je ne sais pas comment declare où lire le fichier TXT sur vb6
je connais meme la syntaxe comment commence

a+
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
12 mars 2008 à 09:20
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
12 mars 2008 à 09:26
Salut, voici ce que j'ai trouvé ici : http://www.vbfrance.com/codes/LIRE-FICHIER-TEXTE-LIGNE-LIGNE-METTRE-DANS-TEXTE_49.aspx

Ce code permet de lire un fichier texte ligne à ligne et de mettre lal ligne dans une textbox. Tu vois si tu cherches tu trouves.

Private Sub Command1_Click()
'Text1.MultiLine = 1
Open "C:\monfichiertext.txt" For Input As #1
While Not EOF(1)
Input #1, a$
'Text1 = Text1 + Chr$(13) + Chr$(10)
Text1 = Text1 + a$ + Chr$(13) + Chr$(10)
Wend
///////////////////////////////////////////////////

Close #1
End Sub

Va sur le liens et regarde les commentaires sur la notion de split. Ton séparateur est "|" et non " ".

Une fois que c'est fait :
Pour ta base de données regarde ici :
http://www.vbfrance.com/codes/ACCESS-2003-V1_5951.aspx

Voilou.
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
12 mars 2008 à 09:26
salut et MERCI
0
cs_zaatout Messages postés 156 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 20 novembre 2013
12 mars 2008 à 10:44
Salut

maintenat j'arrive a affiche le contenu du fichier TXT du genre
ENAHYA|1207|CHEQUE CLIENT|7031478|121207|145352.23|D|
il ya 541 enregistrements
je voudrais les insere ds une table qui contient deja des donnees des mois precedent

dos=ENAHYA
mois=1207
lib=CHEQUE CLIENT
chq=7031478
date=121207
mnt=145353.23
sens=D

a+
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
12 mars 2008 à 11:27
Je me répète mais

Une fois que c'est fait :
Pour ta base de données regarde ici :
http://www.vbfrance.com/codes/ACCESS-2003-V1_5951.aspx

connecte toi avec la procédure que tu verras sur le lien
et fait une requête INSERT INTO ... comme je te l'ai dit avant.

@+
0
Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
12 mars 2008 à 14:56
Voilà bien vu. J'espère que cela marche bien (pas de freeze du programme ou de la machine) et surtout merci de faire profiter la communauté de ton code. Si je peux me permettre, Dépose une source standard de ton code afin que cela puisse servir à d'autres.

Met un exempe de fichier texte avec trois lignes, une base contenant une table simple juste pour l'exemple si possible.

Allez @+++
0
Rejoignez-nous