Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recordsource

5 réponses
Avatar
Laurent
Bonjour à tou(te)s,

j'ai un forms en continu "AdrLoc" et un sforms "LocList" situé dans le pied
de formulaire. Ces 2 éléments sont basés sur 2 requêtes différentes
"AdrLocR1" et "AdrLocR2". Ces requêtes trouvent leur source sur la même table
"T1"

Un double clic dans une record de F1 rend visible SF1 qui contient d'autres
d'infos du record sélectionné. Juste là. tout fonctionne avec ce bout de code
Me!LocList.Visible = True
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR1 WHERE LocNo = "
& Me!LocNo
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus

En cliquant sur un bouton, ==> bout de code
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR2"
Me!LocList.Form.Recordset.AddNew
Me!LocList.Visible = True
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus
Tjs ok, positionnement sur un new record. Mais lorsque je tape un caractère
dans LocCP (le 1er champs du SF) j'obtiens le message suivant
"impossible d'attribuer une valeur à cet objet
l'objet est peut être un contrôle sur une formulaire en lecture seule
l'objet est peut-être un forms ouvert en mode création
il est possible que la valeur soit trop grande pour ce champs"
Je clic sur ok et la tout redevient possible !
Où est le problème ?
Si quelqu'un(e) a une idée.
Merci de votre aide

5 réponses

Avatar
Rv
Salut,

Apparement il y a un probléme entre la requête "AdrLocR2" et la source de
données du contrôle "LocCP"
Peut-être que ce champs n'est pas présent dans la requête "AdrLocR2" alors
qu'il existe bien dans "AdrLocR1".
Ou bien la requête "AdrLocR2" est plus complexe que "AdrLocR1" et ne permet
pas la mise à jour. Ceci peut se vérifier en lançant la requête puis en
essayant de mettre à jour le champs "LocCP".
Ou bien ... Tu peux poster le texte SQL des requêtes STP? Et aussi la
propriété "source contrôle" du contrôle "LocCP".

A+

Rv



"Laurent" a écrit dans le message de
news:
Bonjour à tou(te)s,

j'ai un forms en continu "AdrLoc" et un sforms "LocList" situé dans le
pied
de formulaire. Ces 2 éléments sont basés sur 2 requêtes différentes
"AdrLocR1" et "AdrLocR2". Ces requêtes trouvent leur source sur la même
table
"T1"

Un double clic dans une record de F1 rend visible SF1 qui contient
d'autres
d'infos du record sélectionné. Juste là. tout fonctionne avec ce bout de
code
Me!LocList.Visible = True
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR1 WHERE LocNo = "
& Me!LocNo
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus

En cliquant sur un bouton, ==> bout de code
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR2"
Me!LocList.Form.Recordset.AddNew
Me!LocList.Visible = True
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus
Tjs ok, positionnement sur un new record. Mais lorsque je tape un
caractère
dans LocCP (le 1er champs du SF) j'obtiens le message suivant
"impossible d'attribuer une valeur à cet objet
l'objet est peut être un contrôle sur une formulaire en lecture seule
l'objet est peut-être un forms ouvert en mode création
il est possible que la valeur soit trop grande pour ce champs"
Je clic sur ok et la tout redevient possible !
Où est le problème ?
Si quelqu'un(e) a une idée.
Merci de votre aide


Avatar
Laurent
Salut RV et merci de ton aide,

Les 2 requêtes sont totalement identiques (copier/coller), tous les champs y
figurent.
Code SQL des requêtes
No1
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;
No 2
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;

La propriété SourceControl de LocCP est LocCP

Ca parait "bête comme chou" mais ca prend la tête...
A+



Salut,

Apparement il y a un probléme entre la requête "AdrLocR2" et la source de
données du contrôle "LocCP"
Peut-être que ce champs n'est pas présent dans la requête "AdrLocR2" alors
qu'il existe bien dans "AdrLocR1".
Ou bien la requête "AdrLocR2" est plus complexe que "AdrLocR1" et ne permet
pas la mise à jour. Ceci peut se vérifier en lançant la requête puis en
essayant de mettre à jour le champs "LocCP".
Ou bien ... Tu peux poster le texte SQL des requêtes STP? Et aussi la
propriété "source contrôle" du contrôle "LocCP".

