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

Saisie de données à partir d'une requête sélection

8 réponses
Avatar
moromain
Bonjour,

J'utilise la requ=EAte suivante, depuis un formulaire pour de la
saisie :

SELECT T1.C1, T1.C2, T1.C3, T1.C4
FROM T1
WHERE T1.C4 is NULL

Tout fonctionne normalement : je peux saisir des donn=E9es dans C4.

Par contre, si je rajoute un champs d'une table T2, pour faciliter la
saisie par l'op=E9rateur, je ne peux plus entrer de

donn=E9es dans le champs C4 :

SELECT T1.C1, T1.C2, T1.C3, T1.C4, T2.C5
FROM T1 INNER JOIN T2 ON T1.C3 =3D T2.C6
HAVING T1.C4 Is Null

Je pense que le probl=E8me vient du fait que la source du formulaire est
la requ=EAte et non la table T1.
Comment faire pour entrer des valeurs dans le formulaire ?

Merci d'avance !

8 réponses

Avatar
Thierry (ze Titi)
Hello moromain !

A partir du moment où tu as une jointure dans la requête, le recordset
est verrouillé, ce qui interdit la saisie. Dans ton cas, je te suggère
de conserver la table T1 comme source du formulaire et d'importer le
champ de la table T2 en "live", avec un DLookup par exemple:

leChamp=DLookup("C5","T2","C6=" & [leChampContenantT1.C3])

En ce jour mémorable du dimanche 04/11/2007, tu as émis l'idée
suivante:
Bonjour,

J'utilise la requête suivante, depuis un formulaire pour de la
saisie :

SELECT T1.C1, T1.C2, T1.C3, T1.C4
FROM T1
WHERE T1.C4 is NULL

Tout fonctionne normalement : je peux saisir des données dans C4.

Par contre, si je rajoute un champs d'une table T2, pour faciliter la
saisie par l'opérateur, je ne peux plus entrer de

données dans le champs C4 :

SELECT T1.C1, T1.C2, T1.C3, T1.C4, T2.C5
FROM T1 INNER JOIN T2 ON T1.C3 = T2.C6
HAVING T1.C4 Is Null

Je pense que le problème vient du fait que la source du formulaire est
la requête et non la table T1.
Comment faire pour entrer des valeurs dans le formulaire ?

Merci d'avance !


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
moromain
Merci Thierry,
C'est exactement ce que je recherchais !
J'ai repris ton exemple : erreur de synthaxe.
Je reprends l'exemple de l'aide, que je suis à la loupe (c'est
pourtant pas complexe) : erreur de synthaxe.

Dans le code source, j'ai mis :
=DLookup("[Unite]", "T_Parametres_ListeParAlterationEtParMatrice",
"[Parametre] =" & Forms![F_MG_1_321_sf]!NomParametre_PVB)
J'ai essayé :
=DLookup("[Unite]", "T_Parametres_ListeParAlterationEtParMatrice",
"[Parametre] =" & NomParametre_PVB)
avec crochets, sans crochets, avec ", sans ", sans rien.
J'ai fait un papier collé des noms de champs et de formulaires.
L'exemple de l'aide :
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order
Details]!ProductID)

Qu'est-ce qui ne va pas ?!
Avatar
Thierry (ze Titi)
Si tu mets tout ça directement dans la source des contrôles ou dans les zones critères de l'éditeur de requêtes, il faut remplacer les virgules par des point-virgules:

=DLookup("[Unite]"; "T_Parametres_ListeParAlterationEtParMatrice";"[Parametre]=" & Forms![F_MG_1_321_sf]!NomParametre_PVB)

D'autre part, si tes critères sont de type alphanumérique, il faut les entourer par des apostrophes:

=DLookup("[Unite]"; "T_Parametres_ListeParAlterationEtParMatrice";"[Parametre]='" & Forms![F_MG_1_321_sf]!NomParametre_PVB & "'")


Message du lundi 05/11/2007

Merci Thierry,
C'est exactement ce que je recherchais !
J'ai repris ton exemple : erreur de synthaxe.
Je reprends l'exemple de l'aide, que je suis à la loupe (c'est
pourtant pas complexe) : erreur de synthaxe.

Dans le code source, j'ai mis :
=DLookup("[Unite]", "T_Parametres_ListeParAlterationEtParMatrice",
"[Parametre] =" & Forms![F_MG_1_321_sf]!NomParametre_PVB)
J'ai essayé :
=DLookup("[Unite]", "T_Parametres_ListeParAlterationEtParMatrice",
"[Parametre] =" & NomParametre_PVB)
avec crochets, sans crochets, avec ", sans ", sans rien.
J'ai fait un papier collé des noms de champs et de formulaires.
L'exemple de l'aide :
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order
Details]!ProductID)

