OVH Cloud OVH Cloud

Impossible de mettre à jour recordset ?

15 réponses
Avatar
Joël GARBE
Bonjour à tous,

J'ai repris toute la logique de mon appli, pour n'avoir que des formulaires
indépendants les uns des autres, en les positionnant de façon à ce que ce
soit cool !

Cela semble plus convivial, mais je bloque sur un point.

Sur un de mes formulaires "Instantané", affichant un enregistrement grâce à
ces instructions :
Dim sql As String
sql = "SELECT Groupe.*, Groupe.N° " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs & "));"

Me.RecordSource = sql

je ne parviens pas à modifier les champs de mon formulaire...

D'où vient l'erreur ???

Vous en remerciant par avance...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

est-ce que Groupe.N° ne serait pas la clé primaire ? il apparaît 2 fois dans
ta requête 1 fois avec le * et 1 fois seul. dans la colonne de critère
décoche la case.

sql = "SELECT Groupe.* " & _


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f23931$0$19406$
Bonjour à tous,

J'ai repris toute la logique de mon appli, pour n'avoir que des
formulaires indépendants les uns des autres, en les positionnant de façon
à ce que ce soit cool !

Cela semble plus convivial, mais je bloque sur un point.

Sur un de mes formulaires "Instantané", affichant un enregistrement grâce
à ces instructions :
Dim sql As String
sql = "SELECT Groupe.*, Groupe.N° " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs &
"));"

Me.RecordSource = sql

je ne parviens pas à modifier les champs de mon formulaire...

D'où vient l'erreur ???

Vous en remerciant par avance...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr



Avatar
Joël GARBE
Merci Raymond,

Le premier Pb, apparemment venait de ce ue mon formulaire était en recordset
"Instantané".

En le mettant en "Feuille de réponse dynamique", je n'ai plus le même
Problème.

Maintenant j'ai le message suivant : "Mise à jour impossible : la base de
donnée ou l'objet est en lecture seule".

J'ai modifié la requête selon tes instructions, et j'ai toujours ce même
message.
Dim sql As String
sql = "SELECT Groupe.* " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs & "));"

Me.RecordSource = sql

N° et effectivement la clé primaire de ma table.

Je dois faire une erreur grossière quelque part, une propriété quelconque
qui n'est pas conforme...mais si je lance le formulaire, directement, sans
aucun autre formulaire, je peux faire les modifs... c'est donc comme si,
dans l'appli, il y avait un autre objet ouvert qui bloque la table ou le
formulaire...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news: %23DbL%
Bonjour.

est-ce que Groupe.N° ne serait pas la clé primaire ? il apparaît 2 fois
dans ta requête 1 fois avec le * et 1 fois seul. dans la colonne de
critère décoche la case.

sql = "SELECT Groupe.* " & _


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f23931$0$19406$
Bonjour à tous,

J'ai repris toute la logique de mon appli, pour n'avoir que des
formulaires indépendants les uns des autres, en les positionnant de façon
à ce que ce soit cool !

Cela semble plus convivial, mais je bloque sur un point.

Sur un de mes formulaires "Instantané", affichant un enregistrement grâce
à ces instructions :
Dim sql As String
sql = "SELECT Groupe.*, Groupe.N° " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs &
"));"

Me.RecordSource = sql

je ne parviens pas à modifier les champs de mon formulaire...

D'où vient l'erreur ???

Vous en remerciant par avance...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr







Avatar
Raymond [mvp]
ce qui bloque c'est que tu mets la clé primaire en clause where. tu ne peux
avoir qu'un seul enregistrement vu qu'il doit être égal à une valeur précise
donc tu ne peux pas en rajouter un sinon le clé primaire ne serait pas = à
Forms("ZFDTBoutonsNavigation").OpenArgs
quand on met la clé primaire en clause where c'est pour ne pouvoir modifier
qu'un seul enregistrement bien précis.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f23f97$0$28926$
Merci Raymond,

Le premier Pb, apparemment venait de ce ue mon formulaire était en
recordset "Instantané".

En le mettant en "Feuille de réponse dynamique", je n'ai plus le même
Problème.

Maintenant j'ai le message suivant : "Mise à jour impossible : la base de
donnée ou l'objet est en lecture seule".

