Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

2 réponses
Avatar
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=DateDeb, 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.

2 réponses

Avatar
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 ;-)

Avatar
Yann
Bonjour Fabien,

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

Yann.

Fabien 25/03/2008 08:36 >>>
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 ;-)