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

Code dans un sous-formulaire

4 réponses
Avatar
André
Bonjour à tous,
Access 2007. J'ai un formulaire principal et un sous formulaire. Lorsque
j'entre un nouveau patient (no, nom, prénom) dans le formulaire principal et
que par la suite j'exécute une requête Ajout dans mon sous-formulaire afin
d'ajouter les enregistrements correspondants qui proviennent d'une autre
table, la requête ajoute TOUS les enregistrements et non pas celui de mon
nouveau patient seulement. Je ne suis pas un expert en VBA, même si je me
débrouille bien avec Access. Comment puis-je lui dire d'ajouter seulement
celui de mon nouveau patient. J'espère être assez précis. Je remercie
d'avance tous ceux qui pourront m'aider.
Merci!

4 réponses

Avatar
Fabien
André a écrit :
Bonjour à tous,
Access 2007. J'ai un formulaire principal et un sous formulaire. Lorsque
j'entre un nouveau patient (no, nom, prénom) dans le formulaire principal et
que par la suite j'exécute une requête Ajout dans mon sous-formulaire afin
d'ajouter les enregistrements correspondants qui proviennent d'une autre
table, la requête ajoute TOUS les enregistrements et non pas celui de mon
nouveau patient seulement. Je ne suis pas un expert en VBA, même si je me
débrouille bien avec Access. Comment puis-je lui dire d'ajouter seulement
celui de mon nouveau patient. J'espère être assez précis. Je remercie
d'avance tous ceux qui pourront m'aider.
Merci!



Bonjour,
Dans ta requête d'ajout ne peux tu pas filtrer sur l'identifiant du
patient ?
"Insert .......... Where [Id Patient]= " & me.[id patient]
@+
Avatar
André
Bonjour Fabien,
Merci de ta réponse. Lorsque je tente d'insérer la commande dans ma
requête, ça ne fonctionne pas. Comme je le mentionnait je ne suis pas un
expert en programmation SQL. Voici ce que ça donne:

INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
[T-PHRASES_description], [T-EMOTIONS_description] )
SELECT [T-CREATION-ALEATOIRE].id_enfant, [T-CREATION-ALEATOIRE].stimulus,
[T-CREATION-ALEATOIRE].[T-PHRASES_description],
[T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
[T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
WHERE [T-ENFANTS-STIMULI].id_enfant=me.id_enfant;

Ça me semble tellement facile et logique ce que tu me recommandais. Lorsque
j'exécute la requête, celle-ci me demande un paramètre comme si j'avais posé
la question [Entre le ID_enfant] directement dans la zone critère de ma
requête. Est-ce que je m'y prends mal.
Merci de ta patience.




"Fabien" a écrit :

André a écrit :
> Bonjour à tous,
> Access 2007. J'ai un formulaire principal et un sous formulaire. Lorsque
> j'entre un nouveau patient (no, nom, prénom) dans le formulaire principal et
> que par la suite j'exécute une requête Ajout dans mon sous-formulaire afin
> d'ajouter les enregistrements correspondants qui proviennent d'une autre
> table, la requête ajoute TOUS les enregistrements et non pas celui de mon
> nouveau patient seulement. Je ne suis pas un expert en VBA, même si je me
> débrouille bien avec Access. Comment puis-je lui dire d'ajouter seulement
> celui de mon nouveau patient. J'espère être assez précis. Je remercie
> d'avance tous ceux qui pourront m'aider.
> Merci!
>
Bonjour,
Dans ta requête d'ajout ne peux tu pas filtrer sur l'identifiant du
patient ?
"Insert .......... Where [Id Patient]= " & me.[id patient]
@+



Avatar
Fabien
Si ta requete est générée par le requeteur :
INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
> [T-PHRASES_description], [T-EMOTIONS_description] )
> SELECT [T-CREATION-ALEATOIRE].id_enfant,
[T-CREATION-ALEATOIRE].stimulus,
> [T-CREATION-ALEATOIRE].[T-PHRASES_description],
> [T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
> FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
> [T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
> WHERE [T-ENFANTS-STIMULI].id_enfant=Forms!("Formulaire
Principal").id_enfant;
parce qu'il faut indiquer dans quel formulaire se trouve le controle

Si c'est dans le code, genre
SQL="INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
[T-PHRASES_description], [T-EMOTIONS_description] )
SELECT [T-CREATION-ALEATOIRE].id_enfant, [T-CREATION-ALEATOIRE].stimulus,
[T-CREATION-ALEATOIRE].[T-PHRASES_description],
[T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
[T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
WHERE [T-ENFANTS-STIMULI].id_enfant=" & me.id_enfant & ";"

Currentdb.execute SQL

@+
André a écrit :
Bonjour Fabien,
Merci de ta réponse. Lorsque je tente d'insérer la commande dans ma
requête, ça ne fonctionne pas. Comme je le mentionnait je ne suis pas un
expert en programmation SQL. Voici ce que ça donne:

INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
[T-PHRASES_description], [T-EMOTIONS_description] )
SELECT [T-CREATION-ALEATOIRE].id_enfant, [T-CREATION-ALEATOIRE].stimulus,
[T-CREATION-ALEATOIRE].[T-PHRASES_description],
[T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
[T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
WHERE [T-ENFANTS-STIMULI].id_enfant=me.id_enfant;

Ça me semble tellement facile et logique ce que tu me recommandais. Lorsque
j'exécute la requête, celle-ci me demande un paramètre comme si j'avais posé
la question [Entre le ID_enfant] directement dans la zone critère de ma
requête. Est-ce que je m'y prends mal.
Merci de ta patience.




"Fabien" a écrit :

André a écrit :
Bonjour à tous,
Access 2007. J'ai un formulaire principal et un sous formulaire. Lorsque
j'entre un nouveau patient (no, nom, prénom) dans le formulaire principal et
que par la suite j'exécute une requête Ajout dans mon sous-formulaire afin
d'ajouter les enregistrements correspondants qui proviennent d'une autre
table, la requête ajoute TOUS les enregistrements et non pas celui de mon
nouveau patient seulement. Je ne suis pas un expert en VBA, même si je me
débrouille bien avec Access. Comment puis-je lui dire d'ajouter seulement
celui de mon nouveau patient. J'espère être assez précis. Je remercie
d'avance tous ceux qui pourront m'aider.
Merci!



Bonjour,
Dans ta requête d'ajout ne peux tu pas filtrer sur l'identifiant du
patient ?
"Insert .......... Where [Id Patient]= " & me.[id patient]
@+





Avatar
André
Ça fonctionne à merveille. Je te remercie beaucoup. Effectivement ma
requête était générée par le requeteur.
Encore une fois un grand MERCI!

"Fabien" a écrit :

Si ta requete est générée par le requeteur :
INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
> [T-PHRASES_description], [T-EMOTIONS_description] )
> SELECT [T-CREATION-ALEATOIRE].id_enfant,
[T-CREATION-ALEATOIRE].stimulus,
> [T-CREATION-ALEATOIRE].[T-PHRASES_description],
> [T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
> FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
> [T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
> WHERE [T-ENFANTS-STIMULI].id_enfant=Forms!("Formulaire
Principal").id_enfant;
parce qu'il faut indiquer dans quel formulaire se trouve le controle

Si c'est dans le code, genre
SQL="INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
[T-PHRASES_description], [T-EMOTIONS_description] )
SELECT [T-CREATION-ALEATOIRE].id_enfant, [T-CREATION-ALEATOIRE].stimulus,
[T-CREATION-ALEATOIRE].[T-PHRASES_description],
[T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
[T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
WHERE [T-ENFANTS-STIMULI].id_enfant=" & me.id_enfant & ";"

Currentdb.execute SQL

@+
André a écrit :
> Bonjour Fabien,
> Merci de ta réponse. Lorsque je tente d'insérer la commande dans ma
> requête, ça ne fonctionne pas. Comme je le mentionnait je ne suis pas un
> expert en programmation SQL. Voici ce que ça donne:
>
> INSERT INTO [T-ENFANTS-STIMULI] ( id_enfant, stimulus,
> [T-PHRASES_description], [T-EMOTIONS_description] )
> SELECT [T-CREATION-ALEATOIRE].id_enfant, [T-CREATION-ALEATOIRE].stimulus,
> [T-CREATION-ALEATOIRE].[T-PHRASES_description],
> [T-CREATION-ALEATOIRE].[T-EMOTIONS_description]
> FROM [T-CREATION-ALEATOIRE] INNER JOIN [T-DONNEES-ENFANTS] ON
> [T-CREATION-ALEATOIRE].id_enfant=[T-DONNEES-ENFANTS].id_enfant
> WHERE [T-ENFANTS-STIMULI].id_enfant=me.id_enfant;
>
> Ça me semble tellement facile et logique ce que tu me recommandais. Lorsque
> j'exécute la requête, celle-ci me demande un paramètre comme si j'avais posé
> la question [Entre le ID_enfant] directement dans la zone critère de ma
> requête. Est-ce que je m'y prends mal.
> Merci de ta patience.
>
>
>
>
> "Fabien" a écrit :
>
>> André a écrit :
>>> Bonjour à tous,
>>> Access 2007. J'ai un formulaire principal et un sous formulaire. Lorsque
>>> j'entre un nouveau patient (no, nom, prénom) dans le formulaire principal et
>>> que par la suite j'exécute une requête Ajout dans mon sous-formulaire afin
>>> d'ajouter les enregistrements correspondants qui proviennent d'une autre
>>> table, la requête ajoute TOUS les enregistrements et non pas celui de mon
>>> nouveau patient seulement. Je ne suis pas un expert en VBA, même si je me
>>> débrouille bien avec Access. Comment puis-je lui dire d'ajouter seulement
>>> celui de mon nouveau patient. J'espère être assez précis. Je remercie
>>> d'avance tous ceux qui pourront m'aider.
>>> Merci!
>>>
>> Bonjour,
>> Dans ta requête d'ajout ne peux tu pas filtrer sur l'identifiant du
>> patient ?
>> "Insert .......... Where [Id Patient]= " & me.[id patient]
>> @+
>>