Calcul Progressif sur 2 tables

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Répondre
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Calcul Progressif sur 2 tables

Message par Sanseau »

Bonjour,

Après avoir passé 2 jours à tester et regarder tous les posts concernant les calculs je n'ai pas réussi à faire une requete qui permette de faire un calcul de solde restant

Donc j'ai:
1 table agent dans laquelle je me sert des champs "NbrJoursDusAnnuel" et "RelicatJours" pour calculer (dans une requete qui fonctione elle) le "TotalJoursAnnuel"
1 table CongeLegaux avec comme champs "NbrJoursDus", "NbrJousPris" qui sont les jours qui vont venir en plus ou en moins
à partir de ces tables j'ai réussi à calculer le "TotalJoursAnnuel" , la somme des "JoursDus", la somme des "JoursPris" et le "SoldeConge" tout cela grace à des requetes
Et là je bute sur la maniere de faire un calcul progressif me donnant un "ResteDus" calculé congé par congé
J'ai essayé de faire ce calcul en me servant de 2 exemple trouvé sur le forum
http://user.services.openoffice.org/fr/ ... tion+stock
http://user.services.openoffice.org/fr/ ... progressif

Mais aucun des 2 n'a pus me donner les bons résultats. Le premier exemple (Vue1") dans ma base reprend à chaque fois le "TotalJoursAnnuel" et fait son calcul à partir de lui . Le deuxieme exemple ne prend pas en compte le premier enregistrement des congés mais apparemment fais bien le reste du calcul
" Edit: en fait la premier ligne est bien prise en compte mais avec une ligne de décalage ce qui fausse la lecture et donc prete à confusion
(Voir base Copie de BasegestionConge RequeteSoldeCL 1,2, 3)"
Existe te t'il une autre maniere de procedée (requete macro)???

Ci joint la base
Merci de vous pencher sur ce probleme et de m'aider si possible
@+
Pièces jointes
Copie de BaseGestionConge.odb
(184.18 Kio) Téléchargé 240 fois
BaseGestionConge.odb
(183.04 Kio) Téléchargé 253 fois
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
YVES14
Membre hOOnoraire
Membre hOOnoraire
Messages : 110
Inscription : 08 janv. 2008 21:50
Localisation : lion sur mer CalvadOOos

Re: Calcul Progressif sur 2 tables

Message par YVES14 »

Bonsoir,

Tout d'abord pour ta requête 'vue1', il est normal qu'elle reprenne toujours les éléments de la table agents, dans les relations 1 à n les éléments de 1 sont reportés dans tous les enregistrements concordants.
Si j'ai bien compris ce que tu recherches: pour un agent, il est crédité d'un nbr de jour annuel + le reliquat de A-1, en cours d'année il prends des congès, mais certains le recrédite de jours ; la formule que tu appliques au niveau 'Congé' s'appliquerait en fait au niveau 'agent' , avec la somme des éléments 'congés' ; tu aurais une requête avec 4 champs en sortie NbrsJours du annuel, reliquat, somme des jours pris, somme des jours dûs, et là tu appliques ta formule, mais la table congés devra être triée sur agent/congés.

Pour le progressif, en complément aux post que tu signales, va sur celui-ci :
http://user.services.openoffice.org/fr/ ... ifs#p72106
Tu y avais participé, tu trouveras de bons compléments d'informations.

Yves
Windows XP SP3 OOo3.0.1 et SRB 1.0.6
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Calcul Progressif sur 2 tables

Message par Sanseau »

Bonjour

Il me semble que la démarche que tu m'indiques me donnera le solde des congés. Hors ça je l'ai deja calculé et ça fonctionne.
Ou alors j'ai rien compris à la démarche que tu m'indiques et si tu pouvais me faire un exemple cela serait sympa.
Ce que je voudrais faire c'est pouvoir calculer le restant des congés après chaque ajout ou retrait et surtout pouvoir rajouter cette colonne "Reste" dans le sous formulaire adequat
un peu comme cette exemple (fait sous calc)
Pièces jointes
reste.JPG
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
YVES14
Membre hOOnoraire
Membre hOOnoraire
Messages : 110
Inscription : 08 janv. 2008 21:50
Localisation : lion sur mer CalvadOOos

Re: Calcul Progressif sur 2 tables

Message par YVES14 »

