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

verif à la fin de saisie dans 1 controle si déjà dans la table

15 réponses
Avatar
sylvere
Bonjour,
Dans un sous formulaire de saisie, en fin de saisie d'un champ texte
"stagiaire", je souhaite verifier dans la table de destination si cette
saisie existe déjà et envoyer un message de confirmation/abandon, pour
maitriser si on veut un doublon...

Ce sous formulaire est lié à un formulaire qui contient un champ "stage" de
la table convention liée à la table stagiaire
Le plus serait d'afficher ce champ stage auquel est rattachée la saisie que
l'on veut effectuer...n

Merci d'avance
Sylvere

5 réponses

1 2
Avatar
sylvere
Salut Fabien,
J'ai pris ta réponse sur le tard..
Je teste à nouveau mon code, pas de message d'erreur sauf qu'il me renvoie
toujours le premier stage de ma table catalogue quel que soit le stagiaire
repéré, et qui est effectivement dans un autre stage???
je te renvoie un bout du code qui génére cette erreur :
If DCount("*", "stagiaire", "[nom_stagiaire]='" & Me.nom_stagiaire & "'") >
0
And DCount("*", "catalogue", "[no_stage] = " & Me.no_convention) Then
If MsgBox("Il y est Pour l'intitulé " & DLookup("[intitule]", "catalogue",
"[nom_stagiaire]='" & Me.nom_stagiaire & "'")
& " On abandone ? ", vbYesNo) = vbYes Then
Me.Undo
End If
End If

Merci pour l'encouragement



"Fabien" a écrit dans le message de news:
47baa4f4$0$891$
Bonjour fabien,

Merci pour l'assistance..
J'ai repris ton code, mais ça m'indiquait invariablement le premier
intitulé


de mon catalogue.
Alors j'ai bricolé la syntaxe et ça coince :
Je lui dis en gaulois :
si tu trouves [nom_stagiaire] dans la table "stagiaire" = à
me.nom_stagiaire de mon sous formulaire
ET que tu trouves [no_stage] dans la table "catalogue = à
me.no_convention