A+

Rv



"Laurent" a écrit dans le message de
news:
Bonjour à tou(te)s,

j'ai un forms en continu "AdrLoc" et un sforms "LocList" situé dans le
pied
de formulaire. Ces 2 éléments sont basés sur 2 requêtes différentes
"AdrLocR1" et "AdrLocR2". Ces requêtes trouvent leur source sur la même
table
"T1"

Un double clic dans une record de F1 rend visible SF1 qui contient
d'autres
d'infos du record sélectionné. Juste là. tout fonctionne avec ce bout de
code
Me!LocList.Visible = True
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR1 WHERE LocNo = "
& Me!LocNo
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus

En cliquant sur un bouton, ==> bout de code
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR2"
Me!LocList.Form.Recordset.AddNew
Me!LocList.Visible = True
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus
Tjs ok, positionnement sur un new record. Mais lorsque je tape un
caractère
dans LocCP (le 1er champs du SF) j'obtiens le message suivant
"impossible d'attribuer une valeur à cet objet
l'objet est peut être un contrôle sur une formulaire en lecture seule
l'objet est peut-être un forms ouvert en mode création
il est possible que la valeur soit trop grande pour ce champs"
Je clic sur ok et la tout redevient possible !
Où est le problème ?
Si quelqu'un(e) a une idée.
Merci de votre aide







Avatar
Rv
Salut,

Pourtant il devrait bien y avoir une différence entre les deux requêtes
sinon quel intêret?
Peux-tu m'envoyer ta base à l'adresse
(remplacer "passpam" par "a") .

A+

Rv

"Laurent" a écrit dans le message de
news:
Salut RV et merci de ton aide,

Les 2 requêtes sont totalement identiques (copier/coller), tous les champs
y
figurent.
Code SQL des requêtes
No1
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;
No 2
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;

La propriété SourceControl de LocCP est LocCP

Ca parait "bête comme chou" mais ca prend la tête...
A+



Salut,

Apparement il y a un probléme entre la requête "AdrLocR2" et la source de
données du contrôle "LocCP"
Peut-être que ce champs n'est pas présent dans la requête "AdrLocR2"
alors
qu'il existe bien dans "AdrLocR1".
Ou bien la requête "AdrLocR2" est plus complexe que "AdrLocR1" et ne
permet
pas la mise à jour. Ceci peut se vérifier en lançant la requête puis en
essayant de mettre à jour le champs "LocCP".
Ou bien ... Tu peux poster le texte SQL des requêtes STP? Et aussi la
propriété "source contrôle" du contrôle "LocCP".

A+

Rv



"Laurent" a écrit dans le message de
news:
Bonjour à tou(te)s,

j'ai un forms en continu "AdrLoc" et un sforms "LocList" situé dans le
pied
de formulaire. Ces 2 éléments sont basés sur 2 requêtes différentes
"AdrLocR1" et "AdrLocR2". Ces requêtes trouvent leur source sur la même
table
"T1"

Un double clic dans une record de F1 rend visible SF1 qui contient
d'autres
d'infos du record sélectionné. Juste là. tout fonctionne avec ce bout
de
code
Me!LocList.Visible = True
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR1 WHERE LocNo =
"
& Me!LocNo
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus

En cliquant sur un bouton, ==> bout de code
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR2"
Me!LocList.Form.Recordset.AddNew
Me!LocList.Visible = True
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus
Tjs ok, positionnement sur un new record. Mais lorsque je tape un
caractère
dans LocCP (le 1er champs du SF) j'obtiens le message suivant
"impossible d'attribuer une valeur à cet objet
l'objet est peut être un contrôle sur une formulaire en lecture seule
l'objet est peut-être un forms ouvert en mode création
il est possible que la valeur soit trop grande pour ce champs"
Je clic sur ok et la tout redevient possible !
Où est le problème ?
Si quelqu'un(e) a une idée.
Merci de votre aide