Qu'est-ce qui ne va pas ?!


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
moromain
Merci !
Il n'empêche que l'aide n'est pas très clair au sujet des "," et des
";" :p

Question subsidiaire : est-il possible de faire un Dlookup à
l'intérieur d'un DLookup ?
Une requête serait plus utile, non ? J'avais essayé la requête. Je
viens de tester DLookup. Même résultat : toutes les valeurs de mon
champs sur lequel je fais un DLookup sont égaux (formulaire en mode
Feuille de données et toutes les valeurs de la colonne sont égales) :
=RechDom("[C1]";"T";"[C3]='" & RechDom("[C3]";"T";"[C2]='" &
[C2duForm] & "'") & "'") c'est pas barbare comme synthaxe ?!!!
Ou la requête :
SELECT C1, C2, C3
FROM T
WHERE C2=[C2duForm] AND C3=[C3duForm]
(les noms des champs n'ont rien à voir avec ceux plus haut !)
Avatar
Thierry (ze Titi)
Hello moromain !

On peut très bien imbriquer plusieurs DLookup, c'est tout à fait
possible. Mais ça rallonge d'autant la durée d'exécution. De toute
façon, un DLookup n'est ni plus ni moins qu'une requête ne ramenant
qu'une valeur, il n'est pas étonnant que tu retrouves les mêmes
valeurs.
Les fonctions de recherche de domaine (DLookup, DFirst, etc...) sont
utiles en programmation VBA quand on cherche une valeur et une seule
selon un nombre restreint de paramètres.

En ce jour mémorable du lundi 05/11/2007, tu as émis l'idée suivante:
Merci !
Il n'empêche que l'aide n'est pas très clair au sujet des "," et des
";" :p

Question subsidiaire : est-il possible de faire un Dlookup à
l'intérieur d'un DLookup ?
Une requête serait plus utile, non ? J'avais essayé la requête. Je
viens de tester DLookup. Même résultat : toutes les valeurs de mon
champs sur lequel je fais un DLookup sont égaux (formulaire en mode
Feuille de données et toutes les valeurs de la colonne sont égales) :
=RechDom("[C1]";"T";"[C3]='" & RechDom("[C3]";"T";"[C2]='" &
[C2duForm] & "'") & "'") c'est pas barbare comme synthaxe ?!!!
Ou la requête :
SELECT C1, C2, C3
FROM T
WHERE C2=[C2duForm] AND C3=[C3duForm]
(les noms des champs n'ont rien à voir avec ceux plus haut !)


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
moromain
Existe t'il alors un moyen de faire varier un champs selon 2 autres,
dans une feuille de données ?
L'opérateur doit saisir des valeurs. Selon 2 critères affichés dans la
feuille de données, l'unité change. Si je n'ai pas le choix tant pis,
mais j'aurai préféré ne pas laisser le choix à l'utilisateur de
choisir lui-même l'unité (afin d'avoir des valeurs de même unité da ns
la table et donc forcer l'utilisateur à modifier sa valeur en fonction
de MON unité !).
Avatar
moromain
Et je rajoute une autre question (qu'est-ce qu'il nous emm... avec ses
questions çuilà !).
Comment se fait-il que, dans un formulaire, un controle texte (par
exemple), dont la valeur (.value) dépend d'autres contrôles du même
enregistrement (via une requête) conserve la première valeur, quel que
soit l'enregistrement ?
Vous allez peut-être me dire de faire un requery. Soit. Mais dans ce
cas, comment fait-on un requery, en mode feuille de données, quand on
passe à un autre enregistrement ?
Avatar
Thierry (ze Titi)
Hello moromain !

En ce jour mémorable du mardi 06/11/2007, tu as émis l'idée suivante:
Et je rajoute une autre question (qu'est-ce qu'il nous emm... avec ses
questions çuilà !).
Comment se fait-il que, dans un formulaire, un controle texte (par
exemple), dont la valeur (.value) dépend d'autres contrôles du même
enregistrement (via une requête) conserve la première valeur, quel que
soit l'enregistrement ?
Vous allez peut-être me dire de faire un requery. Soit. Mais dans ce
cas, comment fait-on un requery, en mode feuille de données, quand on
passe à un autre enregistrement ?
Avec l'évènement "Sur activation", comme dans un formulaire en mode

claissque...

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info