Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ?
normalement il devrait comparer
le champ idbail de la table Table1
avec
le champ Numéro de la table Locations
et si les données du champ idbail avec les données du champ DateRevision
existe déjà, ne pas le créer à nouveau
Private Sub Commande101_Click()
DoCmd.RunCommand acCmdSaveRecord
Dim rs As Recordset, i As Integer, uDateRevision As Date
Set rs = CurrentDb.OpenRecordset("LOCATIONS")
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy",
-1, rs!DATE_REVISION))
For i = 1 To DateDiff("yyyy", uDateRevision, rs!AU) - 1
If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND
DATE_REVISION=#" & Format(DateAdd("yyyy", i, uDateRevision), "mm/dd/
yyyy") & "#") = 0 Then
DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('"
& rs!Numéro & "','" & DateAdd("yyyy", i, uDateRevision) & "')"
Else
Debug.Print "Enregistrement déjà ajouté"
End If
Next
rs.MoveNext
Wend
rs.Close
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
3stone
Salut Isa...belle ;-)
"Isabelle ex Isa ;-)" | Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ? | | normalement il devrait comparer | le champ idbail de la table Table1 | avec | le champ Numéro de la table Locations | et si les données du champ idbail avec les données du champ DateRevision | existe déjà, ne pas le créer à nouveau | | | Private Sub Commande101_Click() | | DoCmd.RunCommand acCmdSaveRecord | | | Dim rs As Recordset, i As Integer, uDateRevision As Date | Set rs = CurrentDb.OpenRecordset("LOCATIONS")
| rs.MoveLast => Pourquoi parcourir le recodset ? | rs.MoveFirst => En plus, si vide tu obtiens une jolie erreur ;-) => Donc, tu supprimes ces 2 lignes inutiles !
| While Not rs.EOF | uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION))
"Isabelle ex Isa ;-)"
| Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ?
|
| normalement il devrait comparer
| le champ idbail de la table Table1
| avec
| le champ Numéro de la table Locations
| et si les données du champ idbail avec les données du champ DateRevision
| existe déjà, ne pas le créer à nouveau
|
|
| Private Sub Commande101_Click()
|
| DoCmd.RunCommand acCmdSaveRecord
|
|
| Dim rs As Recordset, i As Integer, uDateRevision As Date
| Set rs = CurrentDb.OpenRecordset("LOCATIONS")
| rs.MoveLast => Pourquoi parcourir le recodset ?
| rs.MoveFirst => En plus, si vide tu obtiens une jolie erreur ;-)
=> Donc, tu supprimes ces 2 lignes inutiles !
| While Not rs.EOF
| uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION))
"Isabelle ex Isa ;-)" | Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ? | | normalement il devrait comparer | le champ idbail de la table Table1 | avec | le champ Numéro de la table Locations | et si les données du champ idbail avec les données du champ DateRevision | existe déjà, ne pas le créer à nouveau | | | Private Sub Commande101_Click() | | DoCmd.RunCommand acCmdSaveRecord | | | Dim rs As Recordset, i As Integer, uDateRevision As Date | Set rs = CurrentDb.OpenRecordset("LOCATIONS")
| rs.MoveLast => Pourquoi parcourir le recodset ? | rs.MoveFirst => En plus, si vide tu obtiens une jolie erreur ;-) => Donc, tu supprimes ces 2 lignes inutiles !
| While Not rs.EOF | uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION))
"3stone" [...] || While Not rs.EOF || uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION)) | | => ton code ne compile pas !!
"3stone"
[...]
|| While Not rs.EOF
|| uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION))
|
| => ton code ne compile pas !!
"3stone" [...] || While Not rs.EOF || uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION)) | | => ton code ne compile pas !!
Je prends en route et j'ai survolé les longs fils de discussions donc ...
Si dans Table1 le champ se nomme DateRevision alors dans le Dcount il y a une erreur car tu utilises le champ nommé Date_Revision en critère sur la table Table1. D'autre part, dans ta requête d'ajout tu transformes des données de type numérique et date en Texte car tu entoures les valeurs par des '
De plus, pour éviter les messages, tu peux remplacer le DoCmd.RunSQL par un CurrentDb.Execute ou alors mettre au debut les warnings à False puis en fin de procédure les remettre à True
Essaies ceci : Dim rs As DAO.Recordset, i As Integer, uDateRevision As Date Set rs = CurrentDb.OpenRecordset("LOCATIONS") While Not rs.EOF uDateRevision = IIf(IsNull(rs!date_revision), rs!DU, _ DateAdd("yyyy", -1, rs!date_revision)) For i = 1 To DateDiff("yyyy", uDateRevision, rs!Au) - 1 If DCount("*", "Table1", "idbail=" & rs!Numéro & _ " AND DATEREVISION=#" & _ Format(DateAdd("yyyy", i, uDateRevision), _ "mm/dd/yyyy") & "#") = 0 Then CurrentDb.Execute "INSERT INTO Table1(Idbail,DateRevision) VALUES(" & _ rs!Numéro & "," & _ Format(DateAdd("yyyy", i, uDateRevision), _ "#mm/dd/yyyy#") & ")" 'Else 'Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
Telle que décrite, ta procédure crée toutes les dates de révision des baux et non pas seulement pour le nouveau bail créé mais toutefois le test sur le DCount devrait empêcher d'avoir duplication des dates de révision déjà existantes.
Si ça peut faire avancer le schmilblic ;-) ...
Bonsoir
Qui peut m'éclairer ?
Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ?
normalement il devrait comparer le champ idbail de la table Table1 avec le champ Numéro de la table Locations et si les données du champ idbail avec les données du champ DateRevision existe déjà, ne pas le créer à nouveau
Private Sub Commande101_Click()
DoCmd.RunCommand acCmdSaveRecord
Dim rs As Recordset, i As Integer, uDateRevision As Date Set rs = CurrentDb.OpenRecordset("LOCATIONS") rs.MoveLast rs.MoveFirst While Not rs.EOF uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION)) For i = 1 To DateDiff("yyyy", uDateRevision, rs!AU) - 1 If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND DATE_REVISION=#" & Format(DateAdd("yyyy", i, uDateRevision), "mm/dd/ yyyy") & "#") = 0 Then DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, uDateRevision) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
End Sub
Merci d'avance
Isabelle ex Isa ;-) qui commence à fatiguer
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonsoir ou Bonjour ex Isa, ;-)
Je prends en route et j'ai survolé les longs fils de discussions donc ...
Si dans Table1 le champ se nomme DateRevision alors dans le Dcount il y
a une erreur car tu utilises le champ nommé Date_Revision en critère sur
la table Table1. D'autre part, dans ta requête d'ajout tu transformes
des données de type numérique et date en Texte car tu entoures les
valeurs par des '
De plus, pour éviter les messages, tu peux remplacer le DoCmd.RunSQL par
un CurrentDb.Execute ou alors mettre au debut les warnings à False puis
en fin de procédure les remettre à True
Essaies ceci :
Dim rs As DAO.Recordset, i As Integer, uDateRevision As Date
Set rs = CurrentDb.OpenRecordset("LOCATIONS")
While Not rs.EOF
uDateRevision = IIf(IsNull(rs!date_revision), rs!DU, _
DateAdd("yyyy", -1, rs!date_revision))
For i = 1 To DateDiff("yyyy", uDateRevision, rs!Au) - 1
If DCount("*", "Table1", "idbail=" & rs!Numéro & _
" AND DATEREVISION=#" & _
Format(DateAdd("yyyy", i, uDateRevision), _
"mm/dd/yyyy") & "#") = 0 Then
CurrentDb.Execute "INSERT INTO Table1(Idbail,DateRevision) VALUES(" & _
rs!Numéro & "," & _
Format(DateAdd("yyyy", i, uDateRevision), _
"#mm/dd/yyyy#") & ")"
'Else
'Debug.Print "Enregistrement déjà ajouté"
End If
Next
rs.MoveNext
Wend
rs.Close
Telle que décrite, ta procédure crée toutes les dates de révision des
baux et non pas seulement pour le nouveau bail créé mais toutefois le
test sur le DCount devrait empêcher d'avoir duplication des dates de
révision déjà existantes.
Si ça peut faire avancer le schmilblic ;-) ...
Bonsoir
Qui peut m'éclairer ?
Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ?
normalement il devrait comparer
le champ idbail de la table Table1
avec
le champ Numéro de la table Locations
et si les données du champ idbail avec les données du champ DateRevision
existe déjà, ne pas le créer à nouveau
Private Sub Commande101_Click()
DoCmd.RunCommand acCmdSaveRecord
Dim rs As Recordset, i As Integer, uDateRevision As Date
Set rs = CurrentDb.OpenRecordset("LOCATIONS")
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy",
-1, rs!DATE_REVISION))
For i = 1 To DateDiff("yyyy", uDateRevision, rs!AU) - 1
If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND
DATE_REVISION=#" & Format(DateAdd("yyyy", i, uDateRevision), "mm/dd/
yyyy") & "#") = 0 Then
DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('"
& rs!Numéro & "','" & DateAdd("yyyy", i, uDateRevision) & "')"
Else
Debug.Print "Enregistrement déjà ajouté"
End If
Next
rs.MoveNext
Wend
rs.Close
End Sub
Merci d'avance
Isabelle ex Isa ;-) qui commence à fatiguer
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je prends en route et j'ai survolé les longs fils de discussions donc ...
Si dans Table1 le champ se nomme DateRevision alors dans le Dcount il y a une erreur car tu utilises le champ nommé Date_Revision en critère sur la table Table1. D'autre part, dans ta requête d'ajout tu transformes des données de type numérique et date en Texte car tu entoures les valeurs par des '
De plus, pour éviter les messages, tu peux remplacer le DoCmd.RunSQL par un CurrentDb.Execute ou alors mettre au debut les warnings à False puis en fin de procédure les remettre à True
Essaies ceci : Dim rs As DAO.Recordset, i As Integer, uDateRevision As Date Set rs = CurrentDb.OpenRecordset("LOCATIONS") While Not rs.EOF uDateRevision = IIf(IsNull(rs!date_revision), rs!DU, _ DateAdd("yyyy", -1, rs!date_revision)) For i = 1 To DateDiff("yyyy", uDateRevision, rs!Au) - 1 If DCount("*", "Table1", "idbail=" & rs!Numéro & _ " AND DATEREVISION=#" & _ Format(DateAdd("yyyy", i, uDateRevision), _ "mm/dd/yyyy") & "#") = 0 Then CurrentDb.Execute "INSERT INTO Table1(Idbail,DateRevision) VALUES(" & _ rs!Numéro & "," & _ Format(DateAdd("yyyy", i, uDateRevision), _ "#mm/dd/yyyy#") & ")" 'Else 'Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
Telle que décrite, ta procédure crée toutes les dates de révision des baux et non pas seulement pour le nouveau bail créé mais toutefois le test sur le DCount devrait empêcher d'avoir duplication des dates de révision déjà existantes.
Si ça peut faire avancer le schmilblic ;-) ...
Bonsoir
Qui peut m'éclairer ?
Pourquoi le code ci-dessous, ajoute à tort des enregistrements déjà crées ?
normalement il devrait comparer le champ idbail de la table Table1 avec le champ Numéro de la table Locations et si les données du champ idbail avec les données du champ DateRevision existe déjà, ne pas le créer à nouveau
Private Sub Commande101_Click()
DoCmd.RunCommand acCmdSaveRecord
Dim rs As Recordset, i As Integer, uDateRevision As Date Set rs = CurrentDb.OpenRecordset("LOCATIONS") rs.MoveLast rs.MoveFirst While Not rs.EOF uDateRevision = IIf(IsNull(rs!DATE_REVISION), rs!DU, DateAdd("yyyy", -1, rs!DATE_REVISION)) For i = 1 To DateDiff("yyyy", uDateRevision, rs!AU) - 1 If DCount("*", "Table1", "idbail=" & rs!Numéro & " AND DATE_REVISION=#" & Format(DateAdd("yyyy", i, uDateRevision), "mm/dd/ yyyy") & "#") = 0 Then DoCmd.RunSQL "INSERT INTO Table1(Idbail,DateRevision) VALUES('" & rs!Numéro & "','" & DateAdd("yyyy", i, uDateRevision) & "')" Else Debug.Print "Enregistrement déjà ajouté" End If Next rs.MoveNext Wend rs.Close
End Sub
Merci d'avance
Isabelle ex Isa ;-) qui commence à fatiguer
-- A+ Eric http://www.mpfa.info/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Isabelle ex Isa :-)
Bonjour Eric
Ouf ! cela fonctionne, je ne touche plus à rien
Merci
Mais il va falloir que j'aille aux cours du soir sur VBA
Isabelle ex Isa :-)
Bonjour Eric
Ouf ! cela fonctionne, je ne touche plus à rien
Merci
Mais il va falloir que j'aille aux cours du soir sur VBA