Requête ajout avec création enregistrements

Le
Isa
Bonjour

A votre avis, est-ce possible de faire ceci

soit une table avec id nom nom datedebut datefin etc
exemple
idtoto toto 01/03/2005 28/02/2008
idtata tata 01/05/2006 30/04/2015

soit une table suivi avec
idnom daterevision montant enregistrementnumero etc.

Est-il possible de créer une requête ajout qui viendrait alimenter la
table "suivi" avec les éléments suivants
idtoto 01/03/2006 (date + 1 an)
idtoto 01/03/2007 (date + 2an)

idtata 01/05/2007 (date +1 an)
idtata 01/05/2008 (date +2 an)
idtata 01/05/2009 (date +3 an)
idtata 01/05/2010 (date +4 an)
idtata 01/05/2011 (date +5 an)
idtata 01/05/2012 (date +6 an)
idtata 01/05/2013 (date +7 an)
idtata 01/05/2014 (date +8 an)

sachant que pour toto le contrat dure 3 ans donc 2 révisions à faire =
à
la date anniversaire
sachant que pour tata le contrat dure 9 ans donc 8 révisions à faire =
à
la date anniversaire

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry (ze Titi)
Le #6331231
Hello Isa !

En une requête, je ne vois pas mais avec une procédure VBA, c'est facile.

Dim rs as DAO.RecordSet, i As Integer
set rs=Currentdb.OpenRecordset("laTableOrigine",dbOpenDynaset)
rs.MoveLast
rs.MoveFirst
While not rs.EOF
For i=1 To DateDiff("yyyy",datedebut,datefin)-1
DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" & rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')"
Next
rs.MoveNext
Wend
Set rs=Nothing

A tester...

En ce jour mémorable du mardi 06/11/2007, tu as émis l'idée suivante:
Bonjour

A votre avis, est-ce possible de faire ceci

soit une table avec id nom nom datedebut datefin etc...
exemple
idtoto toto 01/03/2005 28/02/2008
idtata tata 01/05/2006 30/04/2015

soit une table suivi avec
idnom daterevision montant enregistrementnumero etc....

Est-il possible de créer une requête ajout qui viendrait alimenter la
table "suivi" avec les éléments suivants
idtoto 01/03/2006 (date + 1 an)
idtoto 01/03/2007 (date + 2an)

idtata 01/05/2007 (date +1 an)
idtata 01/05/2008 (date +2 an)
idtata 01/05/2009 (date +3 an)
idtata 01/05/2010 (date +4 an)
idtata 01/05/2011 (date +5 an)
idtata 01/05/2012 (date +6 an)
idtata 01/05/2013 (date +7 an)
idtata 01/05/2014 (date +8 an)

sachant que pour toto le contrat dure 3 ans donc 2 révisions à faire à
la date anniversaire
sachant que pour tata le contrat dure 9 ans donc 8 révisions à faire à
la date anniversaire

Merci d'avance


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Isa
Le #6331081
Hello Isa !

En une requête, je ne vois pas mais avec une procédure VBA, c'est fac ile.


Avec Thierry c'est toujours facile! ;-)

Merci

Pas pu encore tester problème de connexion puis après j'étais ennuy ée
Access 2000 vers 97, access 97 n'aime pas certains termes
Bon à priori, cela fonctionne, j'ai réussi à réparer
Pour info
avec Access 2000 il faut
Set rs = Me.Recordset.Clone

avec Access 1997 il faut
Set rs = Me.RecordsetClone

Bon, j'ai voulu tester un simple copier coller (je ne comprends pas
tout)
et ben avec 97 (je précise) cela bloque
Erreur de compilation
Instruction incorrecte à l'extérieur d'une procédure
et arrêt sur Set
Set rs = CurrentDb.OpenRecordset("laTableOrigine", dbOpenDynaset)

Merci

Thierry (ze Titi)
Le #6331061
Pour A97:

Dim rs as RecordSet, i As Integer
set rs=Currentdb.OpenRecordset("laTableOrigine")
rs.MoveLast
rs.MoveFirst
While not rs.EOF
For i=1 To DateDiff("yyyy",datedebut,datefin)-1
DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" &
rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')"
Next
rs.MoveNext
Wend
rs.Close

Mais toujours à tester...

Dans ton message du mardi 06/11/2007 jour de Sainte Bertille, tu as pris l'initiative de
nous narrer les faits suivants:
Hello Isa !

En une requête, je ne vois pas mais avec une procédure VBA, c'est facile.


Avec Thierry c'est toujours facile! ;-)

Merci

Pas pu encore tester problème de connexion puis après j'étais ennuyée
Access 2000 vers 97, access 97 n'aime pas certains termes
Bon à priori, cela fonctionne, j'ai réussi à réparer
Pour info
avec Access 2000 il faut
Set rs = Me.Recordset.Clone

avec Access 1997 il faut
Set rs = Me.RecordsetClone

Bon, j'ai voulu tester un simple copier coller (je ne comprends pas
tout)
et ben avec 97 (je précise) cela bloque
Erreur de compilation
Instruction incorrecte à l'extérieur d'une procédure
et arrêt sur Set
Set rs = CurrentDb.OpenRecordset("laTableOrigine", dbOpenDynaset)

Merci


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info


Isa
Le #6331041
Les cours du soir, c'est de quelle heure à quelle heure déjà ?
J'ai besoin d'un nom important d'heures de cours

bon si non,
ben...
variable non définie => datedebut
arrêt sur cette ligne
For i=1 To DateDiff("yyyy",datedebut,datefin)-1

pas glop!



Pour A97:

Dim rs as RecordSet, i As Integer
set rs=Currentdb.OpenRecordset("laTableOrigine")
rs.MoveLast
rs.MoveFirst
While not rs.EOF
For i=1 To DateDiff("yyyy",datedebut,datefin)-1
DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" &
rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')"
Next
rs.MoveNext
Wend
rs.Close

Mais toujours à tester...



Thierry (ze Titi)
Le #6331031
Ma faute...

For i=1 To DateDiff("yyyy",rs!datedebut,rs!datefin)-1


Dans ton message du mardi 06/11/2007 jour de Sainte Bertille, tu as pris l'initiative de
nous narrer les faits suivants:
Les cours du soir, c'est de quelle heure à quelle heure déjà ?
J'ai besoin d'un nom important d'heures de cours

bon si non,
ben...
variable non définie => datedebut
arrêt sur cette ligne
For i=1 To DateDiff("yyyy",datedebut,datefin)-1

pas glop!



Pour A97:

Dim rs as RecordSet, i As Integer
set rs=Currentdb.OpenRecordset("laTableOrigine")
rs.MoveLast
rs.MoveFirst
While not rs.EOF
For i=1 To DateDiff("yyyy",datedebut,datefin)-1
DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" &
rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')"
Next
rs.MoveNext
Wend
rs.Close

Mais toujours à tester...



--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info


Isa
Le #6331011
Ma faute...

For i=1 To DateDiff("yyyy",rs!datedebut,rs!datefin)-1



Oh! ben alors! J'ai déjà beaucoup de mal et si tu compliques les
choses
Ou va-t-on?


Bon, je vais essayer ce soir mais ce sera sur Access 2000
C'est galère ces différences entre versions, n'est-ce pas ?

Thierry (ze Titi)
Le #6331001
Oh! ben alors! J'ai déjà beaucoup de mal et si tu compliques les
choses
Ou va-t-on?
Tu as raison, j'arrête !


Bon, je vais essayer ce soir mais ce sera sur Access 2000
C'est galère ces différences entre versions, n'est-ce pas ?
Plus vite tu lâcheras 97, mieux tu te porteras pour la portabilité du

code...

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Isa
Le #6330981
Plus vite tu lâcheras 97, mieux tu te porteras pour la portabilité du
code...


ben le problème est qu'au boulot, c'est encore la vieille école !
Donc ben obligée
Attends, après ce sera OooBase

Je n'aurai pas l'honneur ni le plaisir de connaître Access 2007

Déjà rien que les fenêtres dans Visual Basic 2000 et 97 je ne trouve
rien dans 97 impossible d'afficher comme avec 2000
barre d'outils
fenêtre explorateur de projet
fenêtre proriétés
et à droite le Code

Isa
Le #6330441
Bonjour Thierry

Génial !! Ton code, il fonctionne à merveille sur Access 97

Pas eu le courage de travailler hier soir (fatiguée de mon week-end =>
j'a passé mon week-end sur Access)

Bon, petite question :
jJe pense lors de la création d'une nouvelle fiche dans la table
d'origine, insérer un bouton qui valide l'enregistrement et effectue
le code (ajout des enregistrements dans la table suivi)
N'y a t-il pas un risque de doublons ? ce qui bien sûr ne doit surtout
pas se faire; en principe non ?
mais supposons, une erreur lors de la prise en charge dans la table
d'origine, l'utilisateur va aller modifier les dates de début ou de
fin par exemple, puis en cliquant sur le bouton pour valider, je
crains double ajout dans la table suivi


Merci encore
Isa
Le #6330411
On 7 nov, 09:44, Isa
Bonjour Thierry

Génial !! Ton code, il fonctionne à merveille sur Access 97

Pas eu le courage de travailler hier soir (fatiguée de mon week-end =>
j'a passé mon week-end sur Access)

Bon, petite question :
jJe pense lors de la création d'une nouvelle fiche dans la table
d'origine, insérer un bouton qui valide l'enregistrement et effectue
le code (ajout des enregistrements dans la table suivi)
N'y a t-il pas un risque de doublons ? ce qui bien sûr ne doit surtout
pas se faire; en principe non ?
mais supposons, une erreur lors de la prise en charge dans la table
d'origine, l'utilisateur va aller modifier les dates de début ou de
fin par exemple, puis en cliquant sur le bouton pour valider, je
crains double ajout dans la table suivi

Merci encore


Bon, je viens de tester en ajoutant un nouvel enregistrement dans la
table d'origine, puis en utilisant le code, il a à nouveau créer des
enregistrements dans la table suivi pour tous les enregistrements de
la table d'origine (donc tout en double + les enregistrements corrects
pour le dernier enregistrement effectué dans la table d'origine), donc
ce n'est pas bon, il aurait dû comparer puis effectuer l'ajout
uniquement pour le nouvel enregistrement
Dommage

A moins qu'il y est une solution facile ;-)

Publicité
Poster une réponse
Anonyme