OVH Cloud OVH Cloud

Formulaire optionnel et retour d'info

10 réponses
Avatar
Coyote
Bonjour,

voici la situation, j'ai un formulaire de saisie d'adresse, si l'adresse
existe déjà j'ouvre un 2ème formulaire avec les adresses proches (passage de
la chaine de test dans le where de docmd.openform)

je souhaite, que l'utilisateur choisisse l'adresse qu'il veut récupérer (cas
ou deux personnes habitent à la même adresse ; ex même famille). cette parite
est ok, je réussi a créer un bouton qui lance une requête insert.
Par contre je ne trouve pas comment gérer le cas où l'on veut tout de même
créer une nouvelle adresse (ex cas de personnes habitant un immeuble,
l'adresse est la même)

10 réponses

Avatar
3stone
Salut,

"Coyote"
| voici la situation, j'ai un formulaire de saisie d'adresse, si l'adresse
| existe déjà j'ouvre un 2ème formulaire avec les adresses proches (passage de
| la chaine de test dans le where de docmd.openform)
|
| je souhaite, que l'utilisateur choisisse l'adresse qu'il veut récupérer (cas
| ou deux personnes habitent à la même adresse ; ex même famille). cette parite
| est ok, je réussi a créer un bouton qui lance une requête insert.
| Par contre je ne trouve pas comment gérer le cas où l'on veut tout de même
| créer une nouvelle adresse (ex cas de personnes habitant un immeuble,
| l'adresse est la même)

Si je comprends bien ton système, tu pourrais, sur clic ou double clic, sur
l'enregistrement du second formulaire, envoyer les données dans les zones
de texte ad hoc du premier formulaire.
Au cas ou aucune adresse ne convient, il suffirait de placer un bouton
nommé "Annuller" sur le second formulaire et qui en fait ne ferait
que fermer ce dernier. L'utilisateur devra continuer sa saisie sur le premier.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Coyote
voici la structure simplifiée des tables

personnes
- persi_id

adresses
- adr_id

pers_adr
- pers_id
- adr_id

lorsque j'ouvre le 21ème formulaire je passe dans le "where" les paramêtre
de l'adresse en cours de saisie et dans "openarg" l'id_pers de l'utilisateur
courant.

lorsque je choisi une info dans le 2ème formulaire, je lance une requête qui
insert
dans la table pers_adr les valeurs pers_id (de l'openarg) et adr_id de la
ligne choisie. le lien est donc réalisé.

mon pb :
annuler le début de saisie du formulaire 1 si j'ai choisi une adresse, et
afficher l'adresse choisie.
permettre de continuer la saisie si l'on clic sur un bouton annuler du
formulaire 2.


j'espère avoir été un peuplus clair.

merci d'avance pour votre aide

"3stone" wrote:

Salut,

"Coyote"
| voici la situation, j'ai un formulaire de saisie d'adresse, si l'adresse
| existe déjà j'ouvre un 2ème formulaire avec les adresses proches (passage de
| la chaine de test dans le where de docmd.openform)
|
| je souhaite, que l'utilisateur choisisse l'adresse qu'il veut récupérer (cas
| ou deux personnes habitent à la même adresse ; ex même famille). cette parite
| est ok, je réussi a créer un bouton qui lance une requête insert.
| Par contre je ne trouve pas comment gérer le cas où l'on veut tout de même
| créer une nouvelle adresse (ex cas de personnes habitant un immeuble,
| l'adresse est la même)

Si je comprends bien ton système, tu pourrais, sur clic ou double clic, sur
l'enregistrement du second formulaire, envoyer les données dans les zones
de texte ad hoc du premier formulaire.
Au cas ou aucune adresse ne convient, il suffirait de placer un bouton
nommé "Annuller" sur le second formulaire et qui en fait ne ferait
que fermer ce dernier. L'utilisateur devra continuer sa saisie sur le premier.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"Coyote"
| lorsque j'ouvre le 21ème formulaire je passe dans le "where" les paramêtre
| de l'adresse en cours de saisie et dans "openarg" l'id_pers de l'utilisateur
| courant.
|
| lorsque je choisi une info dans le 2ème formulaire, je lance une requête qui
| insert
| dans la table pers_adr les valeurs pers_id (de l'openarg) et adr_id de la
| ligne choisie. le lien est donc réalisé.
|
| mon pb :
| annuler le début de saisie du formulaire 1 si j'ai choisi une adresse, et
| afficher l'adresse choisie.
| permettre de continuer la saisie si l'on clic sur un bouton annuler du
| formulaire 2.


Pourquoi ne garde tu pas la même démarche dans les deux cas ?
Ce sera nettement plus ergonomique pour l'utilisateur...

Tu ouvre le 2ème formulaire et tu as 2 possibilité :

- Tu choisis un l'enregistrement, mais tu l'envoi dans le premier formulaire

With Forms!Formulaire1
.Adresse = Me.Adresse
.Cpostal = Me.CPostal
.Ville = Me.Ville
End With
DoCmd.Close acForm, Me.Name, acSaveNo

- Tu ne choisis rien et tu clique sur le bouton "Annuller"

DoCmd.Close acForm, Me.Name, acSaveNo

Dans les deux cas, l'utilisateur revient sur le premier formulaire et continue...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Coyote
je souhaite pouvoir faire des publipostages soit par l'id user, soit par l'id
adresse

cette structure me permet d'éviter des doublons d'adresses pour des
personnes de la même famille...

si comme tu le propose, je récupère les infos de l'adresse, je crée
obligatoirement des doublons... il faudrait dans ce cas changer ma struture
de base avec id_pers dans la table adresses...
Avatar
3stone
re,

"Coyote"
| je souhaite pouvoir faire des publipostages soit par l'id user, soit par l'id
| adresse
|
| cette structure me permet d'éviter des doublons d'adresses pour des
| personnes de la même famille...
|
| si comme tu le propose, je récupère les infos de l'adresse, je crée
| obligatoirement des doublons... il faudrait dans ce cas changer ma struture
| de base avec id_pers dans la table adresses...


et si tu les envoie directement dans la table, ce ne sont pas des doublons ???


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Coyote
et si tu les envoie directement dans la table, ce ne sont pas des doublons
???




cf structure:

pers_adr fait le lien entre personnes et adresses....
je ne recopie pas l'intégralité de l'adresse pour des personnes d'une même
famille, je ne fais que créer un lien entre la personne et l'adresse existante

1 personne peut avoir x adresses
et 1 adresse peut correspondre à x personnes

Avatar
3stone
"Coyote"
| pers_adr fait le lien entre personnes et adresses....
| je ne recopie pas l'intégralité de l'adresse pour des personnes d'une même
| famille, je ne fais que créer un lien entre la personne et l'adresse existante
|
| 1 personne peut avoir x adresses
| et 1 adresse peut correspondre à x personnes


dans ce cas, annulle ta saisie dans le form1 et ferme form2

Forms!formr.Undo
Forms!form1.Requery

pour autant que le début de saisie ne soit pas encore sauvé...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Coyote
"3stone" wrote:

dans ce cas, annulle ta saisie dans le form1 et ferme form2

Forms!formr.Undo
Forms!form1.Requery

pour autant que le début de saisie ne soit pas encore sauvé...


c'est bien ce que je tente de faire, malheureusement j'ai le message suivant

"Propriété ou méthode non gérée par cet objet"
pour info la fiche personne contient des onglets,
le formulaire adresse est un sous formulaire placé dans l'un des onglets
et le code vba de test est codé dans le sous formulaire....

voici la lgne de code placée dans le formulaire 2 pour mettre à jour le
formulaire 1
Forms![personne_fiche]![Pers_adresse].Undo
Forms![personne_fiche]![Pers_adresse].Requery

Avatar
3stone
re,

"Coyote"
[...]
| c'est bien ce que je tente de faire, malheureusement j'ai le message suivant
|
| "Propriété ou méthode non gérée par cet objet"
| pour info la fiche personne contient des onglets,
| le formulaire adresse est un sous formulaire placé dans l'un des onglets
| et le code vba de test est codé dans le sous formulaire....
|
| voici la lgne de code placée dans le formulaire 2 pour mettre à jour le
| formulaire 1
| Forms![personne_fiche]![Pers_adresse].Undo
| Forms![personne_fiche]![Pers_adresse].Requery


ainsi :

With Forms!personne_fiche!Pers_adresse
.SetFocus
.Form.Undo
.Form.Requery
End With


Remarques :
- Les boites à onglet n'interviennent pas dans l'adressage
- Les crochets sont inutiles puisque pas d'espace ni de caractères bizarre


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Coyote
Merci pour ton aide...