Bonjour,
Je crée un prog qui recupere des info dans in fichier texte, et le sinsert dans une Bdd,
Voici un exemple de l'etat de la table apres insertion par mon prg dann l'etat actuel:
[ Lien ]
et le fichier texte source
[ Lien ]
Et voila mon bout de code qui insert le tout dans la base:
[CODE]Open App.Path & "\TESTIMPRESSION.txt" For Input As #1
'On insert dans des variables temporaires les Informations récupérées
Do While Not EOF(1)
Line Input #1, Ligne
Ev = Mid(Ligne, 1, 2)
Matricule = Trim(Mid(Ligne, 3, 10))
Code_Nat_EV = Mid(Ligne, 13, 4)
Date_Deb = Mid(Ligne, 17, 8)
H_Deb = Mid(Ligne, 25, 5)
Date_Fin = Mid(Ligne, 30, 8)
H_Fin = Mid(Ligne, 38, 5)
Nombre = Trim(Mid(Ligne, 43, 12))
Nb_J = Mid(Ligne, 151, 1)
Val_calc = Mid(Ligne, 152, 12)
Code_Mot_Abs = Mid(Ligne, 164, 10)
Commentaire = Mid(Ligne, 174, 30)
'On insert les Informations dans la Base de Données Selon le Cas
Set rs = db.OpenRecordset("DONNEES")
If Code_Nat_EV <> 1000 Then
rs.AddNew
rs.Fields("Matricule").Value = Matricule
rs.Fields("Date").Value = Date_Deb
If Code_Nat_EV = 300 Then
rs.Fields("H_Trav").Value = Val_calc
ElseIf Code_Nat_EV = 11 Then
rs.Fields("H_Norm").Value = Nombre
ElseIf Code_Nat_EV = 200 Then
rs.Fields("Pause").Value = Val_calc
ElseIf Code_Nat_EV = 13 Then
rs.Fields("H_125").Value = Nombre
ElseIf Code_Nat_EV = 14 Then
rs.Fields("H_150").Value = Nombre
ElseIf Code_Nat_EV Like "09" & "**" Then
rs.Fields("Abs").Value = Code_Mot_Abs
ElseIf Code_Nat_EV = 1100 Then
rs.Fields("Panier").Value = Nombre
End If
rs.Update
End If
'On effectue le meme traitement jusqu à la fin du fichier, ligne par ligne
Loop
Close
'On ferme la Base De Données et le fichier Txt
rs.Close
db.Close
Close #1[/CODE]
Le pb c'est que imaginon pour le matricule 1, a la date xx/xx/xx, il peut avoir 8 H_Trav, 2 H_125 et 1 Panier, seulement mon prog insert sa en 3 Enregistrements, (Comme le fichier Text en fait) mais je voudrait qu'il me les mette sur une seul ligne, les champs sont prévu pour.
Il faudrait donc qu'il parcour le recordset a la recherche d'une date egale a celle que je vien de recuperer, et d'inserer les variables dans les champs de Cet enregistrement (en faisant gaffe que a date egale, le matricule de l'enreg soit egal au matricule que je vien de lire)
Quelqu'un connait la syntaxe pour parcourir le recordset ? car je galere !
Ex:
Rs.FindFirst(Rs.Fields("Date").Value = Date_Deb) me dit "Aucun enreg courant"... (car a la premiere exec ma table DONNEES est vierge...
Enfin Bref Prise de Tete HELP !
MErci
P.S: Si jme suis mal exprimé, comme d'hab, c'est clair dans ma tete, mais confu dans mes fraz, dites le, je tacherai de mieu m'exprimer 