J'ai modifié la requête selon tes instructions, et j'ai toujours ce même
message.
Dim sql As String
sql = "SELECT Groupe.* " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs &
"));"

Me.RecordSource = sql

N° et effectivement la clé primaire de ma table.

Je dois faire une erreur grossière quelque part, une propriété quelconque
qui n'est pas conforme...mais si je lance le formulaire, directement, sans
aucun autre formulaire, je peux faire les modifs... c'est donc comme si,
dans l'appli, il y avait un autre objet ouvert qui bloque la table ou le
formulaire...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news: %23DbL%
Bonjour.

est-ce que Groupe.N° ne serait pas la clé primaire ? il apparaît 2 fois
dans ta requête 1 fois avec le * et 1 fois seul. dans la colonne de
critère décoche la case.

sql = "SELECT Groupe.* " & _


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f23931$0$19406$
Bonjour à tous,

J'ai repris toute la logique de mon appli, pour n'avoir que des
formulaires indépendants les uns des autres, en les positionnant de
façon à ce que ce soit cool !

Cela semble plus convivial, mais je bloque sur un point.

Sur un de mes formulaires "Instantané", affichant un enregistrement
grâce à ces instructions :
Dim sql As String
sql = "SELECT Groupe.*, Groupe.N° " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs &
"));"

Me.RecordSource = sql

je ne parviens pas à modifier les champs de mon formulaire...

D'où vient l'erreur ???

Vous en remerciant par avance...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr











Avatar
Joël GARBE
j'ai supprimé la requête et mis à la place :

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[N°] = " & Me.OpenArgs
Me.Bookmark = rs.Bookmark
Set rs = Nothing

car c'est cet enregistrement précis que je veux modifier, comme tu le disais
dans ta réponse. C'est bien cela que je veux faire, modifier un
enregistrement précis (celui dont le N° est égal à la valeur renvoyée par
ailleurs)

mais j'ai toujours le même message...je ne vois pas ce qui l'empêche d'être
modifié

une autre suggession ?

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news:
ce qui bloque c'est que tu mets la clé primaire en clause where. tu ne
peux avoir qu'un seul enregistrement vu qu'il doit être égal à une valeur
précise donc tu ne peux pas en rajouter un sinon le clé primaire ne serait
pas = à Forms("ZFDTBoutonsNavigation").OpenArgs
quand on met la clé primaire en clause where c'est pour ne pouvoir
modifier qu'un seul enregistrement bien précis.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f23f97$0$28926$
Merci Raymond,

Le premier Pb, apparemment venait de ce ue mon formulaire était en
recordset "Instantané".

En le mettant en "Feuille de réponse dynamique", je n'ai plus le même
Problème.

Maintenant j'ai le message suivant : "Mise à jour impossible : la base de
donnée ou l'objet est en lecture seule".

J'ai modifié la requête selon tes instructions, et j'ai toujours ce même
message.
Dim sql As String
sql = "SELECT Groupe.* " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs &
"));"

Me.RecordSource = sql

N° et effectivement la clé primaire de ma table.

Je dois faire une erreur grossière quelque part, une propriété quelconque
qui n'est pas conforme...mais si je lance le formulaire, directement,
sans aucun autre formulaire, je peux faire les modifs... c'est donc comme
si, dans l'appli, il y avait un autre objet ouvert qui bloque la table ou
le formulaire...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news: %23DbL%
Bonjour.

est-ce que Groupe.N° ne serait pas la clé primaire ? il apparaît 2 fois
dans ta requête 1 fois avec le * et 1 fois seul. dans la colonne de
critère décoche la case.

sql = "SELECT Groupe.* " & _


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f23931$0$19406$
Bonjour à tous,

J'ai repris toute la logique de mon appli, pour n'avoir que des
formulaires indépendants les uns des autres, en les positionnant de
façon à ce que ce soit cool !

Cela semble plus convivial, mais je bloque sur un point.

Sur un de mes formulaires "Instantané", affichant un enregistrement
grâce à ces instructions :
Dim sql As String
sql = "SELECT Groupe.*, Groupe.N° " & _
"FROM Groupe " & _
"WHERE (((Groupe.N°)=" & Forms("ZFDTBoutonsNavigation").OpenArgs &
"));"

Me.RecordSource = sql

je ne parviens pas à modifier les champs de mon formulaire...

D'où vient l'erreur ???

