|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Liaison Table / Combos en cascade |
Débuté par David, 21 jan. 2020 15:33 - 24 réponses |
| |
| | | |
|
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 21 janvier 2020 - 15:33 |
Bonjour
J'ai un problème de liaison entre une Table sur une fenêtre et des combos sur une autre fenêtre.
Je sélectionne une ligne dans ma table et je clic sur un bouton "modifier" ce qui m’amène à une autre fenêtre pour modifier ma fiche. Jusqu’à maintenant, il n'y avait pas de problème car j'avais des Champs de saisie dans cette fenêtre.
J'ai remplacé ces champs de saisie par des combos alimentés par des requêtes.
Tout fonctionne parfaitement sur les Combos alimentés par une Requête simple.
Le problème vient des 3 Combos en cascade (Département, Ville, Adresse) Je récupère bien dans le Combo "Département" mais pas dans les 2 autres.
Merci de votre éclairage !
David |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 22 janvier 2020 - 09:59 |
Bonjour, Tes combos sont-ils bien reliés à quelque chose ? (option liaison dans ton champ colonne) La requête a-t-elle été ré exécutée après la modif TableAffiche a-t-il été utilisé
Ce sont les 3 cas les plus courants
-- Il y a peut être plus simple, mais, ça tourneMessage modifié, 22 janvier 2020 - 10:03 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 10:29 |
Bonjour Voroltinquo
Mes 3 Combos sont reliés à mon fichier BDAtelier (liaison) Combo_Département relié à BD_Atelier==>Département Combo_Ville relié à BD_Atelier==>Ville Combo_Adresse relié à BD_Atelier==>Adresse
et dans la rubrique "contenu" il y a la requête de chaque combo.
Mes 3 requêtes fonctionnent bien en mode test
Le code de mon bouton "modifier" est
SI TableSelect(TABLE_BDAteliers)=-1 ALORS RETOUR
Ouvre(FEN_TABLEAJOUTAteliers)
TableAffiche(TABLE_BDAteliers,taCourantEnreg)
Merci de l'aide apportée |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 22 janvier 2020 - 11:09 |
David a écrit :
Mes 3 requêtes fonctionnent bien en mode test
Elles ont beau fonctionner en mode test, si tu ne les exécutes pas, tu as des problèmes En fonction du mode de remplissage de ton champ table :
REQ_RequêteRemplissage.pParam1=ValeurParamètre1 ... REQ_RequêteRemplissage.pParamn=ValeurParamètren HExécuteRequête(REQ_RequêteRemplissage) TableAffiche(TABLE_TableRemplieParRequête)
ou
REQ_RequêteRemplissage.pParam1=ValeurParamètre1 ... REQ_RequêteRemplissage.pParamn=ValeurParamètren TableAffiche(TABLE_TableRemplieParRequête,taRéExécuteRequete)
-- Il y a peut être plus simple, mais, ça tourneMessage modifié, 22 janvier 2020 - 11:10 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 12:21 |
Merci mais je suis perdu !
SI TableSelect(TABLE_BDAteliers)=-1 ALORS RETOUR
Ouvre(FEN_AJOUTAteliers)
REQ_DEPARTEMENT=TABLE_BDAteliers.COL_DEPARTEMENT,taCourantEnreg) REQ_VILLE.pExtraitVille=TABLE_BDAteliers.COL_VILLE,taCourantEnreg) REQ_ADRESSE.pExtraitAdresse=TABLE_BDAteliers.COL_ADRESSE,taCourantEnreg)
HExécuteRequête(REQ_DEPARTEMENT) HExécuteRequête(REQ_VILLE) HExécuteRequête(REQ_ADRESSE)
TableAffiche(TABLE_BDAteliers.COL_DEPARTEMENT,taCourantEnreg) TableAffiche(TABLE_BDAteliers.COL_VILLE,taCourantEnreg) TableAffiche(TABLE_BDAteliers.COL_ADRESSE,taCourantEnreg)
Ma table est remplie par "contenu"==>"Fichier parcouru"==>BD_Ateliers |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 22 janvier 2020 - 12:53 |
Peut on avoir une copie écran de ton analyse ? Le code des requêtes qui alimentent les combos ? Ce que tu veux obtenir et ce que tu obtiens réellement ? Tout est en amont et non lors de l'affichage.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 14:51 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 15:00 |
Combo DEPARTEMENT
REQ_VILLE.pExtraitVille=COMBO_DEPARTEMENT..Valeur HExécuteRequête(REQ_VILLE) ListeAffiche(COMBO_VILLE)
Combo VILLE
REQ_ADRESSE.pExtraitAdresse=COMBO_VILLE..Valeur HExécuteRequête(REQ_ADRESSE) ListeAffiche(COMBO_ADRESSE)
Pas de code pour COMBO ADRESSE |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 15:07 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 15:21 |
Impossible d'envoyer le résultat obtenu (problème upload)
Sur une autre feuille 3 Combos. Il n'y a que le Combo Département qui reçois |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 22 janvier 2020 - 22:17 |
Dans un premier temps il n'y a pas de liaison, dans un deuxième temps il y a des redondances, l'adresse n'a rien faire dans la ville. Si on a la ville, on a le département, mais ils ne doivent pas être dans la même table. Dans ta table Département, tu ne dois avoir que la colonne département ainsi que son n° qui pourra servir de PK. Dans au niveau de la ville tu dois avoir le nom de la ville et son CP, éventuellement relié au département, enfin au niveau de la table Atelier, la ville et le département sont inutiles, ils sont remplacés par la liaison Ville-Atelier
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 22 janvier 2020 - 23:01 |
Merci de l'aide mais trop compliqué pour moi à ce jour. Je vais remettre mes champs de saisie. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 24 janvier 2020 - 14:30 |
Re à tous !
Je me suis remis sur ce cas car j'aimerais vraiment comprendre ce problème. J'ai donc créé un nouveau projet "Essais" et je met ci-dessous tout les éléments !
Pour le Bouton "Nouveau" Tout fonctionne parfaitement
Pour le Bouton "Modifier" Après avoir sélectionné un élément dans la Table et cliqué sur "Modifier Il n'y a QUE la Combo "DEPARTEMENT" qui est remplie avec la bonne valeur. Les autres Combos sont vides.
J'aimerais que les 3 Combos soit remplies et que je puisse changer si besoin
Merci de l'éclairage apportée.
David
Dans la première fenêtre "FEN_TABLEATELIERS"
- Une Table "TABLE_BDAteliers" avec remplissage par fichier "BD_Ateliers" Rubrique mémorisée et Rubrique de parcours sur "ID-Ateliers"
FichierVersEcran()
- Un bouton "Nouveau"
FEN_TABLEATELIERS..Visible=Faux
HRAZ(BD_Ateliers) SI Ouvre(FEN_AJOUTAteliers) ALORS TableAffiche(TABLE_BDAteliers,taCourantPremier) FIN
- Un bouton "Modifier"
FEN_TABLEATELIERS..Visible=Faux SI TableSelect(TABLE_BDAteliers)=-1 ALORS RETOUR Ouvre(FEN_AJOUTAteliers)
Dans ma deuxième fenêtre
FichierVersEcran() MaFenêtre..ValeurRenvoyée = Faux SI BD_Ateliers..NouvelEnregistrement = Vrai ALORS
BTN_Modifier..Libellé = "Valider" COMBO_VILLE..Visible=Faux COMBO_ADRESSE..Visible=Faux FIN
- un Combo "COMBO_DEPARTEMENT"
REQ_EXTRAIRE_VILLE.pExtraitVille=COMBO_DEPARTEMENT..Valeur HExécuteRequête(REQ_EXTRAIRE_VILLE) ListeAffiche(COMBO_VILLE)
COMBO_VILLE..Visible=Vrai ComboOuvre(COMBO_VILLE)
Liaison ==> MonoFichier==>Analyse==>"BD-Ateliers"==>"DEPARTEMENT" Contenu ==> Fichier/Requête ==> Accès direct ==>Fichier parcouru "REQ_DEPARTEMENT" ==> Rubrique Affichée et mémorisée "DEPARTEMENT"
- un Combo "COMBO_VILLE"
REQ_EXTRAIRE_ADRESSE.pExtraitAdresse=COMBO_VILLE..Valeur HExécuteRequête(REQ_EXTRAIRE_ADRESSE) ListeAffiche(COMBO_ADRESSE)
COMBO_ADRESSE..Visible=Vrai ComboOuvre(COMBO_ADRESSE)
Liaison ==> MonoFichier==>Analyse==>"BD-Ateliers"==>"VILLE" Contenu ==> Fichier/Requête ==> Accès direct ==>Fichier parcouru "REQ_EXTRAIRE_VILLE" ==> Rubrique Affichée et mémorisée "VILLE"
- un Combo "COMBO_ADRESSE" (Pas de code dans ce Combo")
Liaison ==> MonoFichier==>Analyse==>"BD-Ateliers"==>"ADRESSE" Contenu ==> Fichier/Requête ==> Accès direct ==>Fichier parcouru "REQ_EXTRAIRE_ADRESSE" ==> Rubrique Affichée et mémorisée "ADRESSE"
- un bouton "BTN_Modifier"
EcranVersFichier() SI BD_Ateliers..NouvelEnregistrement = Vrai ALORS HAjoute(BD_Ateliers) SINON HModifie(BD_Ateliers) FIN
FEN_TABLEATELIERS..Visible=Vrai
Ferme("",Vrai)
REQ-DEPARTEMENT
SELECT DISTINCT BD_Départements_Villes_Adresses.DEPARTEMENT AS DEPARTEMENT FROM BD_Départements_Villes_Adresses ORDER BY DEPARTEMENT ASC
REQ_EXTRAIRE_VILLE
SELECT DISTINCT BD_Départements_Villes_Adresses.VILLE AS VILLE FROM BD_Départements_Villes_Adresses WHERE BD_Départements_Villes_Adresses.DEPARTEMENT = {pExtraitVille} ORDER BY VILLE ASC
REQ_EXTRAIRE_ADRESSE
SELECT DISTINCT BD_Départements_Villes_Adresses.ADRESSE AS ADRESSE FROM BD_Départements_Villes_Adresses WHERE BD_Départements_Villes_Adresses.VILLE = {pExtraitAdresse} ORDER BY ADRESSE ASC Message modifié, 24 janvier 2020 - 14:38 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 24 janvier 2020 - 14:37 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 25 janvier 2020 - 14:18 |
Bonjour Voroltinquo
J'ai regardé cette démo
Elle semble ressembler à ma demande et à ton explication !
Pour mon projet :
Je vais avoir qu'une dizaine de département et 3 ou 4 villes par département et 2 ou 3 adresses par ville.
Il faut donc que je commence par créer des fichiers reliés mais je ne vois pas qu'elles rubriques mettre et combien de fichiers.
Et si j'enlève certaines rubriques de mon fichier BD_Atelier, je vais perdre des informations déjà enregistrées (200) ?
Bref j'ose pas trop car j'ai peur de m'aventurer sur un terrain glissant !
Sinon actuellement tout fonctionne sauf l'affichage de la ville et Adresse en mode Modification à cause de la requête !
Merci de l'éclairage
DavidMessage modifié, 25 janvier 2020 - 14:19 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 26 janvier 2020 - 19:25 |
Voroltinquo a écrit :
Dans un premier temps il n'y a pas de liaison, dans un deuxième temps il y a des redondances, l'adresse n'a rien faire dans la ville. Si on a la ville, on a le département, mais ils ne doivent pas être dans la même table. Dans ta table Département, tu ne dois avoir que la colonne département ainsi que son n° qui pourra servir de PK. Dans au niveau de la ville tu dois avoir le nom de la ville et son CP, éventuellement relié au département, enfin au niveau de la table Atelier, la ville et le département sont inutiles, ils sont remplacés par la liaison Ville-Atelier
Bonjour
Toujours dans la panades avec ce sujet. J'essai plein de chose depuis 2 jours mais j'avance pas. Avec les liaisons ci-dessus, je démarre bien ? Dans un premier temps, la finalité c'est de faire apparaître dans une Table à 4 colonnes, le nom de l'Atelier, le Département, la ville, l'adresse.
Si je peux avoir de l'aide, pas à pas !
Encore merci David |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 27 janvier 2020 - 00:33 |
Je ne comprend pas pourquoi 3 combos. En France, une fois qu'on a la ville on a le département. Quant au adresses, il va falloir répertorier toutes les adresses (certainement via le fichier FANTOIR https://www.collectivites-locales.gouv.fr/mise-a-disposition-gratuite-fichier-des-voies-et-des-lieux-dits-fantoir.) A l'utilisation ça devient : Je sélectionne mon département qui fait une requête pour aliment la combo ville avec toutes les ville du département, je choisis ma ville qui effectue une requête pour trouver toutes les adresse de la ville. A programmer c'est simple, pour l'utilisateur un peu moins
En supposant que tu veuiiles quand même partir par là, Adresse n'a pas à être liée a département. Qui plus est, ville ne doit pas apparaître dans adresse, simplement la FK c'est le B.A BA des BDD ça.
-- Il y a peut être plus simple, mais, ça tourneMessage modifié, 27 janvier 2020 - 00:44 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 27 janvier 2020 - 05:43 |
Bonjour. Merci de la réponse. > Je ne comprend pas pourquoi 3 combos. En France, une fois qu'on a la ville on a le département. L'utilisateur ne connaissant ni la ville, et encore moins l'adresse, il commencera par choisir le département dans Combo_Département, puis choisira la ville dans le Combo_Ville et choisira enfin l'adresse dans le Combo_Adresse. (Combos en cascade pour filtrer une table à 4 Colonnes)
Quant au adresses, il va falloir répertorier toutes les adresses via le fichier FANTOIR... Il n'y aura que une ou deux adresses (3 maxi) dans chaque ville.
> A l'utilisation ça devient : Je sélectionne mon département qui fait une requête pour aliment la combo ville avec toutes les ville du département, je choisis ma ville qui effectue une requête pour trouver toutes les adresse de la ville. A programmer c'est simple, pour l'utilisateur un peu moins J'ai réussi (avec bien du mal) à le programmer aussi bien en programmation qu'avec des requêtes. Justement je ne vois toujours pas qu'elle méthode je dois garder ! ??
En supposant que tu veuilles quand même partir par là, Adresse n'a pas à être liée a département. Qui plus est, ville ne doit pas apparaître dans adresse, simplement la FK c'est le B.A BA des BDD ça. Je vais modifier mais si j'ai bien compris, les liaisons servent au moment des créations...Je ne peux pas créer une adresse si j'ai pas la ville. Je ne peux pas créer une ville, si j'ai pas le Département. Et à créer un FK.
Toujours est-il que je suis proche de résultat final puisque comme j'ai noté plus haut : > Sinon actuellement tout fonctionne sauf l'affichage de la ville et Adresse en mode "MODIFICATION" à cause de la requête ! J'ai donc essayé la méthode par programmation, mais rien ni fait. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 27 janvier 2020 - 07:07 |
Détaille un peu le fonctionnement s'il te plait, je ne vois pas la logique. Nous sommes bien dans une fenêtre de saisie d'information destinées à être enregistrées et non pas dans une fenêtre de recherche Comment définis-tu une adresse ? Pour moi, c'est un nom de voie, un type de voie et le numéro de l'immeuble dans cette voie (e.g. 123 rue de l'église) -- Il y a peut être plus simple, mais, ça tourneMessage modifié, 27 janvier 2020 - 07:34 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 27 janvier 2020 - 15:31 |
Re
Détaille un peu le fonctionnement s'il te plait, je ne vois pas la logique. Nous sommes bien dans une fenêtre de saisie d'information destinées à être enregistrées et non pas dans une fenêtre de recherche
Sur une Feuille, après avoir sélectionné un élément dans la Table et cliqué sur "Modifier" j'arrive dans une deuxième fenêtre de saisie avec Champs de saisie et Combos. Pour mon problème, en mode "Modification" les 3 combos devrait être déjà remplis mais l'utilisateur pourrait avoir le choix de sélectionner un autre Département==>Ville==>Adresse (Combo en cascade par requête) et clic sur bouton "modifié" et retour sur la fenêtre Table.
> Comment définis-tu une adresse ? Pour moi, c'est un nom de voie, un type de voie et le numéro de l'immeuble dans cette voie (e.g. 123 rue de l'église) Une adresse simple : ex "12 rue de l'église" |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 27 janvier 2020 - 15:39 |
J’obtiens ce résultat dans la fenêtre saisie. 2 combos ne sont pas remplis à cause des requêtes Combos en cascade je pense ! La fenêtre Table et le code sont sur un sujet plus haut
Merci beaucoup. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 31 janvier 2020 - 10:43 |
Ton problème d'affichage vient des liaisons entre tes champs et tes données. Dans un premier temps revenons au MLD.
La table "Ville" (déjà remplie) peut être importée via l'exemple complet CRM. La clé étrangère ne figure pas dans la table de l'exemple, il est néanmoins aisé de compléter cette colonne via les codes suivants :
Procedure AffecterDpt_Batch() POUR TOUTE Ville SI PAS AffecterDpt(Vrai) ALORS Erreur(HErreurInfo) SINON Info("L'affectation s'est bien déroulée") FIN FIN
FONCTION AffecterDpt(bBatch est un booléen) :booléen sNoDpt est chaîne
sNoDpt=Gauche(Ville.NDX_CodePostal,2) SI sNoDpt="97" ALORS sNoDpt=Gauche(Ville.NDX_CodePostal,3) FIN
SI PAS HLitRecherchePremier(Departement,PK_NoDépartement,sNoDpt) ALORS SI PAS HErreur() ALORS HRAZ(Departement) Departement.PK_NoDépartement=sNoDpt SI PAS bBatch ALORS Saisie("Quel est le nom du département?",Departement.AK_NomDepartement) SINON Departement.AK_NomDepartement="Département n° "+sNoDpt FIN SI PAS HAjoute(Departement) ALORS RENVOYER Faux FIN SINON RENVOYER Faux FIN FIN
Ville.FK_Département=sNoDpt SI HModifie(Ville) ALORS RENVOYER Vrai SINON RENVOYER Faux FIN
Passons maintenant aux liaisons. Les valeurs mémorisées des combos sont les différentes PK.
Les combos "Ville" et "Adresse" seront reliés à leur FK dans la table "Localisation". En ce qui concerne le département, il faut utiliser l'option "Multi fichier"
1-Colonne à laquelle le champ est relié 2-3 Relation entre les 2 tables
Le code d'initialisation de la fenêtre est on ne peut plus classique
Procedure FEN_Atelier(gn8NoAtelier est entier sur 8=0) ModeAffichageFenêtre(gn8NoAtelier) FichierVersEcran()
Procedure ModeAffichageFenêtre(n8AtelierCherché est entier sur 8) SI PAS HLitRecherchePremier(Atelier,PK_Atelier,n8AtelierCherché) ALORS HRAZ(Atelier) SI n8AtelierCherché<>0 ALORS ToastAffiche("Atelier non trouvé"+CRLF+"Passage en mode création") FIN SINON HLitRecherche(Localisation,PK_Localisation,Atelier.FK_Localisation) FIN
Pour une ouverture en mode modification, il suffit de passer PK_Atelier en paramètre -- Il y a peut être plus simple, mais, ça tourneMessage modifié, 31 janvier 2020 - 10:45 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 31 janvier 2020 - 20:07 |
Bonjour Voroltinquo
Merci pour les explications bien détaillées. Je vais créer un nouveau projet pour essayer et comprendre !
David |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 887 messages Popularité : +227 (347 votes) |
|
Posté le 02 février 2020 - 11:44 |
En parlant de comprendre, je ne comprend toujours pas l'utilité de gérer les adresses. A moins d'avoir une dizaine d'ateliers par adresse ... et encore
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 66 messages Popularité : +0 (2 votes) |
|
Posté le 02 février 2020 - 19:37 |
Bonjour Il y a bien une dizaine d'Ateliers pour une même adresse.
Je n'ai pas encore eu le temps ce WE de créer un projet essai. Je m'y met des que je peux Merci David |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|