Répétition de lignes avec MAJ de champs dans une table
2 réponses
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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ;-)
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 ;-)
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
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 ;-)
Bonjour Fabien,
De minimes corrections et ça marche, merci beaucoup!!
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 ;-)
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 ;-)