Vous en remerciant par avance...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr















Avatar
Raymond [mvp]
Si tu pars sur un record source ça doit y aller;
place un nomatch après le findfirst, on ne sait jamais. si tu as un nomatch
tu risques de ne pas voir l'erreur car il affichera toujours le 1er
enregistrement.
tu as vérifié toutes les propriétés ?
il m'est arrivé de perdre la valeur de OpenArgs lorsqu'on l'utilise longtemp
après la réception, vérifie si tu l'as bien juste avant le findfirst.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f24775$0$19397$
j'ai supprimé la requête et mis à la place :

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[N°] = " & Me.OpenArgs
Me.Bookmark = rs.Bookmark
Set rs = Nothing

car c'est cet enregistrement précis que je veux modifier, comme tu le
disais dans ta réponse. C'est bien cela que je veux faire, modifier un
enregistrement précis (celui dont le N° est égal à la valeur renvoyée par
ailleurs)

mais j'ai toujours le même message...je ne vois pas ce qui l'empêche
d'être modifié

une autre suggession ?


Avatar
Joël GARBE
en fait, j'affiche correctement l'enregistrement voulu, sans aucun problème,
mais toute modification d'information dans mon formulaire provoque le
message décrit... alors qu'il n'y a pas de problème si je le lance
"manuellement"

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news: %
Si tu pars sur un record source ça doit y aller;
place un nomatch après le findfirst, on ne sait jamais. si tu as un
nomatch tu risques de ne pas voir l'erreur car il affichera toujours le
1er enregistrement.
tu as vérifié toutes les propriétés ?
il m'est arrivé de perdre la valeur de OpenArgs lorsqu'on l'utilise
longtemp après la réception, vérifie si tu l'as bien juste avant le
findfirst.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f24775$0$19397$
j'ai supprimé la requête et mis à la place :

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[N°] = " & Me.OpenArgs
Me.Bookmark = rs.Bookmark
Set rs = Nothing

car c'est cet enregistrement précis que je veux modifier, comme tu le
disais dans ta réponse. C'est bien cela que je veux faire, modifier un
enregistrement précis (celui dont le N° est égal à la valeur renvoyée par
ailleurs)

mais j'ai toujours le même message...je ne vois pas ce qui l'empêche
d'être modifié

une autre suggession ?






Avatar
Raymond [mvp]
et comment le lances-tu ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f2544a$0$25773$
en fait, j'affiche correctement l'enregistrement voulu, sans aucun
problème, mais toute modification d'information dans mon formulaire
provoque le message décrit... alors qu'il n'y a pas de problème si je le
lance "manuellement"

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news: %
Si tu pars sur un record source ça doit y aller;
place un nomatch après le findfirst, on ne sait jamais. si tu as un
nomatch tu risques de ne pas voir l'erreur car il affichera toujours le
1er enregistrement.
tu as vérifié toutes les propriétés ?
il m'est arrivé de perdre la valeur de OpenArgs lorsqu'on l'utilise
longtemp après la réception, vérifie si tu l'as bien juste avant le
findfirst.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f24775$0$19397$
j'ai supprimé la requête et mis à la place :

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[N°] = " & Me.OpenArgs
Me.Bookmark = rs.Bookmark
Set rs = Nothing

car c'est cet enregistrement précis que je veux modifier, comme tu le
disais dans ta réponse. C'est bien cela que je veux faire, modifier un
enregistrement précis (celui dont le N° est égal à la valeur renvoyée
par ailleurs)

mais j'ai toujours le même message...je ne vois pas ce qui l'empêche
d'être modifié

une autre suggession ?










Avatar
Joël GARBE
à partir d'un autre formulaire "continu" listant les enregistrements, je
clique sur un bouton de commande qui exécute l'ouverture...

d'un premier formulaire qui contient des boutons de commandes

stDocName = "ZFDTBoutonsNavigation"

stLinkCriteria = "" ' "RqListeRecensementsMembresRI"
DoCmd.OpenForm stDocName, , , stLinkCriteria , , , Me.N°
Forms(stDocName).TBNum = Me.N° 'cette dernière instruction, puir étudier
le comportement en court-cicuitant l'OpenArg

'puis du formulaire en question...

stDocName = "ZFDossiersTechniquesInfosGenes"

