Répétition de lignes avec MAJ de champs dans une table

Le
Yann
Bonjour,

Désolé pas très explicite l'objet du message mais je n'ai pas trouvé mieux!
Je vais plutôt vous décrire par l'exemple mon problème.

J'ai une table avec les champs et des valeurs exemples suivantes:
Nom - Prénom - NuméroSemaine - DateDeb - DateFin - HeureDeb - HeureFin -
Situation
DUPONT - Yann - 10 - 03/03/2008 - 05/03/2008 - 9:30 - 12:30 - Travail
MARTIN - Yann - 10 - 04/03/2008 - 04/03/2008 - 12:30 - 15:30 - Travail

Je souhaiterais modifier la table:
- Si la DateFinÚteDeb, ne pas modifier la ligne,
- Si DateFin est différent de DateDeb alors répéter la ligne autant de fois
qu'il y a de jour de différence entre DateDeb et DateFin et modifier DateFin
pour qu'il soit égal à DateDeb.

Ce qui donnerait:
DUPONT - Yann - 10 - 03/03/2008 - 03/03/2008 - 9:30 - 12:30 - Travail
DUPONT - Yann - 10 - 04/03/2008 - 04/03/2008 - 9:30 - 12:30 - Travail
DUPONT - Yann - 10 - 05/03/2008 - 05/03/2008 - 9:30 - 12:30 - Travail
MARTIN - Yann - 10 - 04/03/2008 - 04/03/2008 - 12:30 - 15:30 - Travail

Je n'ai pas trouvé de solution et mes recherches sur Internet ne m'ont pas
apporté de piste supplémentaire. En voyez-vous?

Merci d'avance.
Yann.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6358191
Bonjour,

Désolé pas très explicite l'objet du message mais je n'ai pas trouvé mieux!
Je vais plutôt vous décrire par l'exemple mon problème.

J'ai une table avec les champs et des valeurs exemples suivantes:
Nom - Prénom - NuméroSemaine - DateDeb - DateFin - HeureDeb - HeureFin -
Situation
DUPONT - Yann - 10 - 03/03/2008 - 05/03/2008 - 9:30 - 12:30 - Travail
MARTIN - Yann - 10 - 04/03/2008 - 04/03/2008 - 12:30 - 15:30 - Travail

Je souhaiterais modifier la table:
- Si la DateFinÚteDeb, ne pas modifier la ligne,
- Si DateFin est différent de DateDeb alors répéter la ligne autant de fois
qu'il y a de jour de différence entre DateDeb et DateFin et modifier DateFin
pour qu'il soit égal à DateDeb.

Ce qui donnerait:
DUPONT - Yann - 10 - 03/03/2008 - 03/03/2008 - 9:30 - 12:30 - Travail
DUPONT - Yann - 10 - 04/03/2008 - 04/03/2008 - 9:30 - 12:30 - Travail
DUPONT - Yann - 10 - 05/03/2008 - 05/03/2008 - 9:30 - 12:30 - Travail
MARTIN - Yann - 10 - 04/03/2008 - 04/03/2008 - 12:30 - 15:30 - Travail

Je n'ai pas trouvé de solution et mes recherches sur Internet ne m'ont pas
apporté de piste supplémentaire. En voyez-vous?

Merci d'avance.
Yann.

Salut Yann

Brut de fonderie: tu passe par une table temporaire.
Tu l'alimentes avec une boucle sur la table principal avec un enreg par
date par personne si datedebut<>datefin.