Ouf,
Après bien des pistes, Eureka :idea: :D . Il ne faut pas se focaliser sur le fait d'un crédit annuel, ignorons-le pour commencer. En pompant royalement les 2 premières requêtes données par Pierre-Yves, appliquées uniquement à la table des congés, on obtient une progression sans valeur initiale :( , mais en réincorporant celle-ci au denier moment, dans la requête n° 3, en travaillant sur 3 tables au lieu de 2, on obtient le résultat escompté :P , . CQFD

Donc je te joins une base avec en nouveautés: 2 vues , 'suragent' et 'surCL' pour préparer le travail et trier les enregistrements (agent/congés) et 3 requêtes, 'Requête1',' ..2 'et '..3', surtout ne pas ouvrir la 3 en mode ébauche (dixit Pierre-Yves) elle serait modifiée.

Je crois que là tu auras une bonne base de travail, et ça marche même avec une requête paramétrée (voir le fil indiqué précédemment).

Je suppose que tu as fait le choix du formulaire plutot que du rapport pour pouvoir saisir directement un nouveau congé? Sinon le rapport n'aurait posé aucun problème, on y fait tous les calculs.

Yves
Pièces jointes
BaseGestionConge3.odb
(183.28 Kio) Téléchargé 214 fois
Windows XP SP3 OOo3.0.1 et SRB 1.0.6
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Calcul Progressif sur 2 tables

Message par Sanseau »

Bonsoir

Tout d'abord :bravo: :bravo: :bravo:

Belle démonstration
Effectivement en relisant le lien indiqué j'ai vu un détail qui au départ me semblait anodin mais qui a son importance
Il faut passer par une vue en intermédiaire car comme tu le dis
J'ai utilisé comme base les requêtes fournies par Pierre-Yves en les adaptant à tes tables, j'ai créé une VUE pour avoir un tri de la table Achats tenant compte du client, la 'Requête1' s'appuie sur cette vue car: la 'Requête2' ne peut pas s'éxécuter si la 'Requête1' comporte la fonction ORDER BY :marto:
je me suis heurté souvent en testant les requêtes à des erreurs dùes à cette particularité

Tout fonctionne bien, certes un peu lourd comme manipulation et pas simple du tout mais seul le résultat compte

Pour répondre à ta question j'ai pas réellement choisi la voie du formulaire, elle me semble s'imposer . Pour la saisie des information c'est certain mais aussi pour la présentation
Car pour l'instant je suis à la recherche d'une méthode pouvant me permettre de faire un rapport multitables ou une extraction vers un document odt façon publipostage
Voir ici http://user.services.openoffice.org/fr/ ... =9&t=12889
ou là http://user.services.openoffice.org/fr/ ... 26&t=12594

Donc pour l'instant je vais me servir de ta requête pour l'insérer dans le formulaire Recap en le plaçant à coté du sous formulaire CongeLegaux et aussi dans le document Writer soit de la même maniere (ajout d'un formulaire lié à la requête) soit en essayant d'integrer la requête3 dans la requete RecapConge pour ajouter la colonne cumul(ResteDus)

Je vais reprendre la méthode pour faire de même pour les HS et aussi les Congé exceptionnel (Heuresement pour les 2 autres j'ai pas besoin de cette colonne) c'est un peu lourd déjà que je trouvais que la portion requête était fort développée, là elle va déborder

De nouveau Merci beaucoup et :bravo: :bravo: :super:
@
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
YVES14
Membre hOOnoraire
Membre hOOnoraire
Messages : 110
Inscription : 08 janv. 2008 21:50
Localisation : lion sur mer CalvadOOos

Re: Calcul Progressif sur 2 tables

Message par YVES14 »

Bonjour,
Plus je regarde ta base plus je me pose de questions. Qu'est-ce qui t'a conduit à créer une table par nature, plutot qu'une table unique avec un code nature, bien qu'il y ai quelques différences un dessin unique pouvait se comprendre, et à ce moment-là saisie unique et état unique; possibilité de faire un rapport et là plus de problèmes de cacul.

Je ne sais pas où tu en es dans ton application, mais il est peut-être encore temps de repenser une partie de l'analyse. Bien sûr les présentations ne pourraient qu'être différentes, mais si ça évite une usine à gaz, dans certains cas c'est préférable.

Ce n'est qu'une réflexion comme ça, vieux réflexe d'un ex-analyste -programmeur. :wink:

Yves
Windows XP SP3 OOo3.0.1 et SRB 1.0.6
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Calcul Progressif sur 2 tables

Message par Sanseau »

Bonjour

Si je suis parti sur la création de plusieurs tables (par catégorie de congés ou d'absence) c'est pour :

1) Respecter la présentation de la représentation des états ou rapports individualisés(selon le modèle du formulaireRecap ou du fichier writer ) car je suis parti d'une trame excel et pour éviter de dérouter la personne qui devra effectuer la saisie j'ai voulue respecter cette présentation
2) Éviter des erreurs de saisie (avec un liste déroulante un congé Légal pourrait par dérapage devenir un HS ou autre)
3) Éviter des erreurs de calcul sur les soldes et autres ( car déjà que le calcul n'est pas simple sous Base exemple le calcul progressif imagine si en plus j'avais du faire des requêtes pour ne calculer que les congés légaux entre eux, les hs pareil, etc...)
4) Parce que j'aime bien me compliquer la vie peut être ( pourquoi faire simple quand on peut faire compliquer)

Mais si tu penses que l'on peut en créant qu'une seule table congé respecter la présentation et éviter les erreurs ( et que les calculs progressifs en soient facilités) je suis preneur et je veux bien tenter le coup

@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Calcul Progressif sur 2 tables

Message par Sanseau »

Bonsoir

Voila la nouvelle mouture de la base

J' ai intégré les requêtes de yves14 et celles que j'avais faites de mon coté mais les 2 méthodes posent un petit problème

Pour la méthode de yves14 (2 vue "suragent", "surCL", 3 requetes 1,2,3) le résultat affiché saute la 1 er ligne et le calcul se fait correctement jusqu'à la fin des enregistrement des CL
Pour ma méthode (3 requêtes "requeteSoldeCL1,2,3) le résultat affiché démarre de la 1 er ligne calcul correctement mais ne calcul pas la dernière ligne
Voir le formulaire RecapCongeAgent1
?????????? Comment arriver à un affichage de la 1 er à la dernière ligne

J'ai mis aussi la macro de DLE permettant d'externaliser sur un fichier writer les différentes tables avec une présentation correcte
( penser à changer les chemins des fichiers dans la macro du module "Prep_edition" à 2 endroit (début et fin)
@+
DLE a fait un calcul progressif sous forme de macro qui donne de super résultat
http://user.services.openoffice.org/fr/ ... 557#p73557
Je sais pas si on peut l'intégrer dans un formulaire à voir
Le modérateur a écrit :Merci de ne pas poster plusieurs messages à la suite !
Le bouton "Editer" à la droite du message permet d'y remédier.

En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.
Pièces jointes
EtatCongé.ott
(14.86 Kio) Téléchargé 206 fois
Copie de BaseGestionConge.odb
(201.85 Kio) Téléchargé 178 fois
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
YVES14
Membre hOOnoraire
Membre hOOnoraire
Messages : 110
Inscription : 08 janv. 2008 21:50
Localisation : lion sur mer CalvadOOos

Re: Calcul Progressif sur 2 tables

Message par YVES14 »

Bonsoir,
Je continue de réfléchir et de tester quelques solutions, en attendant,
Tu dis:
Pour la méthode de yves14 (2 vue "suragent", "surCL", 3 requetes 1,2,3) le résultat affiché saute la 1 er ligne et le calcul se fait correctement jusqu'à la fin des enregistrement des CL
Après avoir rencontré ce problème par ailleurs, voici la raison: lorsqu'en SQL on fait un calcul et qu'un des facteur est 'NULL' l'opération n'est pas effectuée :aie:
Donc au premier enregistrement de la table 'Congés Légaux" ne correspond aucun enregistrement de la requête2, donc champ S2 vide :cry:
Il me semble avoir vu quelque part sur ce forum une réponse de P-Y Samin, mais je ne remet pas la main dessus. Je vais continuer de chercher! :wink:

J'oriente mes élucubrations sur une table unique avec un code nature, ça peu ne rien changer dans la saisie, mais peut-être permettre de faire un rapport au lieu d'un formulaire... Mais là aussi le fait d'avoir des informations dans deux tables séparées n'est pas pour faciliter les choses.
Ceci ouvre une question: quid des remises à zéro des différentes tables, est-ce à la même date ?
Je te tiens au courant.

Yves
Windows XP SP3 OOo3.0.1 et SRB 1.0.6
YVES14
Membre hOOnoraire
Membre hOOnoraire
Messages : 110
Inscription : 08 janv. 2008 21:50
Localisation : lion sur mer CalvadOOos

Re: Calcul Progressif sur 2 tables

Message par YVES14 »

RE,

Je savais bien que Pierre-Yves donnait une solution quelque part, une recherche avec 'champ null' et voilà :wink:

Donc je joins une base avec une nouvelle requête (la 2b) qui est utilisée dans la 3 légèrement modifiée et là tout semble coller :D

Yves
Pièces jointes
BaseGestionConge3.odb
(188.06 Kio) Téléchargé 180 fois
Windows XP SP3 OOo3.0.1 et SRB 1.0.6
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Calcul Progressif sur 2 tables

Message par Sanseau »

Bonjour

Bon sang mais bien sur, comment n'y ai je pas pensé car il me semble que c'est une de mes questions concernant cette base en plus (les requetes Somme), mais ma logique n'a pas fait tilt

Merci pour ta logique

Maintenant je vais tenter d' integrer ce "Cumul" dans les requetes Recap pour pouvoir les afficher dans le fichier externe
Et creer les autres selon ce modele pour HS et CE

@+ et :bravo: :bravo: :super:

Ps je n'ai pas saisie le sens de ton intérogation
Ceci ouvre une question: quid des remises à zéro des différentes tables, est-ce à la même date ?
La remise à zéro ce fera au 1 janvier sur une base vidée de toute saisies de congé (je garderais juste la table agent) et je récupèrerais les reliquats sur l'ancienne (j'ai une base modele vide j'aurais juste à faire le copier coller de la table agent et de modifié les reliquat en fonction de l'année qui se termine éventuelement pour certain agent le nombre de jour annuel si année pleine ou seulement sur une durée limitée)
Pour ce qui est de la table unique je te laisse tenter, tu me feras part du résultat
@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
YVES14
Membre hOOnoraire
Membre hOOnoraire
Messages : 110
Inscription : 08 janv. 2008 21:50
Localisation : lion sur mer CalvadOOos

Re: Calcul Progressif sur 2 tables

Message par YVES14 »

Bonsoir,
quid des remises à zéro des différentes tables, est-ce à la même date ?
La question était simplement pour savoir s'il était facile de remettre à zéro les tables ou la table.
Ceci étant vu, je te joins un essai de rapport basé sur une table unique, bien sûr rien à voir avec la présentation en formulaire.

L'utilisation du SRB 1.0.5 réserve encore bien des surprises: la requête est triée agent/id congé en asc, il édite les idcongé en desc.?,
pas moyen de tracer des lignes, H ou V même punition, de temps en temps les cadres ne veulent pas se placer où on les met.
Donc pour l'instant tu verras pas mal de calculs assez ardus qui passent très bien, mais en présentation, peut mieux faire.

Par contre là tu n'as pas de problème d'édition, tu peux même éventuellement l'aménager pour une personne en particulier.

Bonne lecture

J'ai été un peu sévère avec tes tables, mais c'est plus léger comme ça.

Yves
Pièces jointes
BaseGestionConge3.odb
(191.9 Kio) Téléchargé 215 fois
Windows XP SP3 OOo3.0.1 et SRB 1.0.6
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Calcul Progressif sur 2 tables

Message par Sanseau »

Bonjour Yves14

J'ai bien regardé la base
Effectivement les calculs dans le rapport sont ardus (mais intéressant)
2 problèmes
- un léger qu'y pourra être résolu facilement (je pense) il manque dans ton calcul des heures la reprise du reliH
- le deuxième concerne effectivement la présentation (beaucoup de zéro , le cas sango ne tient pas sur une page)
je sais que SRB n'est pas top pour soigner la présentation (voir le sujet http://user.services.openoffice.org/fr/ ... 26&t=11082 ou j'ai passé des heures pour tracer des cadres entourants les champs pour donner une impression de ligne et colonne ( j'ai du noté les coordonnées de chaque champs pour tenter de placer les cadres par dessous)

Penses tu qu'il serait possible de faire une présentation zonée et en filtrant pour ne faire apparaitre dans la zone que les champs correspondant au filtre (un peu comme dans tes calculs "if Nature = 1 affiché sinon pas affiché" avec comme zone les CL, les HS, les CE, etc (un peu comme les représentations du formulaire ou des états que l'on a fait avec DLE) ?

Par contre la solution de pouvoir imprimer qu'une feuille (celle d'un agent par requête sur le nom peut m'intéresser ou mieux si je pouvais envoyer à l'impression que les agent dont le formulaire a été modifié (par ajout ou modification des congés) ça serait super
Faut que je vois avec DLE si on pourrait adapter ça a sa macro

En passant et pour éviter de se faire taper sur les doigts par les modos car on dérive du sujet initial il faudrait que l'on continue cette discution sur le poste du projet que j'ai ouvert http://user.services.openoffice.org/fr/ ... 26&t=12594

Merci et @+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Répondre