OVH Cloud OVH Cloud

Aucun enregistrement en cours !

12 réponses
Avatar
Joël GARBE
Bonsoir à Tous

Dans une procédure VBA qui permet de modifier le contenu d'un champ, suite à
l'ajout d'un enregistrement, cela fonctionne très bien lorsque la table
contient déjà des enregittrements, mais ne fonctionne plus si la table est
vide !

rstRP et rstP sont des clones de 2 tables

Lorsque la table rstRP est vide, le code plante à partir de la ligne
rstRP.Edit (Erreur 3021)

La commende AddNew n'est pas suffisante dans ce cas ?

rstRP.AddNew
rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Merci d'avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr

10 réponses

1 2
Avatar
Alberto
DoCmd.GoToRecord , , acNewRec


Bonsoir à Tous

Dans une procédure VBA qui permet de modifier le contenu d'un champ, suite à
l'ajout d'un enregistrement, cela fonctionne très bien lorsque la table
contient déjà des enregittrements, mais ne fonctionne plus si la table est
vide !

rstRP et rstP sont des clones de 2 tables

Lorsque la table rstRP est vide, le code plante à partir de la ligne
rstRP.Edit (Erreur 3021)

La commende AddNew n'est pas suffisante dans ce cas ?

rstRP.AddNew
rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Merci d'avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr





Avatar
Eric
Bonjour Joel,

Dans le cas d'un ajout tu ne dois pas mettre rstRP.Edit
car tu ne peux pas demander une autorisation de modification sur un
enregistrement inexistant.

Ok ?

A+
Eric



"Joël GARBE" écrivait
news:41a7927c$0$16366$:

Bonsoir à Tous

Dans une procédure VBA qui permet de modifier le contenu d'un champ,
suite à l'ajout d'un enregistrement, cela fonctionne très bien lorsque
la table contient déjà des enregittrements, mais ne fonctionne plus si
la table est vide !

rstRP et rstP sont des clones de 2 tables

Lorsque la table rstRP est vide, le code plante à partir de la ligne
rstRP.Edit (Erreur 3021)

La commende AddNew n'est pas suffisante dans ce cas ?

rstRP.AddNew
rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Merci d'avance...


Avatar
Joël GARBE
Tout d'abord merci pour la réponse ... que je ne comprends pas tout à fait :

cela fonctionne très bien lorsqu'il y a au moins un enregistrement dans la
table, mais lorsque j'efface tous les enregistrement de la table, alors,cela
plante...

et je pensais que la commande AddNew permettait de remédier au problème ?

Je réponds à Alberto par rapport à sa suggestion ...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Eric" a écrit dans le message de news:

Bonjour Joel,

Dans le cas d'un ajout tu ne dois pas mettre rstRP.Edit
car tu ne peux pas demander une autorisation de modification sur un
enregistrement inexistant.

Ok ?

A+
Eric



"Joël GARBE" écrivait
news:41a7927c$0$16366$:

Bonsoir à Tous

Dans une procédure VBA qui permet de modifier le contenu d'un champ,
suite à l'ajout d'un enregistrement, cela fonctionne très bien lorsque
la table contient déjà des enregittrements, mais ne fonctionne plus si
la table est vide !

rstRP et rstP sont des clones de 2 tables

Lorsque la table rstRP est vide, le code plante à partir de la ligne
rstRP.Edit (Erreur 3021)

La commende AddNew n'est pas suffisante dans ce cas ?

rstRP.AddNew
rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Merci d'avance...





Avatar
Joël GARBE
Merci Alberto !

