|
Inicio → WINDEV 2024 → Fenetre avec onglet > alimenter 2 tables > problème de cardinalité. |
Fenetre avec onglet > alimenter 2 tables > problème de cardinalité. |
Iniciado por Sh1v4, 22,mar. 2024 15:16 - 9 respuestas |
| |
| | | |
|
| |
Miembro registrado 32 mensajes |
|
Publicado el 22,marzo 2024 - 15:16 |
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. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 328 mensajes Popularité : +8 (10 votes) |
|
Publicado el 22,marzo 2024 - 15:34 |
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. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 32 mensajes |
|
Publicado el 22,marzo 2024 - 16:37 |
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. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 328 mensajes Popularité : +8 (10 votes) |
|
Publicado el 22,marzo 2024 - 16:40 |
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 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.890 mensajes Popularité : +227 (347 votes) |
|
Publicado el 22,marzo 2024 - 17:42 |
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 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 32 mensajes |
|
Publicado el 25,marzo 2024 - 09:17 |
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 ?Mensaje modificado, 25,marzo 2024 - 09:18 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 3.890 mensajes Popularité : +227 (347 votes) |
|
Publicado el 25,marzo 2024 - 10:16 |
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 tourneMensaje modificado, 25,marzo 2024 - 10:20 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 32 mensajes |
|
Publicado el 25,marzo 2024 - 11:12 |
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.Mensaje modificado, 25,marzo 2024 - 11:15 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 32 mensajes |
|
Publicado el 25,marzo 2024 - 11:17 |
Pour Henregistre. Je vais voir tes recommandations sur son utilisation.Mensaje modificado, 25,marzo 2024 - 11:18 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 32 mensajes |
|
Publicado el 25,marzo 2024 - 17:54 |
@ 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. |
| |
| |
| | | |
|
| | | | |
| | |
|