Avatar
Laurent
Rebonjour RV,

Entre temps, je t'ai fait suivre ma base, mais j'ai fini par trouver. Avant
le AddNew, je devais redonner le focus au Sforms !!! Merci pour le temps
passé à chercher.
A bientôt pour un autre soucis.
Bonne journée

Laurent


Salut,

Pourtant il devrait bien y avoir une différence entre les deux requêtes
sinon quel intêret?
Peux-tu m'envoyer ta base à l'adresse
(remplacer "passpam" par "a") .

A+

Rv

"Laurent" a écrit dans le message de
news:
Salut RV et merci de ton aide,

Les 2 requêtes sont totalement identiques (copier/coller), tous les champs
y
figurent.
Code SQL des requêtes
No1
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;
No 2
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;

La propriété SourceControl de LocCP est LocCP

Ca parait "bête comme chou" mais ca prend la tête...
A+



Salut,

Apparement il y a un probléme entre la requête "AdrLocR2" et la source de
données du contrôle "LocCP"
Peut-être que ce champs n'est pas présent dans la requête "AdrLocR2"
alors
qu'il existe bien dans "AdrLocR1".
Ou bien la requête "AdrLocR2" est plus complexe que "AdrLocR1" et ne
permet
pas la mise à jour. Ceci peut se vérifier en lançant la requête puis en
essayant de mettre à jour le champs "LocCP".
Ou bien ... Tu peux poster le texte SQL des requêtes STP? Et aussi la
propriété "source contrôle" du contrôle "LocCP".

A+

Rv



"Laurent" a écrit dans le message de
news:
Bonjour à tou(te)s,

j'ai un forms en continu "AdrLoc" et un sforms "LocList" situé dans le
pied
de formulaire. Ces 2 éléments sont basés sur 2 requêtes différentes
"AdrLocR1" et "AdrLocR2". Ces requêtes trouvent leur source sur la même
table
"T1"

Un double clic dans une record de F1 rend visible SF1 qui contient
d'autres
d'infos du record sélectionné. Juste là. tout fonctionne avec ce bout
de
code
Me!LocList.Visible = True
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR1 WHERE LocNo =
"
& Me!LocNo
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus

En cliquant sur un bouton, ==> bout de code
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR2"
Me!LocList.Form.Recordset.AddNew
Me!LocList.Visible = True
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus
Tjs ok, positionnement sur un new record. Mais lorsque je tape un
caractère
dans LocCP (le 1er champs du SF) j'obtiens le message suivant
"impossible d'attribuer une valeur à cet objet
l'objet est peut être un contrôle sur une formulaire en lecture seule
l'objet est peut-être un forms ouvert en mode création
il est possible que la valeur soit trop grande pour ce champs"
Je clic sur ok et la tout redevient possible !
Où est le problème ?
Si quelqu'un(e) a une idée.
Merci de votre aide












Avatar
Rv
Re,