J'ai modifié ma ligne d'instruction : (telle quelle, celle que tu propose ne
fonctionne pas non plus, et l'ai modifié

DoCmd.GoToRecord acDataTable, rstRP.Name, acNewRec

Mais il me dit que l'objet spécifié (le nom de ma table) n'est pas
ouvert...!!

Si tu pouvais me dire où se situe m nouvelle erreur ?

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Alberto" a écrit dans le message de
news:
DoCmd.GoToRecord , , acNewRec


Bonsoir à Tous

Dans une procédure VBA qui permet de modifier le contenu d'un champ,
suite à
l'ajout d'un enregistrement, cela fonctionne très bien lorsque la table
contient déjà des enregittrements, mais ne fonctionne plus si la table
est
vide !

rstRP et rstP sont des clones de 2 tables

Lorsque la table rstRP est vide, le code plante à partir de la ligne
rstRP.Edit (Erreur 3021)

La commende AddNew n'est pas suffisante dans ce cas ?

rstRP.AddNew
rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Merci d'avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr







Avatar
Joël GARBE
Re ;-)

c'est OK avec Docmd.OpenTable ....

Encore Merci...

Bonne soirée ;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joël GARBE" a écrit dans le message de news:
41a7994f$0$30423$
Merci Alberto !

J'ai modifié ma ligne d'instruction : (telle quelle, celle que tu propose
ne fonctionne pas non plus, et l'ai modifié

DoCmd.GoToRecord acDataTable, rstRP.Name, acNewRec

Mais il me dit que l'objet spécifié (le nom de ma table) n'est pas
ouvert...!!

Si tu pouvais me dire où se situe m nouvelle erreur ?

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Alberto" a écrit dans le message de
news:
DoCmd.GoToRecord , , acNewRec


Bonsoir à Tous

Dans une procédure VBA qui permet de modifier le contenu d'un champ,
suite à
l'ajout d'un enregistrement, cela fonctionne très bien lorsque la table
contient déjà des enregittrements, mais ne fonctionne plus si la table
est
vide !

rstRP et rstP sont des clones de 2 tables

Lorsque la table rstRP est vide, le code plante à partir de la ligne
rstRP.Edit (Erreur 3021)

La commende AddNew n'est pas suffisante dans ce cas ?

rstRP.AddNew
rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Merci d'avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr











Avatar
Eric
re Joel,

Si la table est vide :
rstRP.AddNew
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

si la table contient au moins 1 enregistrement, se positionner sur
l'enregistrement à modifier par les méthodes Find ou Seek puis

rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Je suppose que tu as mis
set rstRp=currentDb.Openrecordset("laTable")

Comme tu ne sais pas a priori si la table rstRP est vide ou non, tu
devrais utiliser les propriétés Eof ou Bof de rstRP pour savoir si tu
dois ajouter ou modifier


C'est plus clair ?

Eric


"Joël GARBE" écrivait
news:41a7986c$0$30429$:

Tout d'abord merci pour la réponse ... que je ne comprends pas tout à
fait :

cela fonctionne très bien lorsqu'il y a au moins un enregistrement
dans la table, mais lorsque j'efface tous les enregistrement de la
table, alors,cela plante...

et je pensais que la commande AddNew permettait de remédier au
problème ?

Je réponds à Alberto par rapport à sa suggestion ...



Avatar
Joël GARBE
Merci Erci,

ça commence à devenir plus clair...

En fait, javais mis, en début de procédure :

Set rstR = dbs.OpenRecordset("Liste Recensements", dbOpenDynaset)
Set rstRP = rstR.Clone

au final, la proposition d'Alberto semble fonctionner parfaitement, que la
table soit vide ou non !!!

Il me reste probablement à étudier de plus près tout ce qu'on peut faire
avec DoCmd... et la différence qu'il y a entre cette façon de procéder et la
précédente (celle que tu évoques et que j'avais commencer à employer)

Encore grand merci et bonne soirée...

Je serais heureux d'avoir des commentaires supplémentaires, pour mon
information


Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Eric" a écrit dans le message de news:

re Joel,

Si la table est vide :
rstRP.AddNew
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

si la table contient au moins 1 enregistrement, se positionner sur
l'enregistrement à modifier par les méthodes Find ou Seek puis

rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Je suppose que tu as mis
set rstRp=currentDb.Openrecordset("laTable")

Comme tu ne sais pas a priori si la table rstRP est vide ou non, tu
devrais utiliser les propriétés Eof ou Bof de rstRP pour savoir si tu
dois ajouter ou modifier


C'est plus clair ?

Eric


"Joël GARBE" écrivait
news:41a7986c$0$30429$:

Tout d'abord merci pour la réponse ... que je ne comprends pas tout à
fait :

cela fonctionne très bien lorsqu'il y a au moins un enregistrement
dans la table, mais lorsque j'efface tous les enregistrement de la
table, alors,cela plante...

et je pensais que la commande AddNew permettait de remédier au
problème ?

Je réponds à Alberto par rapport à sa suggestion ...






Avatar
3stone
Salut,

"Joël GARBE"

au final, la proposition d'Alberto semble fonctionner parfaitement, que la
table soit vide ou non !!!

Il me reste probablement à étudier de plus près tout ce qu'on peut faire
avec DoCmd... et la différence qu'il y a entre cette façon de procéder et la
précédente (celle que tu évoques et que j'avais commencer à employer)



Si je peux me permettre...


Lorsque l'on utilise un recordset (set rstRp=currentDb.Openrecordset...)
il plus que "bizarre" d'utiliser un DoCmd.xyz ;-)

Un

=> DoCmd.GoToRecord , , acNewRec

s'utilise à l'ouverture d'un formulaire, par exemple.

Mais, mélanger les deux méthodes est "horrible"

De plus, les "DoCmd" agissent sur l'objet sélectioné et non comme on pourrait
croire sur l'objet "en cours"...


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
Joël GARBE
Merci Pierre pour la précision,

Je vois que j'ai du travail sur la planche pour comprendre les subtilités
évoquées (pour moi, ces notions sont encore floues).

Il me reste à parcourir quelques sites pour approfondir tout cela

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"3stone" a écrit dans le message de news:
%23id%
Salut,

"Joël GARBE"

au final, la proposition d'Alberto semble fonctionner parfaitement, que
la
table soit vide ou non !!!

Il me reste probablement à étudier de plus près tout ce qu'on peut faire
avec DoCmd... et la différence qu'il y a entre cette façon de procéder et
la
précédente (celle que tu évoques et que j'avais commencer à employer)



Si je peux me permettre...


Lorsque l'on utilise un recordset (set rstRp=currentDb.Openrecordset...)
il plus que "bizarre" d'utiliser un DoCmd.xyz ;-)

Un

=> DoCmd.GoToRecord , , acNewRec

s'utilise à l'ouverture d'un formulaire, par exemple.

Mais, mélanger les deux méthodes est "horrible"

De plus, les "DoCmd" agissent sur l'objet sélectioné et non comme on
pourrait
croire sur l'objet "en cours"...


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome








Avatar
Joël GARBE
Bonjour,

Suite au message de Pierre, j'ai repris ta proposition qui fonctionne
également parfaitement (celle que je vais donc retenir ???)


Encore Merci et Bon Week-End
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Eric" a écrit dans le message de news:

re Joel,

Si la table est vide :
rstRP.AddNew
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

si la table contient au moins 1 enregistrement, se positionner sur
l'enregistrement à modifier par les méthodes Find ou Seek puis

rstRP.Edit
rstRP.Fields("Code Groupe") = rstP.Fields("Code Groupe")
rstRP.Update

Je suppose que tu as mis
set rstRp=currentDb.Openrecordset("laTable")

Comme tu ne sais pas a priori si la table rstRP est vide ou non, tu
devrais utiliser les propriétés Eof ou Bof de rstRP pour savoir si tu
dois ajouter ou modifier


C'est plus clair ?

Eric


"Joël GARBE" écrivait
news:41a7986c$0$30429$:

Tout d'abord merci pour la réponse ... que je ne comprends pas tout à
fait :

cela fonctionne très bien lorsqu'il y a au moins un enregistrement
dans la table, mais lorsque j'efface tous les enregistrement de la
table, alors,cela plante...

et je pensais que la commande AddNew permettait de remédier au
problème ?

Je réponds à Alberto par rapport à sa suggestion ...






1 2