|
Home → WINDEV 2024 → Fenetre avec onglet > alimenter 2 tables > problème de cardinalité. |
Fenetre avec onglet > alimenter 2 tables > problème de cardinalité. |
Started by Sh1v4, Mar., 22 2024 3:16 PM - 9 replies |
| |
| | | |
|
| |
Registered member 32 messages |
|
Posted on March, 22 2024 - 3:16 PM |
Bonjour,
J'ai 2 tables
Fiche Suivi
Liaison 0,1 > 1,1
Une fenêtre avec onglet (fiche : nom, prénom etc, et un onglet suivi) Dès que je rempli des champs de suivi, que ce soit en création ou modification, j'ai une erreur de cardinalité.
J'utilise HEnregistre(Fiche) et HEnregistre(Suivi)
Si vous aviez un exemple, car je ne trouve rien dans ce sens. Et plus ça va, moins je comprends. |
| |
| |
| | | |
|
| | |
| |
Registered member 328 messages Popularité : +8 (10 votes) |
|
Posted on March, 22 2024 - 3:34 PM |
Bonjour
si tu as des erreurs de cardinalité, il y a deux possibilités :
- soit elles sont mal renseignées dans ton analyse - soit tu enregistres "mal" tes données
tu peux essayer d'ajouter la constant ignoreintégrité lorsque tu enregistre mais comme son nom l'indique tu perds la vérification faite. |
| |
| |
| | | |
|
| | |
| |
Registered member 32 messages |
|
Posted on March, 22 2024 - 4:37 PM |
Merci pour ton message. C'est pour cela que je cherche un exemple d'insertion de donnée dans 2 tables car je ne comprends pas mon erreur. Si j'enregistre uniquement dans fiche, cela fonctionne, si je rajoute Suivi, = erreur. Je continue de chercher. |
| |
| |
| | | |
|
| | |
| |
Registered member 328 messages Popularité : +8 (10 votes) |
|
Posted on March, 22 2024 - 4:40 PM |
Quand tu as des liaisons tu dois faire de la façon suivante :
Enregistrer fiche Affecter l'ID de l'enregistrement de fiche à ton ou tes enregistrement de suivis puis enregistrer le ou les suivis |
| |
| |
| | | |
|
| | |
| |
Registered member 3,892 messages Popularité : +227 (347 votes) |
|
Posted on March, 22 2024 - 5:42 PM |
Bonjour, D'après les cardinalité que tu nous donnes Fiche (0,1)->(1,1)Suivi, un suivi ne peut être créé que s'il y a une fiche auparavant.
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 32 messages |
|
Posted on March, 25 2024 - 9:17 AM |
Voroltinquo > Effectivement c'est bien cela. Je pense que je ne comprends pas bien le fonctionnement, je suis en train de reprendre les bases.
J'ai déjà ma fiche qui est crée, et je veux la modifier en ajoutant des données dans les 2 tables en même temps. Mais dès que je rempli un champ qui doit aller sur la table suivi, j'ai une erreur.
Dans mon bouton j'ai simplement :
EcranVersFichier()
HAjoute(Fiche) HAjoute(Suivi_equipe_mobile)
Et je me retrouve avec cette erreur
Que s'est-il passé ? Erreur renvoyée par le serveur : Erreur d'intégrité. Les cardinalités côté clé étrangère (1,1) entre les rubriques <fiche.idfiche> ET <suivi_equipe_mobile.idfiche> ne sont pas respectées.
Code Erreur : 70015 Niveau : Erreur Non fatale Code Erreur WD55 : 15
Module : WDHFSRV64.DLL (01F260101d - 29.0.204.8)
Informations de débogage : IEWDHFSRV=137.5 Module=<WDHFSRV> Informations supplémentaires : EIT_TYPE_WDFILE : <0> EIT_IDCODE : <-1> EIT_LOGICALTABLENAME : <Suivi_equipe_mobile> EIT_ITEMNAME : <IDFiche> EIT_LINKNAME : <Contrainte_Fiche_Suivi_equipe_mobile>
Pourriez-vous m'indiquer ce que je dois revoir dans les tutos, ou si je dois partir directement sur 2 requêtes avec déclaration de variable ?Message modified, March, 25 2024 - 9:18 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 3,892 messages Popularité : +227 (347 votes) |
|
Posted on March, 25 2024 - 10:16 AM |
Tu n'initialises pas la valeur de la FK de Fiche dans Suivi. Pour le SGBD, ton tuple dans Suivi n'est donc relié à rien. Ce qui est en contradiction avec le premier 1 de (1,1) Le code devrait ressembler à celà :
EcranVersFichier()
HAjoute(Fiche)
Suivi_equipe_mobile.FK_Fiche=Fiche.PK_Fiche
HAjoute(Suivi_equipe_mobile)
Par contre attention à HEnregistre, il ne déclenche pas les triggers
-- Il y a peut être plus simple, mais, ça tourneMessage modified, March, 25 2024 - 10:20 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 32 messages |
|
Posted on March, 25 2024 - 11:12 AM |
Merci beaucoup. Je commence à comprendre. j'ai testé ton code directement et cela fonctionne mais crée un fiche à chaque modification.
J'ai modifier pour tester
EcranVersFichier()
HModifie (Fiche)
Suivi_equipe_mobile.IDFiche=Fiche.IDFiche
HModifie(Suivi_equipe_mobile)
Ferme("",Vrai)
J'ai encore quelques soucis suivant si la fiche suivi est crée ou non. Je vais voir pour rajouter des conditions, je pensais que Hajoute vérifiait tout seul si une valeur existait, du coup j'ai juste mis un HModifie car normalement la fiche est déjà crée par importation de fichier Excel. Je vais voir pour rajouter des conditions.Message modified, March, 25 2024 - 11:15 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 32 messages |
|
Posted on March, 25 2024 - 11:17 AM |
Pour Henregistre. Je vais voir tes recommandations sur son utilisation.Message modified, March, 25 2024 - 11:18 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 32 messages |
|
Posted on March, 25 2024 - 5:54 PM |
@ Voroltinquo > En faisant des recherches je suis tombé sur ce post : https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/26724-enregistrer-rubriques-deux-tables-differentes-dans-meme-tableau/read.awp
J'ai continué mes recherches car je suis parti loin, mais loin... J'ai crée un champ qui affiche l'ID dans la fenetre fiche qui permet d'enregistrer et de modifier.
Puis :
Monid est une chaîne
Monid= SAI_ID_fiche_pour_vérif
EcranVersFichier()
HModifie(Fiche)
Suivi_equipe_mobile.IDFiche=Fiche.IDFiche
SI HLitRecherchePremier(Fiche, IDFiche,Monid) ALORS Info("ID présent") HModifie(Suivi_equipe_mobile) SINON Info("ID pas présent, on va créer") HAjoute(Suivi_equipe_mobile) FIN
Ferme("",Vrai)
Mais plus ça va, plus je me complique, et la même pour l'affichage des 2 tables dans les champs d'une même fenêtre. |
| |
| |
| | | |
|
| | | | |
| | |
|