Voila le message que j'ai en ouvrant ton projet
C'est le genre de message qu'on a quand ça vient d'une version non officielle...
Ou le zip n'est pas bon et des fichiers sont tenus lorsque tu l'as fait.
Voila le message que j'ai en ouvrant ton projet
C'est le genre de message qu'on a quand ça vient d'une version non officielle...
Ou le zip n'est pas bon et des fichiers sont tenus lorsque tu l'as fait.
Philippe,
N'hésitez à lever le pouce si mon aide vous a été utile.
Mince, ne me dis pas que je me suis fait rouler, comment faire alors pour te transmettre mon projet afin de le résoudre ou d'avoir une piste
Il faut utiliser l'option "Restauration de projet" et non utiliser directement le fichier compressé.
J'ai essayé et cela modifie correctement les données.La saisie des données se fait bien, mais ne reste pas en mémoire car lorsque je quitte ma table et que j'y reviens mes données ne sont plus là.
Essayez de restaurer votre projet dans un autre répertoire vide (c'est ce que j'ai fait)
Excusez-moi, la table sur fichier fonctionne, mais pas la requête.
Je crois que c'est normal. Je ne comprends pas ce code :
Ça produit une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TableAffiche(Table_Prévoyance.Nbr_Carence,taCourantBandeau)
De plus, je ne trouve pas "HExécuteRequête" dans votre code.
Génial cela fonctionne super bien, mais pourquoi fallait-il procéder de cette manière … Mystère
Cette fois lorsque je quitte mon projet, les données ont disparues lorsque j'y reviens. Il faut sans doute que je mette un TableAffiche quelque part. Je vais chercher..
Un grand merci à vous, je commençait à désespérer et que j'avais mal programmé
Le type qui t'a vendu sa licence Windev, il t'a envoyé une clé USB orange ?
Ce n'est pas vraiment notre problème, mais c'est par curiosité.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Tu as eu le dongle avec ? (une espèce de clé USB)
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Je pense que le problème vient de là
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LEFT OUTER JOIN Prévoyance ON Ijss.IDIjss = Prévoyance.IDPrévoyance
Prévoyance et Ijss ne sont jamais reliés.
Donc quand le moteur trouve quelque chose qui correspond, c'est un pur hasard (souvent en début de remplissage de base)
Il faut à tout prix reprendre l'analyse, soit en utilisant un héritage soit en utilisant une tripate (table de relation entre Salarié,IjSS et prévoyance)
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Si je comprends bien, il faut que je refasse tout. Mince alors...
Ça fait quand même 2 mois qu'on en parle non ?
Essaye de faire du propre cette fois.
Une analyse ne reflète pas ce qu'on veut voir, mais ce qui est.
Dans ton dictionnaire de données, chaque donnée est affectée à une entité et une seule.
Dans ton cas, IJSS et Prévoyance ont des données différentes mais qui permettent de traiter un Arrêt de travail (mutuellement exclusive ou pas ?), elle lui sont intimement liées
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Ok, je ne demande pas de faire à ma place, mais peux-tu m'aiguiller
Merci beaucoup
Le Post #6 donne une bonne idée de ce qu'il faut faire, si les IJSS et Prévoyance ne sont pas mutuellement exclusive (ou si elles comportent peu de rubriques) on peut se contenter de ArrêtDeTravail (ce sera plus simple à mettre en place pour un novice,) on récupérera IJSS (resp Prévoyance) pour un Arrêt via une requête.
Par ailleurs, ne serait il pas plus agréable pour l'utilisateur de saisir les données concernant les arrêts directement sur la fiche de l'employé, plutôt que sur fenêtre table, qui risque de l'obliger à faire défiler horizontalement les données ?
Comme ça
Ou comme ça
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
ras le bol. C'est ridicule, je sais mais j'y étais presque
Pièce jointe 522162
Tout ce temps passé pour rien, cela ne correspond pas à ma manière de faire, baissé les bras, j'aime bien aller jusqu'au bout des choses
Bonjour,
La nuit porte conseil dit-on, j'ai solutionné mon problème NULL en mettant dans ma requête COALEASE pour tous les champs qui affichaient NULL.
Cela dit, j'ai toujours mon problème concernant la mémorisation de mes saisies. La saisie de mes données dans les champs table se fait parfaitement.
Mais lorsque je quitte mon projet et que j'y reviens, mes saisies ont disparu. Peut-être qu'avec une requête INSERT INTO cela résoudrait tout, qu'en pensez-vous ?
Peut-être avez-vous une autre piste
Merci à tous
Pourquoi me mettre un pouce en bas, ne serait-il pas plus judicieux de me dire pourquoi ca va ou ca ne va pas. Certes voroltinquo m'a donné une autre piste que je n'ai pas encore mis en place, mais je souhaiterais aller jusqu'au bout de mon projet pour voir s'il n'y a pas une solution. Mais bon c'est ainsi...
Que de temps perdu pour éviter d'avoir à ressaisir des données de test, d'autant plus que l’exemple complet "Génération de données" existe encore sous WD 20.
Pour l'instant tu mets des rustines sur une chambre à air poreuse.
Cette analyse devrait te faciliter le travail.
Les 2 PK_FK ne sont pas des ID automatiques mais des entier sur 8. Lors de la création d'un enregistrement, elles prennent la valeur le la PK de "ARRET".
J'ai pris le cas où lJSS et Prévoyance étaient mutuellement exclusif. Une fois ce cas de figure compris, il sera aisé de modifier la mise en place en fonction des besoins.
On voit dans un premier temps que toutes les données nécessaires au traitement de IJSS et Prévoyance sont présente (cadre Rouge et Cyan) sans pour autant se "télescoper".
Les données communes sont dans ARRET, les spécifiques dans leurs tables respectives. La différence se fait grâce à l'énumération NDX_Traitement (inutile si les 2 traitement ne sont pas mutuellement exclusifs)
Comment mettre ça en place simplement en évitant de se compliquer la vie? Tout simplement en utilisant 2 triggers sur la table ARRET, un trigger "avant", qui sera exécuté avant la M.A.J. de la table et un trigger "APRES".
Trigger "AVANT"
Trigger "APRES"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 PROCEDURE TrigArretExclusif_Avant() eTraitement est un ETypeTraitement SELON H.FonctionTrigger CAS "HAjoute" eTraitement=Suivi_des_Arrêts.NDX_Traitement //Vérification du choix du traitement et préparation de l'enregistrement associé //On ne peut pas ajouter cet enregistrement tout de suite car il nécessite l'existence de l'enregistrement de Arrêt SELON Majuscule(eTraitement..Valeur) CAS "IJSS" IJSS.PK_FK_Ijss=Suivi_des_Arrêts.IDSuivi_des_Arrêts CAS "PREVOYANCE" Prevoyance.PK_FK_Prévoyance=Suivi_des_Arrêts.IDSuivi_des_Arrêts AUTRE CAS Erreur("Aucun traitement n'a été sélectionné"+CRLF+"Annulation de l'ajout") H.AFaire="E" //Renvoie une erreur et empêche la création de l'arrêt de travail FIN CAS "HSupprime" //On doit supprimer l'enregistrement associé avant la suppression de l'enregistrement "principal" //Surtout si on n'a pas pris soin de sélectionner la suppression en cascade au niveau de la liaison SELON Majuscule(eTraitement..Valeur) CAS "IJSS" SI HLitRecherche(IJSS,PK_FK_Ijss,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HSupprime(IJSS) FIN CAS "PREVOYANCE" SI HLitRecherche(Prevoyance,PK_FK_Prévoyance,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HSupprime(Prevoyance) FIN FIN CAS "HModifie" //Peut être traité en trigger "APRES"" SELON Majuscule(eTraitement..Valeur) CAS "IJSS" SI HLitRecherche(IJSS,PK_FK_Ijss,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HModifie(IJSS) FIN CAS "PREVOYANCE" SI HLitRecherche(Prevoyance,PK_FK_Prévoyance,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HModifie(Prevoyance) FIN FIN FIN
Il ne nous reste plus qu'à ajouter ces quelques lignes dans le code d'initialisation du projet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 PROCEDURE TrigArretExclusif_Après() eTraitement est ETypeTraitement eTraitement=Suivi_des_Arrêts.NDX_Traitement SELON Majuscule(eTraitement..Valeur) CAS "IJSS" HAjoute(IJSS) CAS "PREVOYANCE" HAjoute(Prevoyance) FIN
La M.A.J. de ARRET entraînera automatiquement la M.A.J. de l'enregistrement d'IJSS ou de Prevoyance associé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 bResTriggerAvant est booléen bResTriggerAprès est booléen bResTriggerAvant=HDecritTrigger("Arret","HAJOUTE,HSUPPRIME,HMODIFIE","TrigArretExclusif_Avant",hTriggerAvant) bResTriggerAprès=HDecritTrigger("Arret","HAJOUTE","TrigArretExclusif_Après",hTriggerAprès) SI PAS (bResTriggerAvant ET bResTriggerAprès) ALORS ERREUR("Erreur lors le la création d'un trigger"+CRLF+"Contactez votre fournisseur"+CRLF+HErreurInfo) FIN
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Bonjour Voroltinquo,
Merci pour ton énorme travail qui a du te prendre énormément de ton temps.
Cela dit, dans mon analyse, le suivi des arrêt n'est là qu'a titre informatif et ne doit être relié à rien, pourquoi. Cette table ne me sert uniquement lorsque un salarié nous informe qu'il est en arrêt de telle date à telle date.
Pour la table IJSS correspond à ce que la Sécurité Sociale nous verse, ce qui ne correspond pas forcément à l'arrêt de travail. Un salarié est en arrêt du 15/11/2019 au 15/12/2019 et la sécu nous verse du 15/11/2019 au 30/11/2019.
Pour la prévoyance, nous sommes remboursés en fonction de ce que la sécu nous à versé, c'est la raison pour laquelle le suivi des arrêts n'est lié à rien.
Merci pour ton travail, je vais essayer de le comprendre et si je peux l'adapter.
On peut le renommer autrement, ce qu'il faut retenir, c'est que ces données sont communes aux deux tables, d'autre part le " complément" concerne bel et bien la même absence que ce que rembourse la sécu.
Dans ce cas, comme les 2 tables sont complémentaires pour la même absence, NDX_Traitement est inutile. Les triggers s'en trouvent simplifiés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 PROCEDURE Trig_Avant() SELON H.FonctionTrigger CAS "HAjoute" //On ne peut pas ajouter cet enregistrement tout de suite car il nécessite l'existence de l'enregistrement de Arrêt IJSS.PK_FK_Ijss=Suivi_des_Arrêts.IDSuivi_des_Arrêts Prevoyance.PK_FK_Prévoyance=Suivi_des_Arrêts.IDSuivi_des_Arrêts CAS "HSupprime" SI HLitRecherche(IJSS,PK_FK_Ijss,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HSupprime(IJSS) FIN SI HLitRecherche(Prevoyance,PK_FK_Prévoyance,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HSupprime(Prevoyance) FIN CAS "HModifie" //Peut être traité en trigger "APRES"" SI HLitRecherche(IJSS,PK_FK_Ijss,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HModifie(IJSS) FIN SI HLitRecherche(Prevoyance,PK_FK_Prévoyance,Suivi_des_Arrêts.IDSuivi_des_Arrêts) ALORS HModifie(Prevoyance) FIN FIN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PROCEDURE Trig_Après() HAjoute(IJSS) HAjoute(Prevoyance)
Il y a peut-être plus simple, mais ça tourne.
Quand tout a échoué utilisez l'option RTFM
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager