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=E9er une requ=EAte ajout qui viendrait alimenter la
table "suivi" avec les =E9l=E9ments suivants
idtoto 01/03/2006 (date + 1 an)
idtoto 01/03/2007 (date + 2an)
sachant que pour toto le contrat dure 3 ans donc 2 r=E9visions =E0 faire =
=E0
la date anniversaire
sachant que pour tata le contrat dure 9 ans donc 8 r=E9visions =E0 faire =
=E0
la date anniversaire
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",rs!datedebut,rs!datefin)-1 If DCount("*","Suivi","idnom='" & rs!idnom & "' AND Daterevision=#" & Format(DateAdd("yyyy",i,rs!datedebut),"mm/dd/yyyy") & "#")=0 Then DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" & rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
En ce jour mémorable du mercredi 07/11/2007, tu as émis l'idée suivante:
On 7 nov, 09:44, Isa wrote:
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 ;-)
-- Cordialement, Thierry
Tout pour réussir avec Access : http://www.mpfa.info
Bonjour Isa !
A tester:
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",rs!datedebut,rs!datefin)-1
If DCount("*","Suivi","idnom='" & rs!idnom & "' AND Daterevision=#" & Format(DateAdd("yyyy",i,rs!datedebut),"mm/dd/yyyy") & "#")=0 Then
DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" & rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')"
Else
Debug.Print "Enregistrement déjà ajouté"
End If
Next
rs.MoveNext
Wend
rs.Close
En ce jour mémorable du mercredi 07/11/2007, tu as émis l'idée suivante:
On 7 nov, 09:44, Isa <isa.enleverc...@gmail.com> wrote:
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 ;-)
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
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",rs!datedebut,rs!datefin)-1 If DCount("*","Suivi","idnom='" & rs!idnom & "' AND Daterevision=#" & Format(DateAdd("yyyy",i,rs!datedebut),"mm/dd/yyyy") & "#")=0 Then DoCmd.RunSQL "INSERT INTO suivi(idnom,daterevision) VALUES('" & rs!idnom & "','" & DateAdd("yyyy",i,rs!datedebut) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
En ce jour mémorable du mercredi 07/11/2007, tu as émis l'idée suivante:
On 7 nov, 09:44, Isa wrote:
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 ;-)
-- Cordialement, Thierry
Tout pour réussir avec Access : http://www.mpfa.info
Isa
Thierry,
C'est bien dommage cela ne fonctionne pas
Type de données incompatibles If DCount("*", "Table1", "idbail='" & rs!Numéro & "' AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then
J'ai remplacé le code par mes noms de champs, j'ai peut-être glissé Soit table LOCATIONS avec les champs Numéro DU AU ...
Soit Table1 avec les champs Idbail DateRevision ...
Dim rs As Recordset, i As Integer Set rs = CurrentDb.OpenRecordset("LOCATIONS") rs.MoveLast rs.MoveFirst While Not rs.EOF For i = 1 To DateDiff("yyyy", rs!DU, rs!AU) - 1 If DCount("*", "Table1", "idbail='" & rs!Numéro & "' AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, rs!DU) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
Thierry,
C'est bien dommage cela ne fonctionne pas
Type de données incompatibles
If DCount("*", "Table1", "idbail='" & rs!Numéro & "' AND
DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") &
"#") = 0 Then
J'ai remplacé le code par mes noms de champs, j'ai peut-être glissé
Soit table LOCATIONS avec les champs
Numéro
DU
AU
...
Soit Table1 avec les champs
Idbail
DateRevision
...
Dim rs As Recordset, i As Integer
Set rs = CurrentDb.OpenRecordset("LOCATIONS")
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
For i = 1 To DateDiff("yyyy", rs!DU, rs!AU) - 1
If DCount("*", "Table1", "idbail='" & rs!Numéro & "' AND
DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") &
"#") = 0 Then
DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" &
rs!Numéro & "','" & DateAdd("yyyy", i, rs!DU) & "')"
Else
Debug.Print "Enregistrement déjà ajouté"
End If
Next
rs.MoveNext
Wend
rs.Close
Type de données incompatibles If DCount("*", "Table1", "idbail='" & rs!Numéro & "' AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then
J'ai remplacé le code par mes noms de champs, j'ai peut-être glissé Soit table LOCATIONS avec les champs Numéro DU AU ...
Soit Table1 avec les champs Idbail DateRevision ...
Dim rs As Recordset, i As Integer Set rs = CurrentDb.OpenRecordset("LOCATIONS") rs.MoveLast rs.MoveFirst While Not rs.EOF For i = 1 To DateDiff("yyyy", rs!DU, rs!AU) - 1 If DCount("*", "Table1", "idbail='" & rs!Numéro & "' AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, rs!DU) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
Thierry (ze Titi)
Peut-être mieux comme ça ?
Dim rs As Recordset, i As Integer Set rs = CurrentDb.OpenRecordset("LOCATIONS") rs.MoveLast rs.MoveFirst While Not rs.EOF For i = 1 To DateDiff("yyyy", rs!DU, rs!AU) - 1 If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, rs!DU) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
-- Cordialement, Thierry
Tout pour réussir avec Access : http://www.mpfa.info
Peut-être mieux comme ça ?
Dim rs As Recordset, i As Integer
Set rs = CurrentDb.OpenRecordset("LOCATIONS")
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
For i = 1 To DateDiff("yyyy", rs!DU, rs!AU) - 1
If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then
DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, rs!DU) & "')"
Else
Debug.Print "Enregistrement déjà ajouté"
End If
Next
rs.MoveNext
Wend
rs.Close
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Dim rs As Recordset, i As Integer Set rs = CurrentDb.OpenRecordset("LOCATIONS") rs.MoveLast rs.MoveFirst While Not rs.EOF For i = 1 To DateDiff("yyyy", rs!DU, rs!AU) - 1 If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND DateRevision=#" & Format(DateAdd("yyyy", i, rs!DU), "mm/dd/yyyy") & "#") = 0 Then DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, rs!DU) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
-- Cordialement, Thierry
Tout pour réussir avec Access : http://www.mpfa.info
Isa
On 7 nov, 11:25, Thierry (ze Titi) wrote:
Peut-être mieux comme ça ?
Tout à fait
Par contre, j'ai voulu tester pour voir le message "Enregistrement déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Maintenant, il va falloir que je regarde à quel endroit placer ce code J'avais crée un bouton Valider avec la procédure sur clic, lors de la saisie d'un nouveau bail mais le code n'est pas pris en charge, je dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur le bouton Valider pour que le code fonctionne et que les données alimentent ma table1
Et dire que les utilisateurs n'imaginent pas le temps que l'on peut passer pour créer un formulaire qui leur facilite le travail !
On 7 nov, 11:25, Thierry (ze Titi) <ze_titi_enlever-c...@tiscali.fr>
wrote:
Peut-être mieux comme ça ?
Tout à fait
Par contre, j'ai voulu tester pour voir le message "Enregistrement
déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Maintenant, il va falloir que je regarde à quel endroit placer ce code
J'avais crée un bouton Valider avec la procédure sur clic, lors de la
saisie d'un nouveau bail mais le code n'est pas pris en charge, je
dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur
le bouton Valider pour que le code fonctionne et que les données
alimentent ma table1
Et dire que les utilisateurs n'imaginent pas le temps que l'on peut
passer pour créer un formulaire qui leur facilite le travail !
Par contre, j'ai voulu tester pour voir le message "Enregistrement déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Maintenant, il va falloir que je regarde à quel endroit placer ce code J'avais crée un bouton Valider avec la procédure sur clic, lors de la saisie d'un nouveau bail mais le code n'est pas pris en charge, je dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur le bouton Valider pour que le code fonctionne et que les données alimentent ma table1
Et dire que les utilisateurs n'imaginent pas le temps que l'on peut passer pour créer un formulaire qui leur facilite le travail !
Thierry (ze Titi)
Par contre, j'ai voulu tester pour voir le message "Enregistrement déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas Ca s'affiche dans le fenêtre de debogage dans l'éditeur VBA. Tu peux
éventuellement mettre un MsgBox à la place du Debug.Print mais il te faudra gérer ça correctement sinon tu n'as pas fini de cliquer sur OK pour fermer la boîte de dialogue... ;-)
Maintenant, il va falloir que je regarde à quel endroit placer ce code J'avais crée un bouton Valider avec la procédure sur clic, lors de la saisie d'un nouveau bail mais le code n'est pas pris en charge, je dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur le bouton Valider pour que le code fonctionne et que les données alimentent ma table1 Me.Requery
avant le code pourrait peut-être empêcher ce désagrément.
-- Cordialement, Thierry
Tout pour réussir avec Access : http://www.mpfa.info
Par contre, j'ai voulu tester pour voir le message "Enregistrement
déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Ca s'affiche dans le fenêtre de debogage dans l'éditeur VBA. Tu peux
éventuellement mettre un MsgBox à la place du Debug.Print mais il te
faudra gérer ça correctement sinon tu n'as pas fini de cliquer sur OK
pour fermer la boîte de dialogue... ;-)
Maintenant, il va falloir que je regarde à quel endroit placer ce code
J'avais crée un bouton Valider avec la procédure sur clic, lors de la
saisie d'un nouveau bail mais le code n'est pas pris en charge, je
dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur
le bouton Valider pour que le code fonctionne et que les données
alimentent ma table1
Me.Requery
avant le code pourrait peut-être empêcher ce désagrément.
--
Cordialement,
Thierry
Tout pour réussir avec Access :
http://www.mpfa.info
Par contre, j'ai voulu tester pour voir le message "Enregistrement déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas Ca s'affiche dans le fenêtre de debogage dans l'éditeur VBA. Tu peux
éventuellement mettre un MsgBox à la place du Debug.Print mais il te faudra gérer ça correctement sinon tu n'as pas fini de cliquer sur OK pour fermer la boîte de dialogue... ;-)
Maintenant, il va falloir que je regarde à quel endroit placer ce code J'avais crée un bouton Valider avec la procédure sur clic, lors de la saisie d'un nouveau bail mais le code n'est pas pris en charge, je dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur le bouton Valider pour que le code fonctionne et que les données alimentent ma table1 Me.Requery
avant le code pourrait peut-être empêcher ce désagrément.
-- Cordialement, Thierry
Tout pour réussir avec Access : http://www.mpfa.info
Isa
On 7 nov, 12:06, Isa wrote:
On 7 nov, 11:25, Thierry (ze Titi) wrote:
Peut-être mieux comme ça ?
Tout à fait
Par contre, j'ai voulu tester pour voir le message "Enregistrement déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Maintenant, il va falloir que je regarde à quel endroit placer ce code J'avais crée un bouton Valider avec la procédure sur clic, lors de la saisie d'un nouveau bail mais le code n'est pas pris en charge, je dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur le bouton Valider pour que le code fonctionne et que les données alimentent ma table1
Et dire que les utilisateurs n'imaginent pas le temps que l'on peut passer pour créer un formulaire qui leur facilite le travail !
J'ai trouvé toute seule comme une grande !
Il suffisait d'ajouter DoCmd.RunCommand acCmdSaveRecord
Hein oui ?
On 7 nov, 12:06, Isa <isa.enleverc...@gmail.com> wrote:
On 7 nov, 11:25, Thierry (ze Titi) <ze_titi_enlever-c...@tiscali.fr>
wrote:
Peut-être mieux comme ça ?
Tout à fait
Par contre, j'ai voulu tester pour voir le message "Enregistrement
déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Maintenant, il va falloir que je regarde à quel endroit placer ce code
J'avais crée un bouton Valider avec la procédure sur clic, lors de la
saisie d'un nouveau bail mais le code n'est pas pris en charge, je
dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur
le bouton Valider pour que le code fonctionne et que les données
alimentent ma table1
Et dire que les utilisateurs n'imaginent pas le temps que l'on peut
passer pour créer un formulaire qui leur facilite le travail !
J'ai trouvé toute seule comme une grande !
Il suffisait d'ajouter
DoCmd.RunCommand acCmdSaveRecord
Par contre, j'ai voulu tester pour voir le message "Enregistrement déjà ajouté" pas trouvé d'exemple ou le message ne s'affiche pas
Maintenant, il va falloir que je regarde à quel endroit placer ce code J'avais crée un bouton Valider avec la procédure sur clic, lors de la saisie d'un nouveau bail mais le code n'est pas pris en charge, je dois fermer le formulaire, l'ouvrir à nouveau, appuyer à nouveau sur le bouton Valider pour que le code fonctionne et que les données alimentent ma table1
Et dire que les utilisateurs n'imaginent pas le temps que l'on peut passer pour créer un formulaire qui leur facilite le travail !
J'ai trouvé toute seule comme une grande !
Il suffisait d'ajouter DoCmd.RunCommand acCmdSaveRecord