de mon formulaire principal, àlors renvoie l'intitulé du catalogue
correspondant.
(formulaire principal se référe à une table "convention" qui est en
relation


avec la table "catalogue, par le champ no_convention et le champ
no_stage de


la table catalogue
Je te joins ci dessous mon essai. Je conçois que ça devient bien
compliqué à


ce stade., et peut être difficile à comprendre à distance..
Dans tous les cas, merci pour l'accompagnement





If DCount("*", "stagiaire", "[nom_stagiaire]='" & Me.nom_stagiaire & "'")

1 And DCount("*", "catalogue", "[no_stage] = " & Me.no_convention )>=1
Then


If MsgBox("Il y est Pour l'intitulé " & DLookup("[intitule]",
"catalogue",

'"[nom_stagiaire]='" & Me.nom_stagiaire & "'") & " On abandone ? ",
vbYesNo) = vbYes Then
Me.Undo
End If
End If


"Fabien" a écrit dans le message de news:
47b93ac8$0$858$
Merci Fabien,
Ca fonctionne très bien.
Mais... un petit plus d'affichage, peut être si c'est possible...
Ce formulaire ou je place mon test, est un sous formulaire d'un
formulaire


appelé convention.
(le sous formulaire est attaché à la table "stagiaire" , le
formulaire




à la
table "convention"
les deux tables sont en relation de un à plusieurs entre convention et
stagaire par un champ "no_stagiaire".
(une convention = plusieurs stagiaires.
Serait il possible en plus d'afficher "il y est on abandonne oui/non"
d'avoir "il est déja saisi pour l'intitulé... (ex :"traitement de
texte") on


abandonne oui/non" , intitulé de stage de la table convention
correspondant


au nom
la vérif de l'utilisation précédente de ce nom renvoyant le nom de
l'intitulé dans la table convention correspondant à ce nom
J'espère être clair??
Merci déjà à ce stade..


"Fabien" a écrit dans le message de
news:




47b5b5b3$0$845$
Merci Fabien, mais avec ce code il me dit "il y est" quelle que
soit







la
saisie..
Je me suis mal expliqué :
ex :si j'ai déjà un client qui s'appelle 'dupont' dans ce champ
dans







ma
table, au moment ou je finis la saisie, si je saisis un autre
"dupont'





je
voudrais qu'il me dise "il y est" sinon qu'il m'autorise à la
saisie...





Merci d'avance

"Fabien" a écrit dans le message de
news:





47b58dfc$0$891$
Bonjour,
Dans un sous formulaire de saisie, en fin de saisie d'un champ
texte







"stagiaire", je souhaite verifier dans la table de destination si
cette





saisie existe déjà et envoyer un message de confirmation/abandon,
pour





maitriser si on veut un doublon...

Ce sous formulaire est lié à un formulaire qui contient un champ
"stage"
de


la table convention liée à la table stagiaire
Le plus serait d'afficher ce champ stage auquel est rattachée la
saisie





que
l'on veut effectuer...n

Merci d'avance
Sylvere


Re,

dans l'événement after_update de ton champ tu fais
If dcount ("*","latable","lecritere")>0 then Msgbox "Il y est !!!"
else




Msgbox "Il y est pas !!!"
@+
Tu as mis quoi a la place de "lecritere" dans If dcount


("*","latable","lecritere") ?
Sur ma base de test un champ code

Private Sub code_AfterUpdate()
If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est on abandonne ?", vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub


Salut,

Lundi matin et les yeux pas en face des trous ;-)
Suis pas sûr d'avoir tous pigé.
Avec un dlookup("[Libelle Stage]","Table1","[Code]='" & me.Code & "'")
tu peux reccuperer ton intitulé de stage ou du moins l'un des intitulé.
S'il y en a plusieurs faut faire autrement.
If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est on abandonne ?", vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub


Devient

If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est Pour l'intitulé " & dlookup("[Libelle
Stage]","Table1","[Code]='" & me.Code & "'") & " On abandone ? " ,
vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub





Bonjour
Ne m'ayant pas indiqué le message d'erreur, je suppose que c'est sur le
dcount("*","catalogue","[No_Stage]=" & me.no_convention)>=1 parce que si
No_Stage est numérique il ne faut pas de ' pour encadrer me.No_convention
Courage on va y arriver ;-)
@+










Avatar
Fabien
Salut Fabien,
J'ai pris ta réponse sur le tard..
Je teste à nouveau mon code, pas de message d'erreur sauf qu'il me renvoie
toujours le premier stage de ma table catalogue quel que soit le stagiaire
repéré, et qui est effectivement dans un autre stage???
je te renvoie un bout du code qui génére cette erreur :
If DCount("*", "stagiaire", "[nom_stagiaire]='" & Me.nom_stagiaire & "'") >
0
And DCount("*", "catalogue", "[no_stage] = " & Me.no_convention) Then
If MsgBox("Il y est Pour l'intitulé " & DLookup("[intitule]", "catalogue",
"[nom_stagiaire]='" & Me.nom_stagiaire & "'")
& " On abandone ? ", vbYesNo) = vbYes Then
Me.Undo
End If
End If

Merci pour l'encouragement



"Fabien" a écrit dans le message de news:
47baa4f4$0$891$
Bonjour fabien,

Merci pour l'assistance..
J'ai repris ton code, mais ça m'indiquait invariablement le premier
intitulé


de mon catalogue.
Alors j'ai bricolé la syntaxe et ça coince :
Je lui dis en gaulois :
si tu trouves [nom_stagiaire] dans la table "stagiaire" = à
me.nom_stagiaire de mon sous formulaire
ET que tu trouves [no_stage] dans la table "catalogue = à
me.no_convention


de mon formulaire principal, àlors renvoie l'intitulé du catalogue
correspondant.
(formulaire principal se référe à une table "convention" qui est en
relation


avec la table "catalogue, par le champ no_convention et le champ
no_stage de


la table catalogue
Je te joins ci dessous mon essai. Je conçois que ça devient bien
compliqué à


ce stade., et peut être difficile à comprendre à distance..
Dans tous les cas, merci pour l'accompagnement




If DCount("*", "stagiaire", "[nom_stagiaire]='" & Me.nom_stagiaire & "'")

1 And DCount("*", "catalogue", "[no_stage] = " & Me.no_convention )>=1
Then


If MsgBox("Il y est Pour l'intitulé " & DLookup("[intitule]",
"catalogue",

'"[nom_stagiaire]='" & Me.nom_stagiaire & "'") & " On abandone ? ",
vbYesNo) = vbYes Then
Me.Undo
End If
End If

"Fabien" a écrit dans le message de news:
47b93ac8$0$858$
Merci Fabien,
Ca fonctionne très bien.
Mais... un petit plus d'affichage, peut être si c'est possible...
Ce formulaire ou je place mon test, est un sous formulaire d'un
formulaire


appelé convention.
(le sous formulaire est attaché à la table "stagiaire" , le
formulaire




à la
table "convention"
les deux tables sont en relation de un à plusieurs entre convention et
stagaire par un champ "no_stagiaire".
(une convention = plusieurs stagiaires.
Serait il possible en plus d'afficher "il y est on abandonne oui/non"
d'avoir "il est déja saisi pour l'intitulé... (ex :"traitement de
texte") on


abandonne oui/non" , intitulé de stage de la table convention
correspondant


au nom
la vérif de l'utilisation précédente de ce nom renvoyant le nom de
l'intitulé dans la table convention correspondant à ce nom
J'espère être clair??
Merci déjà à ce stade..


"Fabien" a écrit dans le message de
news:




47b5b5b3$0$845$
Merci Fabien, mais avec ce code il me dit "il y est" quelle que
soit







la
saisie..
Je me suis mal expliqué :
ex :si j'ai déjà un client qui s'appelle 'dupont' dans ce champ
dans







ma
table, au moment ou je finis la saisie, si je saisis un autre
"dupont'





je
voudrais qu'il me dise "il y est" sinon qu'il m'autorise à la
saisie...





Merci d'avance

"Fabien" a écrit dans le message de
news:





47b58dfc$0$891$
Bonjour,
Dans un sous formulaire de saisie, en fin de saisie d'un champ
texte







"stagiaire", je souhaite verifier dans la table de destination si
cette





saisie existe déjà et envoyer un message de confirmation/abandon,
pour





maitriser si on veut un doublon...

Ce sous formulaire est lié à un formulaire qui contient un champ
"stage"
de


la table convention liée à la table stagiaire
Le plus serait d'afficher ce champ stage auquel est rattachée la
saisie





que
l'on veut effectuer...n

Merci d'avance
Sylvere


Re,

dans l'événement after_update de ton champ tu fais
If dcount ("*","latable","lecritere")>0 then Msgbox "Il y est !!!"
else




Msgbox "Il y est pas !!!"
@+
Tu as mis quoi a la place de "lecritere" dans If dcount


("*","latable","lecritere") ?
Sur ma base de test un champ code

Private Sub code_AfterUpdate()
If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est on abandonne ?", vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub
Salut,


Lundi matin et les yeux pas en face des trous ;-)
Suis pas sûr d'avoir tous pigé.
Avec un dlookup("[Libelle Stage]","Table1","[Code]='" & me.Code & "'")
tu peux reccuperer ton intitulé de stage ou du moins l'un des intitulé.
S'il y en a plusieurs faut faire autrement.
If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est on abandonne ?", vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub


Devient

If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est Pour l'intitulé " & dlookup("[Libelle
Stage]","Table1","[Code]='" & me.Code & "'") & " On abandone ? " ,
vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub


Bonjour

Ne m'ayant pas indiqué le message d'erreur, je suppose que c'est sur le
dcount("*","catalogue","[No_Stage]=" & me.no_convention)>=1 parce que si
No_Stage est numérique il ne faut pas de ' pour encadrer me.No_convention
Courage on va y arriver ;-)
@+



Salut

Peux tu me passer via cjoint.com un extrait de ta base avec le
formulaire en panne ?
PS : C'est And DCount("*", "catalogue", "[no_stage] = " &
Me.no_convention) > 0 qu'il faut écrire dans ton test

@+










Avatar
sylvere
Bonjour Fabien,
Je t'adresse une copie du fichier zippé, pour qu'il tienne
Pour t'aider à t'y retrouver dans mon fouillis :
Le sous formulaire concerné est S_F_ convention, et le champ avec le code :
"nom_stagiaire"
Le formulaire principal : F_convention
http://cjoint.com/?cujuhfCxWa
J'espere que tu t'y retrouveras dans ce fouillis de bidouilleur...
Bon courage





"Fabien" a écrit dans le message de news:
47bbda6f$0$892$
Salut Fabien,
J'ai pris ta réponse sur le tard..
Je teste à nouveau mon code, pas de message d'erreur sauf qu'il me
renvoie


toujours le premier stage de ma table catalogue quel que soit le
stagiaire


repéré, et qui est effectivement dans un autre stage???
je te renvoie un bout du code qui génére cette erreur :
If DCount("*", "stagiaire", "[nom_stagiaire]='" & Me.nom_stagiaire &
"'") >


0
And DCount("*", "catalogue", "[no_stage] = " & Me.no_convention) Then
If MsgBox("Il y est Pour l'intitulé " & DLookup("[intitule]",
"catalogue",


"[nom_stagiaire]='" & Me.nom_stagiaire & "'")
& " On abandone ? ", vbYesNo) = vbYes Then
Me.Undo
End If
End If

Merci pour l'encouragement



"Fabien" a écrit dans le message de news:
47baa4f4$0$891$
Bonjour fabien,

Merci pour l'assistance..
J'ai repris ton code, mais ça m'indiquait invariablement le premier
intitulé


de mon catalogue.
Alors j'ai bricolé la syntaxe et ça coince :
Je lui dis en gaulois :
si tu trouves [nom_stagiaire] dans la table "stagiaire" = à
me.nom_stagiaire de mon sous formulaire
ET que tu trouves [no_stage] dans la table "catalogue = à
me.no_convention


de mon formulaire principal, àlors renvoie l'intitulé du catalogue
correspondant.
(formulaire principal se référe à une table "convention" qui est en
relation


avec la table "catalogue, par le champ no_convention et le champ
no_stage de


la table catalogue
Je te joins ci dessous mon essai. Je conçois que ça devient bien
compliqué à


ce stade., et peut être difficile à comprendre à distance..
Dans tous les cas, merci pour l'accompagnement




If DCount("*", "stagiaire", "[nom_stagiaire]='" & Me.nom_stagiaire &
"'")




1 And DCount("*", "catalogue", "[no_stage] = " & Me.no_convention )>=1
Then


If MsgBox("Il y est Pour l'intitulé " & DLookup("[intitule]",
"catalogue",

'"[nom_stagiaire]='" & Me.nom_stagiaire & "'") & " On abandone ? ",
vbYesNo) = vbYes Then
Me.Undo
End If
End If

"Fabien" a écrit dans le message de
news:




47b93ac8$0$858$
Merci Fabien,
Ca fonctionne très bien.
Mais... un petit plus d'affichage, peut être si c'est possible...
Ce formulaire ou je place mon test, est un sous formulaire d'un
formulaire


appelé convention.
(le sous formulaire est attaché à la table "stagiaire" , le
formulaire




à la
table "convention"
les deux tables sont en relation de un à plusieurs entre convention
et






stagaire par un champ "no_stagiaire".
(une convention = plusieurs stagiaires.
Serait il possible en plus d'afficher "il y est on abandonne
oui/non"






d'avoir "il est déja saisi pour l'intitulé... (ex :"traitement de
texte") on


abandonne oui/non" , intitulé de stage de la table convention
correspondant


au nom
la vérif de l'utilisation précédente de ce nom renvoyant le nom de
l'intitulé dans la table convention correspondant à ce nom
J'espère être clair??
Merci déjà à ce stade..


"Fabien" a écrit dans le message de
news:




47b5b5b3$0$845$
Merci Fabien, mais avec ce code il me dit "il y est" quelle que
soit







la
saisie..
Je me suis mal expliqué :
ex :si j'ai déjà un client qui s'appelle 'dupont' dans ce champ
dans







ma
table, au moment ou je finis la saisie, si je saisis un autre
"dupont'





je
voudrais qu'il me dise "il y est" sinon qu'il m'autorise à la
saisie...





Merci d'avance

"Fabien" a écrit dans le message de
news:





47b58dfc$0$891$
Bonjour,
Dans un sous formulaire de saisie, en fin de saisie d'un champ
texte







"stagiaire", je souhaite verifier dans la table de destination
si











cette
saisie existe déjà et envoyer un message de
confirmation/abandon,











pour
maitriser si on veut un doublon...

Ce sous formulaire est lié à un formulaire qui contient un
champ











"stage"
de


la table convention liée à la table stagiaire
Le plus serait d'afficher ce champ stage auquel est rattachée
la











saisie
que
l'on veut effectuer...n

Merci d'avance
Sylvere


Re,

dans l'événement after_update de ton champ tu fais
If dcount ("*","latable","lecritere")>0 then Msgbox "Il y est
!!!"










else
Msgbox "Il y est pas !!!"
@+
Tu as mis quoi a la place de "lecritere" dans If dcount


("*","latable","lecritere") ?
Sur ma base de test un champ code

Private Sub code_AfterUpdate()
If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est on abandonne ?", vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub
Salut,


Lundi matin et les yeux pas en face des trous ;-)
Suis pas sûr d'avoir tous pigé.
Avec un dlookup("[Libelle Stage]","Table1","[Code]='" & me.Code &
"'")





tu peux reccuperer ton intitulé de stage ou du moins l'un des
intitulé.





S'il y en a plusieurs faut faire autrement.
If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est on abandonne ?", vbYesNo) = vbYes
Then







Me.Undo
End If
End If
End Sub


Devient

If DCount("*", "Table1", "[Code]='" & Me.code & "'") > 1 Then
If MsgBox("Il y est Pour l'intitulé " & dlookup("[Libelle
Stage]","Table1","[Code]='" & me.Code & "'") & " On abandone ? " ,
vbYesNo) = vbYes Then
Me.Undo
End If
End If
End Sub


Bonjour

Ne m'ayant pas indiqué le message d'erreur, je suppose que c'est sur le
dcount("*","catalogue","[No_Stage]=" & me.no_convention)>=1 parce que
si



No_Stage est numérique il ne faut pas de ' pour encadrer
me.No_convention



Courage on va y arriver ;-)
@+



Salut

Peux tu me passer via cjoint.com un extrait de ta base avec le
formulaire en panne ?
PS : C'est And DCount("*", "catalogue", "[no_stage] = " &
Me.no_convention) > 0 qu'il faut écrire dans ton test

@+












Avatar
Fabien
?????
Comment pourrais t il retrouver dans catalogue l'intitulé du stage par
le nom du stagiaire ?
Tu n'as pas cette donnée dans la table catalogue.
Donc ton dlookup("[Intitule]","Catalogue","[Nom_Stagiaire]='" &
me.nom_stagiaire & "'") ne te remonte rien de cohérent.

En revanche si tu créé une requete
SELECT stagiaire.nom_stagiaire, catalogue.intitule
FROM catalogue INNER JOIN (convention INNER JOIN stagiaire ON
convention.no_convention = stagiaire.no_convention) ON
catalogue.no_stage = convention.no_stage
;
Que tu l'appel R_Liste_stages_par_stagiaires
et que tu fais ton Dlookup(
"[Intitule]","R_Liste_stages_par_stagiaires","[Nom_Stagiaire]='" &
me.nom_stagiaire & "'")
Il doit te remonter le premier intitulé.

http://cjoint.com/?culhM5FwgB

@+
Avatar
sylvere
Merci Fabien,
Ca fonctionne, comme je le souhaitais.
Merci pour la patience et la disponibilité
A plus tard peut être pour une autre embrouille sur Access
A+
"Fabien" a écrit dans le message de news:
47bbfc27$0$898$
?????
Comment pourrais t il retrouver dans catalogue l'intitulé du stage par
le nom du stagiaire ?
Tu n'as pas cette donnée dans la table catalogue.
Donc ton dlookup("[Intitule]","Catalogue","[Nom_Stagiaire]='" &
me.nom_stagiaire & "'") ne te remonte rien de cohérent.

En revanche si tu créé une requete
SELECT stagiaire.nom_stagiaire, catalogue.intitule
FROM catalogue INNER JOIN (convention INNER JOIN stagiaire ON
convention.no_convention = stagiaire.no_convention) ON
catalogue.no_stage = convention.no_stage
;
Que tu l'appel R_Liste_stages_par_stagiaires
et que tu fais ton Dlookup(
"[Intitule]","R_Liste_stages_par_stagiaires","[Nom_Stagiaire]='" &
me.nom_stagiaire & "'")
Il doit te remonter le premier intitulé.

http://cjoint.com/?culhM5FwgB

@+


1 2