Bonjour,
Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
Set rs = Nothing
Set Db = Nothing
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
End If
------------------------------------------------
Merci d'avance.
Cordialement,
Ben.
Bonjour,
Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
Set rs = Nothing
Set Db = Nothing
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
End If
------------------------------------------------
Merci d'avance.
Cordialement,
Ben.
Bonjour,
Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
Set rs = Nothing
Set Db = Nothing
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
End If
------------------------------------------------
Merci d'avance.
Cordialement,
Ben.
Hello Ben !
Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
vider tes variables
rs.Close
set rs=Nothing
Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
début de corruption peut être corrigé en compactant la base
régulièrement.
Une corruption avancée peut éventuellement se résoudre en ouvrant une
base vierge et en y important tous les objets de la base existante.
En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :Bonjour,
Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
Set rs = Nothing
Set Db = Nothing
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
End If
------------------------------------------------
Merci d'avance.
Cordialement,
Ben.
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Hello Ben !
Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
vider tes variables
rs.Close
set rs=Nothing
Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
début de corruption peut être corrigé en compactant la base
régulièrement.
Une corruption avancée peut éventuellement se résoudre en ouvrant une
base vierge et en y important tous les objets de la base existante.
En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bonjour,
Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
Set rs = Nothing
Set Db = Nothing
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
End If
------------------------------------------------
Merci d'avance.
Cordialement,
Ben.
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Hello Ben !
Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
vider tes variables
rs.Close
set rs=Nothing
Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
début de corruption peut être corrigé en compactant la base
régulièrement.
Une corruption avancée peut éventuellement se résoudre en ouvrant une
base vierge et en y important tous les objets de la base existante.
En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :Bonjour,
Sur une action qui se passe bien lorsque je la répète moins de 100 fois,
lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un message
"Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
opération..."
Lorsque je quitte, ACCESS me demande si je veux enregistrer mon formulaire
comme si j'y avait effectué des modification et par la suite, plus moyen de
revenir sur ce formulaire. Il ne fonctionne plus ("Opération annulée"), je
n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
Pourriez-vous m'aider s'il vous plait ?
Voici le code de cette action :
---------------------------------------------------------------------
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
Set rs = Nothing
Set Db = Nothing
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à
payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
End If
------------------------------------------------
Merci d'avance.
Cordialement,
Ben.
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Merci beaucoup pour votre réponse.
Merci beaucoup pour votre réponse.
Merci beaucoup pour votre réponse.
Bonjour.
une simple remarque mais utile:
Au lieu d'utiliser la méthode Close, on peut affecter la valeur Nothing à la
variable objet (Set db = Nothing, Set rs = Nothing par exemple).
en ce qui concerne l'endroit où il faut placer les set...nothing, je dirais
qu'il faut les exécuter dès qu'on n'utilise plus l'objet.
j'ai lu ton message mais je ne vois pas où se situe la boucle pour faire 200
passages.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413
"Ben" a écrit dans le message de news:
| Merci beaucoup pour votre réponse.
| Juste une petite précision encore s'il vous plait, afin de m'éviter des
| phases de test fastidieuses : où dois-je placer "rs.Close" & "set
rs=Nothing"
| dans mon code ?
|
| Cordialement,
| Ben.
|
|
|
| > Hello Ben !
| >
| > Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
| > vider tes variables
| >
| > rs.Close
| > set rs=Nothing
| >
| > Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
| > début de corruption peut être corrigé en compactant la base
| > régulièrement.
| > Une corruption avancée peut éventuellement se résoudre en ouvrant une
| > base vierge et en y important tous les objets de la base existante.
| >
| >
| > En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
| > tâche de taper sur ton clavier :
| > > Bonjour,
| > > Sur une action qui se passe bien lorsque je la répète moins de 100
fois,
| > > lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un
message
| > > "Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
| > > opération..."
| > > Lorsque je quitte, ACCESS me demande si je veux enregistrer mon
formulaire
| > > comme si j'y avait effectué des modification et par la suite, plus
moyen de
| > > revenir sur ce formulaire. Il ne fonctionne plus ("Opération
annulée"), je
| > > n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
| > > Pourriez-vous m'aider s'il vous plait ?
| > > Voici le code de cette action :
| > > ---------------------------------------------------------------------
| > > If Me.Périodedébut > Me.PériodeFin Then
| > > Msgbox "Périodes de début et de fin non chronologiques." & Chr(10)
&
| > > Chr(13), vbExclamation, "ATTENTION !"
| > > Else
| > > Commande171.SetFocus
| > > Me!DateFacture = Date
| > > Me!Type = "loyer"
| > > Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
| > > Me.Texte156 = Me.RéfDepRec
| > >
| > > DoCmd.GoToRecord , , acNewRec
| > >
| > > ' enregistrement des données dans la table "montants"
| > > Dim Db As DAO.Database
| > > Dim rs As DAO.Recordset
| > > Set Db = CurrentDb
| > > Set rs = Db.OpenRecordset("select * from montants")
| > >
| > > If Texte146 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte146
| > > rs("réfposte") = 1
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte148 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte148
| > > rs("réfposte") = 5
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte150 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte150
| > > rs("réfposte") = 6
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte152 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte152
| > > rs("réfposte") = 7
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > Set rs = Nothing
| > > Set Db = Nothing
| > >
| > > If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
| > > If Msgbox("Vous devriez envoyer par courrier cet avis
d'échéance à
| > > payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
| > > Dim stDocName As String
| > > stDocName = "appelloyer"
| > > DoCmd.OpenReport stDocName, acNormal
| > > DoCmd.Close acForm, "appelloyers"
| > > Else
| > > DoCmd.Close acForm, "appelloyers"
| > > End If
| > > Else
| > > DoCmd.Close acForm, "appelloyers"
| > > End If
| > >
| > > Dim maRequete As String
| > > Dim monForm As String
| > > maRequete = "appel loyers loyers actuels2"
| > > monForm = "formalerteappel"
| > > Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
| > >
| > > If rs.RecordCount > 0 Then
| > > DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
| > > DoCmd.GoToRecord acForm, "appelloyers", acNewRec
| > > End If
| > >
| > > End If
| > > ------------------------------------------------
| > >
| > > Merci d'avance.
| > >
| > > Cordialement,
| > > Ben.
| >
| > --
| > Cordialement,
| > Ze Titi
| >
| > Tout pour réussir avec Access :
| > http://www.mpfa.info
| >
| >
| >
Bonjour.
une simple remarque mais utile:
Au lieu d'utiliser la méthode Close, on peut affecter la valeur Nothing à la
variable objet (Set db = Nothing, Set rs = Nothing par exemple).
en ce qui concerne l'endroit où il faut placer les set...nothing, je dirais
qu'il faut les exécuter dès qu'on n'utilise plus l'objet.
j'ai lu ton message mais je ne vois pas où se situe la boucle pour faire 200
passages.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413
"Ben" <Ben@discussions.microsoft.com> a écrit dans le message de news:
E560AAE3-2218-41F3-B045-1BB84F6940EC@microsoft.com...
| Merci beaucoup pour votre réponse.
| Juste une petite précision encore s'il vous plait, afin de m'éviter des
| phases de test fastidieuses : où dois-je placer "rs.Close" & "set
rs=Nothing"
| dans mon code ?
|
| Cordialement,
| Ben.
|
|
|
| > Hello Ben !
| >
| > Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
| > vider tes variables
| >
| > rs.Close
| > set rs=Nothing
| >
| > Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
| > début de corruption peut être corrigé en compactant la base
| > régulièrement.
| > Une corruption avancée peut éventuellement se résoudre en ouvrant une
| > base vierge et en y important tous les objets de la base existante.
| >
| >
| > En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
| > tâche de taper sur ton clavier :
| > > Bonjour,
| > > Sur une action qui se passe bien lorsque je la répète moins de 100
fois,
| > > lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un
message
| > > "Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
| > > opération..."
| > > Lorsque je quitte, ACCESS me demande si je veux enregistrer mon
formulaire
| > > comme si j'y avait effectué des modification et par la suite, plus
moyen de
| > > revenir sur ce formulaire. Il ne fonctionne plus ("Opération
annulée"), je
| > > n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
| > > Pourriez-vous m'aider s'il vous plait ?
| > > Voici le code de cette action :
| > > ---------------------------------------------------------------------
| > > If Me.Périodedébut > Me.PériodeFin Then
| > > Msgbox "Périodes de début et de fin non chronologiques." & Chr(10)
&
| > > Chr(13), vbExclamation, "ATTENTION !"
| > > Else
| > > Commande171.SetFocus
| > > Me!DateFacture = Date
| > > Me!Type = "loyer"
| > > Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
| > > Me.Texte156 = Me.RéfDepRec
| > >
| > > DoCmd.GoToRecord , , acNewRec
| > >
| > > ' enregistrement des données dans la table "montants"
| > > Dim Db As DAO.Database
| > > Dim rs As DAO.Recordset
| > > Set Db = CurrentDb
| > > Set rs = Db.OpenRecordset("select * from montants")
| > >
| > > If Texte146 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte146
| > > rs("réfposte") = 1
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte148 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte148
| > > rs("réfposte") = 5
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte150 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte150
| > > rs("réfposte") = 6
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte152 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte152
| > > rs("réfposte") = 7
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > Set rs = Nothing
| > > Set Db = Nothing
| > >
| > > If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
| > > If Msgbox("Vous devriez envoyer par courrier cet avis
d'échéance à
| > > payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
| > > Dim stDocName As String
| > > stDocName = "appelloyer"
| > > DoCmd.OpenReport stDocName, acNormal
| > > DoCmd.Close acForm, "appelloyers"
| > > Else
| > > DoCmd.Close acForm, "appelloyers"
| > > End If
| > > Else
| > > DoCmd.Close acForm, "appelloyers"
| > > End If
| > >
| > > Dim maRequete As String
| > > Dim monForm As String
| > > maRequete = "appel loyers loyers actuels2"
| > > monForm = "formalerteappel"
| > > Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
| > >
| > > If rs.RecordCount > 0 Then
| > > DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
| > > DoCmd.GoToRecord acForm, "appelloyers", acNewRec
| > > End If
| > >
| > > End If
| > > ------------------------------------------------
| > >
| > > Merci d'avance.
| > >
| > > Cordialement,
| > > Ben.
| >
| > --
| > Cordialement,
| > Ze Titi
| >
| > Tout pour réussir avec Access :
| > http://www.mpfa.info
| >
| >
| >
Bonjour.
une simple remarque mais utile:
Au lieu d'utiliser la méthode Close, on peut affecter la valeur Nothing à la
variable objet (Set db = Nothing, Set rs = Nothing par exemple).
en ce qui concerne l'endroit où il faut placer les set...nothing, je dirais
qu'il faut les exécuter dès qu'on n'utilise plus l'objet.
j'ai lu ton message mais je ne vois pas où se situe la boucle pour faire 200
passages.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413
"Ben" a écrit dans le message de news:
| Merci beaucoup pour votre réponse.
| Juste une petite précision encore s'il vous plait, afin de m'éviter des
| phases de test fastidieuses : où dois-je placer "rs.Close" & "set
rs=Nothing"
| dans mon code ?
|
| Cordialement,
| Ben.
|
|
|
| > Hello Ben !
| >
| > Ne pas oublier de fermer tes recordset à la fin d'une procédure et de
| > vider tes variables
| >
| > rs.Close
| > set rs=Nothing
| >
| > Sans cela, ta base se corromp très vite (c'est ce qui t'arrive). Un
| > début de corruption peut être corrigé en compactant la base
| > régulièrement.
| > Une corruption avancée peut éventuellement se résoudre en ouvrant une
| > base vierge et en y important tous les objets de la base existante.
| >
| >
| > En ce jour mémorable du mercredi 02/05/2007, tu as entrepris la lourde
| > tâche de taper sur ton clavier :
| > > Bonjour,
| > > Sur une action qui se passe bien lorsque je la répète moins de 100
fois,
| > > lorsque que j'atteinds environ 120 à 130 répétition, j'obtiens un
message
| > > "Erreur d'execution '2004' : Mémoire insuffisante pour exécuter cette
| > > opération..."
| > > Lorsque je quitte, ACCESS me demande si je veux enregistrer mon
formulaire
| > > comme si j'y avait effectué des modification et par la suite, plus
moyen de
| > > revenir sur ce formulaire. Il ne fonctionne plus ("Opération
annulée"), je
| > > n'ai plus alors d'autre choix que d'utiliser une sauvegarde.
| > > Pourriez-vous m'aider s'il vous plait ?
| > > Voici le code de cette action :
| > > ---------------------------------------------------------------------
| > > If Me.Périodedébut > Me.PériodeFin Then
| > > Msgbox "Périodes de début et de fin non chronologiques." & Chr(10)
&
| > > Chr(13), vbExclamation, "ATTENTION !"
| > > Else
| > > Commande171.SetFocus
| > > Me!DateFacture = Date
| > > Me!Type = "loyer"
| > > Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
| > > Me.Texte156 = Me.RéfDepRec
| > >
| > > DoCmd.GoToRecord , , acNewRec
| > >
| > > ' enregistrement des données dans la table "montants"
| > > Dim Db As DAO.Database
| > > Dim rs As DAO.Recordset
| > > Set Db = CurrentDb
| > > Set rs = Db.OpenRecordset("select * from montants")
| > >
| > > If Texte146 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte146
| > > rs("réfposte") = 1
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte148 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte148
| > > rs("réfposte") = 5
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte150 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte150
| > > rs("réfposte") = 6
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > If Texte152 <> 0 Then
| > > rs.AddNew
| > > rs("montant") = Me.Texte152
| > > rs("réfposte") = 7
| > > rs("RéfDepRec") = Me.Texte156
| > > rs.Update
| > > End If
| > >
| > > Set rs = Nothing
| > > Set Db = Nothing
| > >
| > > If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
| > > If Msgbox("Vous devriez envoyer par courrier cet avis
d'échéance à
| > > payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
| > > Dim stDocName As String
| > > stDocName = "appelloyer"
| > > DoCmd.OpenReport stDocName, acNormal
| > > DoCmd.Close acForm, "appelloyers"
| > > Else
| > > DoCmd.Close acForm, "appelloyers"
| > > End If
| > > Else
| > > DoCmd.Close acForm, "appelloyers"
| > > End If
| > >
| > > Dim maRequete As String
| > > Dim monForm As String
| > > maRequete = "appel loyers loyers actuels2"
| > > monForm = "formalerteappel"
| > > Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
| > >
| > > If rs.RecordCount > 0 Then
| > > DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
| > > DoCmd.GoToRecord acForm, "appelloyers", acNewRec
| > > End If
| > >
| > > End If
| > > ------------------------------------------------
| > >
| > > Merci d'avance.
| > >
| > > Cordialement,
| > > Ben.
| >
| > --
| > Cordialement,
| > Ze Titi
| >
| > Tout pour réussir avec Access :
| > http://www.mpfa.info
| >
| >
| >
Merci beaucoup pour votre réponse.
De rien, c'est fait pour ça. Par contre, un truc pour la convivialité, ça n'est pas une obligation mais c'est plus sympa: le tutoiement simplifie les relations...
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
rs.Close
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
rs.Close
Set rs=Nothing
Set db=Nothing
End If
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Merci beaucoup pour votre réponse.
De rien, c'est fait pour ça. Par contre, un truc pour la convivialité, ça n'est pas une obligation mais c'est plus sympa: le tutoiement simplifie les relations...
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
rs.Close
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
rs.Close
Set rs=Nothing
Set db=Nothing
End If
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Merci beaucoup pour votre réponse.
De rien, c'est fait pour ça. Par contre, un truc pour la convivialité, ça n'est pas une obligation mais c'est plus sympa: le tutoiement simplifie les relations...
If Me.Périodedébut > Me.PériodeFin Then
Msgbox "Périodes de début et de fin non chronologiques." & Chr(10) &
Chr(13), vbExclamation, "ATTENTION !"
Else
Commande171.SetFocus
Me!DateFacture = Date
Me!Type = "loyer"
Me![alerteappelBail].Form![Dernierloyerappelé] = Me!PériodeFin
Me.Texte156 = Me.RéfDepRec
DoCmd.GoToRecord , , acNewRec
' enregistrement des données dans la table "montants"
Dim Db As DAO.Database
Dim rs As DAO.Recordset
Set Db = CurrentDb
Set rs = Db.OpenRecordset("select * from montants")
If Texte146 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte146
rs("réfposte") = 1
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte148 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte148
rs("réfposte") = 5
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte150 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte150
rs("réfposte") = 6
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
If Texte152 <> 0 Then
rs.AddNew
rs("montant") = Me.Texte152
rs("réfposte") = 7
rs("RéfDepRec") = Me.Texte156
rs.Update
End If
rs.Close
If Me![alerteappelloyersactuels].Form![Appelloyer] = -1 Then
If Msgbox("Vous devriez envoyer par courrier cet avis d'échéance à payer. Voulez-vous l'imprimer ?", vbYesNo, "RAPPEL !") = vbYes Then
Dim stDocName As String
stDocName = "appelloyer"
DoCmd.OpenReport stDocName, acNormal
DoCmd.Close acForm, "appelloyers"
Else
DoCmd.Close acForm, "appelloyers"
End If
Else
DoCmd.Close acForm, "appelloyers"
End If
Dim maRequete As String
Dim monForm As String
maRequete = "appel loyers loyers actuels2"
monForm = "formalerteappel"
Set rs = CurrentDb.OpenRecordset(maRequete, dbOpenDynaset)
If rs.RecordCount > 0 Then
DoCmd.OpenForm "appelloyers", acNormal, "", "", , acNormal
DoCmd.GoToRecord acForm, "appelloyers", acNewRec
End If
rs.Close
Set rs=Nothing
Set db=Nothing
End If
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info