J'ai regardé la base que tu m'as envoyé.
Le problème n'est pas lié au controle "LocCP" mais il provient du conflit
suivant:
- Le formulaire principal et le sous formulaire s'appuient sur la même
source de données (indirectement car il y a deux requêtes distinctes
s'appuyant sur la même table).
- Lors de l'ajout, le formulaire principal et le sous formulaire sont liés
par les propriétés champs père, champs fils qui dans ce cas sont renseignées
avec le même champs (LocNo, clé primaire en numAuto, de la table adrLoc).
Ainsi lors de l'ajout dans le sous formulaire la clé primaire LocNo, est
générée mais cet enregistrement n'est pas encore présent dans le formulaire
principal et les deux formulaires sont liés par ce champs LocNo. D'ou
l'incohérence et le message!

De plus il y a un petit mélange des genres puisque le formulaire principal
et le sous formulaire sont aussi liés par la mise à jour de la source du
sous formulaire depuis le form principal lors du déclenchement d'un
événement (dblClick sur la zone détail). Ceci n'est pas nécessaire car les
propriétés champs père et fils étant renseignées, Access fait le boulot tout
seul.

Donc deux solutions:
- Soit on garde la notion de champs père champs fils, mais il faut vider ses
propriétés lors de l'ajout (pour éviter le message d'erreur) puis les
rétablir après l'ajout (pour conserver le mécanisme).
- Soit on ne renseignes pas ces propriétés (donc pas de problème lors de
l'ajout) et on pousse un peu plus loin le principe de la mise à jour de la
source du sous form par le form principal.

Dans tous les cas il est bon de faire un requery de la source du form
principal après ajout dans le sous formulaire pour voir apparaître le nouvel
enregistrement.

Je te retourne donc dans un moment deux exemplaires de la base un pour
chaque méthode.

A+

Rv




"Rv" a écrit dans le message de
news:
Salut,

Pourtant il devrait bien y avoir une différence entre les deux requêtes
sinon quel intêret?
Peux-tu m'envoyer ta base à l'adresse
(remplacer "passpam" par "a") .

A+

Rv

"Laurent" a écrit dans le message de
news:
Salut RV et merci de ton aide,

Les 2 requêtes sont totalement identiques (copier/coller), tous les
champs y
figurent.
Code SQL des requêtes
No1
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;
No 2
SELECT AdrLoc.LocNo, AdrLoc.LocCP, AdrLoc.LocVil, AdrLoc.LocCan,
AdrLoc.PayNo, AdrLoc.LocCPay, AdrLoc.LocNPay, AdrLoc.DateModif
FROM AdrLoc;

La propriété SourceControl de LocCP est LocCP

Ca parait "bête comme chou" mais ca prend la tête...
A+



Salut,

Apparement il y a un probléme entre la requête "AdrLocR2" et la source
de
données du contrôle "LocCP"
Peut-être que ce champs n'est pas présent dans la requête "AdrLocR2"
alors
qu'il existe bien dans "AdrLocR1".
Ou bien la requête "AdrLocR2" est plus complexe que "AdrLocR1" et ne
permet
pas la mise à jour. Ceci peut se vérifier en lançant la requête puis en
essayant de mettre à jour le champs "LocCP".
Ou bien ... Tu peux poster le texte SQL des requêtes STP? Et aussi la
propriété "source contrôle" du contrôle "LocCP".

A+

Rv



"Laurent" a écrit dans le message de
news:
Bonjour à tou(te)s,

j'ai un forms en continu "AdrLoc" et un sforms "LocList" situé dans le
pied
de formulaire. Ces 2 éléments sont basés sur 2 requêtes différentes
"AdrLocR1" et "AdrLocR2". Ces requêtes trouvent leur source sur la
même
table
"T1"

Un double clic dans une record de F1 rend visible SF1 qui contient
d'autres
d'infos du record sélectionné. Juste là. tout fonctionne avec ce bout
de
code
Me!LocList.Visible = True
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR1 WHERE LocNo =
"
& Me!LocNo
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus

En cliquant sur un bouton, ==> bout de code
Me!LocList.Form.RecordSource = "SELECT * FROM AdrLocR2"
Me!LocList.Form.Recordset.AddNew
Me!LocList.Visible = True
Me!LocList.SetFocus
Forms("AdrLoc")("LocList")("LocCP").SetFocus
Tjs ok, positionnement sur un new record. Mais lorsque je tape un
caractère
dans LocCP (le 1er champs du SF) j'obtiens le message suivant
"impossible d'attribuer une valeur à cet objet
l'objet est peut être un contrôle sur une formulaire en lecture
seule
l'objet est peut-être un forms ouvert en mode création
il est possible que la valeur soit trop grande pour ce champs"
Je clic sur ok et la tout redevient possible !
Où est le problème ?
Si quelqu'un(e) a une idée.
Merci de votre aide