stLinkCriteria = "" ' "RqListeRecensementsMembresRI"
DoCmd.OpenForm stDocName, , , stLinkCriteria , , , Me.N°

à noter qu'à la suite de l'ouverture décrite, le code ferme le formulaire
"continu"...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news:
et comment le lances-tu ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f2544a$0$25773$
en fait, j'affiche correctement l'enregistrement voulu, sans aucun
problème, mais toute modification d'information dans mon formulaire
provoque le message décrit... alors qu'il n'y a pas de problème si je le
lance "manuellement"

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message
de news: %
Si tu pars sur un record source ça doit y aller;
place un nomatch après le findfirst, on ne sait jamais. si tu as un
nomatch tu risques de ne pas voir l'erreur car il affichera toujours le
1er enregistrement.
tu as vérifié toutes les propriétés ?
il m'est arrivé de perdre la valeur de OpenArgs lorsqu'on l'utilise
longtemp après la réception, vérifie si tu l'as bien juste avant le
findfirst.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f24775$0$19397$
j'ai supprimé la requête et mis à la place :

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[N°] = " & Me.OpenArgs
Me.Bookmark = rs.Bookmark
Set rs = Nothing

car c'est cet enregistrement précis que je veux modifier, comme tu le
disais dans ta réponse. C'est bien cela que je veux faire, modifier un
enregistrement précis (celui dont le N° est égal à la valeur renvoyée
par ailleurs)

mais j'ai toujours le même message...je ne vois pas ce qui l'empêche
d'être modifié

une autre suggession ?














Avatar
Raymond [mvp]
Quand tu lances l'ouverture de ton 2e formulaire il faut déplacer le focus
sur ton 1er formulaire car il sont tous les deux en mode modification, ou
alors il faut que tu places un me.dirty= False pour enregistrer les modifs
sur le 1er formulaire avant d'ouvrir le 2e formulaire.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f25c16$0$25811$
à partir d'un autre formulaire "continu" listant les enregistrements, je
clique sur un bouton de commande qui exécute l'ouverture...

d'un premier formulaire qui contient des boutons de commandes

stDocName = "ZFDTBoutonsNavigation"

stLinkCriteria = "" ' "RqListeRecensementsMembresRI"
DoCmd.OpenForm stDocName, , , stLinkCriteria , , , Me.N°
Forms(stDocName).TBNum = Me.N° 'cette dernière instruction, puir
étudier le comportement en court-cicuitant l'OpenArg

'puis du formulaire en question...

stDocName = "ZFDossiersTechniquesInfosGenes"

stLinkCriteria = "" ' "RqListeRecensementsMembresRI"
DoCmd.OpenForm stDocName, , , stLinkCriteria , , , Me.N°

à noter qu'à la suite de l'ouverture décrite, le code ferme le formulaire
"continu"...

--

Bien cordialement,

Joël GARBE


Avatar
Joël GARBE
J'ai essayé mais sans amélioration ...

C'est comme si un autre formulaire effectivement bloquait la table source
...

mais je ne vois pas comment cela peut se faire !
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news:
Quand tu lances l'ouverture de ton 2e formulaire il faut déplacer le focus
sur ton 1er formulaire car il sont tous les deux en mode modification, ou
alors il faut que tu places un me.dirty= False pour enregistrer les modifs
sur le 1er formulaire avant d'ouvrir le 2e formulaire.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
41f25c16$0$25811$
à partir d'un autre formulaire "continu" listant les enregistrements, je
clique sur un bouton de commande qui exécute l'ouverture...

d'un premier formulaire qui contient des boutons de commandes

stDocName = "ZFDTBoutonsNavigation"

stLinkCriteria = "" ' "RqListeRecensementsMembresRI"
DoCmd.OpenForm stDocName, , , stLinkCriteria , , , Me.N°
Forms(stDocName).TBNum = Me.N° 'cette dernière instruction, puir
étudier le comportement en court-cicuitant l'OpenArg

'puis du formulaire en question...

stDocName = "ZFDossiersTechniquesInfosGenes"

stLinkCriteria = "" ' "RqListeRecensementsMembresRI"
DoCmd.OpenForm stDocName, , , stLinkCriteria , , , Me.N°

à noter qu'à la suite de l'ouverture décrite, le code ferme le formulaire
"continu"...

--

Bien cordialement,

Joël GARBE






1 2