Dim Rst_Prin,Rst_Temp as dao.recordset
Dim Anc_NomPrenom as String
Dim Nbr_Jour as Integer
Dim Ladate as date
Set Rst_Prin = Currentdb.openrecordset("Select * from MatablePrincipale
Order by [NOM] desc,[Prenom] Desc,Datedeb Desc;")
Currentdb.execute ("Delete * from TableTemp;")
Set Rst_Temp = Currentdeb.openrecordset("TableTemp")
Anc_Nom_Prenom=""
While Not Rst_Prin.eof
Nbr_JourÚteDiff("d",rst_prin("DateDeb"),Rst_Prin("DateFin))
Ladate=Rst_Prin("Datedeb")
For I=1 to Nbr_Jour

With Rst.Temp
.Addnew
Rst_Temp("DateDebut")=Ladate
Rst_Temp("Datefin")=LaDate
Rst_Temp("Nom")=Rst_Prin("Nom")
.
.
.
.Update
End With
LadateÚteadd("d",I,Rst_Princ("Datedeb"))
Next I
Rst_Prin.moveNext
Wend
Rst_Prin.close
Rst_Temp.Close
Set Rst_Prin=Nothing
Set Rst_Temp=Nothing

Voilà. Avec quelque chose dans ce genre là ça doit le faire ;-)
Yapluska ;-)

Yann
Le #6357951
Bonjour Fabien,

De minimes corrections et ça marche, merci beaucoup!!

Yann.

Fabien Bonjour,



Désolé pas très explicite l'objet du message mais je n'ai pas trouvé
mieux!

Je vais plutôt vous décrire par l'exemple mon problème.

J'ai une table avec les champs et des valeurs exemples suivantes:
Nom - Prénom - NuméroSemaine - DateDeb - DateFin - HeureDeb - HeureFin -
Situation
DUPONT - Yann - 10 - 03/03/2008 - 05/03/2008 - 9:30 - 12:30 - Travail
MARTIN - Yann - 10 - 04/03/2008 - 04/03/2008 - 12:30 - 15:30 - Travail

Je souhaiterais modifier la table:
- Si la DateFinÚteDeb, ne pas modifier la ligne,
- Si DateFin est différent de DateDeb alors répéter la ligne autant de
fois

qu'il y a de jour de différence entre DateDeb et DateFin et modifier
DateFin

pour qu'il soit égal à DateDeb.

Ce qui donnerait:
DUPONT - Yann - 10 - 03/03/2008 - 03/03/2008 - 9:30 - 12:30 - Travail
DUPONT - Yann - 10 - 04/03/2008 - 04/03/2008 - 9:30 - 12:30 - Travail
DUPONT - Yann - 10 - 05/03/2008 - 05/03/2008 - 9:30 - 12:30 - Travail
MARTIN - Yann - 10 - 04/03/2008 - 04/03/2008 - 12:30 - 15:30 - Travail

Je n'ai pas trouvé de solution et mes recherches sur Internet ne m'ont
pas

apporté de piste supplémentaire. En voyez-vous?

Merci d'avance.
Yann.

Salut Yann

Brut de fonderie: tu passe par une table temporaire.
Tu l'alimentes avec une boucle sur la table principal avec un enreg par
date par personne si datedebut<>datefin.

Dim Rst_Prin,Rst_Temp as dao.recordset
Dim Anc_NomPrenom as String
Dim Nbr_Jour as Integer
Dim Ladate as date
Set Rst_Prin = Currentdb.openrecordset("Select * from MatablePrincipale
Order by [NOM] desc,[Prenom] Desc,Datedeb Desc;")
Currentdb.execute ("Delete * from TableTemp;")
Set Rst_Temp = Currentdeb.openrecordset("TableTemp")
Anc_Nom_Prenom=""
While Not Rst_Prin.eof
Nbr_JourÚteDiff("d",rst_prin("DateDeb"),Rst_Prin("DateFin))
Ladate=Rst_Prin("Datedeb")
For I=1 to Nbr_Jour

With Rst.Temp
.Addnew
Rst_Temp("DateDebut")=Ladate
Rst_Temp("Datefin")=LaDate
Rst_Temp("Nom")=Rst_Prin("Nom")
.
.
.
.Update
End With
LadateÚteadd("d",I,Rst_Princ("Datedeb"))
Next I
Rst_Prin.moveNext
Wend
Rst_Prin.close
Rst_Temp.Close
Set Rst_Prin=Nothing
Set Rst_Temp=Nothing

Voilà. Avec quelque chose dans ce genre là ça doit le faire ;-)
Yapluska ;-)



Publicité
Poster une réponse
Anonyme