cs_zaatout
Messages postés156Date d'inscriptiondimanche 19 novembre 2006StatutMembreDernière intervention20 novembre 2013
-
11 mars 2008 à 10:13
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 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
cs_zaatout
Messages postés156Date d'inscriptiondimanche 19 novembre 2006StatutMembreDernière intervention20 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
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 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.
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 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.
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 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.
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 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.
cs_zaatout
Messages postés156Date d'inscriptiondimanche 19 novembre 2006StatutMembreDernière intervention20 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
Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 20122 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.