[Résolu][Base] Gestion des congés

Discussions sur les projets et applications développés en liaison avec une suite bureautique libre.

Modérateur : Vilains modOOs

Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

[Résolu][Base] Gestion des congés

Message par Sanseau »

Bonsoir

Je cherche à créer une base pour la gestion des congés du personnel

J'ai créé les tables, les formulaires, les requêtes pour effectuées les calculs et avoir les soldes
Jusque là impec
Mais en testant le rapport de synthese des congés je m'aperçois qu' un agent n'apparait pas quand il n'a pris aucun congé (car aucun Id de congé ne lui est associé ce qui est normal mais embêtant)

Car je dois affiché tous les agents ceux ayant pris des congé comme ceux n'ayant rien pris

Mon soucis est de faire apparaitre dans les requêtes (servant pour établir un rapport) un membre du personnel rentré dans la table Agent mais n'ayant pris aucun congé (donc aucune référence dans les autres tables)

Donc en fait je pense qu'il faut que je leur crées un Congé vierge à la création de leur fiche agent pour qu'ils apparaissent dans toutes les requêtes, à par si vous avez une autre idée

Pour cela je pensais mettre une macro dans le formulaire Agent qui lors de la création d'un nouvel agent lui insère un congé à zéro jour (exemple : dans le champ Motif/autre = Démarrage de l'agent) dans chaque table de congé de la base pour lui associé des Id de congé avec comme valeur 0 mais cela est bien trop ardu pour moi

Car il faut d'abord tester si c'est un nouvel agent
Ensuite récupérer son Id pour créer une fiche associée à son Id dans chaque table de congé (5 en tous)

J'ai bien vu dans suprême de code un exemple d'insert into mais bien trop succinct pour arriver à mes fins
car comment en imbriquer 5 ou faire une succession de 5 insert into

Appel au grand spécialiste des macros si le challenge vous tente

Bien sur je joint la base pour vous faire une idée plus précise du problème
[quote]Edit du 15/05/09
La dernière version de la base et de ses fichiers indispensables à télécharger ici: viewtopic.php?f=26&t=12594&start=120#p107018

Merci
Dernière modification par Sanseau le 15 mai 2009 12:41, modifié 3 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 10:42

Re: Base Gestion des congés

Message par Pierre-Yves Samyn »

Bonjour

Le problème devrait être résoluble via les jointures cf. ma réponse dans le fil BDD
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonjour

Un grand merci à PYS

Grâce à lui la solution est venue je ne pensais pas que cela soit possible si facilement
Mais si juste une modification des requêtes Pas de macro compliquée

:bravo: :bravo: :bravo: :bravo: et encore merci
Bonjour

La solution réside pourtant également dans les jointures... si j'ai bien compris ce que tu veux faire :lol:

Exemple pour la RequêteTotalCongeMaladie :

Code : Tout sélectionner

        SELECT "TableAgent"."RefAgent", SUM( "TableCongeMaladie"."NbrJoursMaladie" ) AS "TotalMaladie" ,

        IFNULL(SUM( "TableCongeMaladie"."NbrJoursMaladie" ), 0) AS "TotalPYS"

        FROM "TableAgent"   

        LEFT JOIN "TableCongeMaladie"

        ON "TableCongeMaladie"."IdRefAgent" = "TableAgent"."RefAgent" GROUP BY "TableAgent"."RefAgent"




Explications :

* La jointure "gauche" liste tous les enregistrements de la table Agents, qu'ils soient liés ou non dans la table Congé.
* La colonne TotalPys est facultative. Elle ne sert qu'à illustrer comment afficher zéro plutôt que rien dans le cas où l'agent n'a pas pris de congé.
PS: à priori il faut rentrer ces requêtes directement en mode SQL car en mode ébauche ça n'a pas fonctionné (après plusieurs essai et une totale incompréhension de ma part en voulant faire les autres requêtes)
Dernière modification par Sanseau le 20 nov. 2008 21:45, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir

Je cherche à faire un rapport basé sur plusieurs tables (liées par un id) ou plusieurs requêtes pour obtenir une récapitulation des données concernant un employé ( comme dans le formulaire RecapCongeAgent)

J'ai beau créer des requêtes ou des vues reprenant les données le résultat n'est pas fameux car certaines données se reproduisent plusieurs fois donc cela parasite le rapport

Si cela est impossible dans base peut on m'aiguiller (m'aider) pour extraire ces données dans un fichier calc ou writer en réalisant une sorte de publipostage ( toujours en s'inspirant du formulaire RecapCongeAgent)

Je pourrais pour ne pas m'embêter me servir de ce formulaire et l'imprimer agent par agent mais 2 problèmes se posent
1) c'est pas top de sélectionner le 1er agent puis faire imprimer, sélectionner le 2ème imprimer, etc
2) les contrôle de table dans les sous formulaires ne peuvent afficher que 7 enregistrements si un agent a eu + de 7 périodes (congés ou maladie) elles ne seront pas toutes imprimées

Ces feuilles récapitulatives devant être donner à chaque agent à chaque changement dans leur congés il faudrait mieux que toutes les périodes apparaissent pour éviter des polémiques
Ci joint le fichier base avec les requêtes, les vue et les ébauches de rapport (voir le cas agent sango avec les données parasites)
D'avance Merci
@+
Dernière modification par Sanseau le 20 nov. 2008 21:45, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir

Je suis toujours bloqué sur la méthode à employer pour pouvoir imprimer une feuille récapitulative des congés par agent (dans le genre du formulaire "RecapCongeAgent"

Car la création d'une requête permettant de recueillir toutes les données des différent congés provoque des "out of memory"
donc je ne peux pas me servir d'une requête ou d'une vue pour créer un rapport ni un document writer basé sur cette requête

j'ai essayé de faire un document writer reprenant tout les champs (comme le formulaire) quand on l'ouvre tout semble correct mais si je tente un publipostage en me servant de ce document seul les champs nom, prénom, fonction apparaissent les contrôles de table n'apparaissent plus ( c'est balo)

Dois je reprendre tout à zéro et créer une table container récupérant les Id des autres tables (même si on ne rentre des congés que dans une table ex: congeLegaux mais rien dans les autres ) mais alors comment récupérer les Id des tables qui n'ont pas changé

Merci de vos conseils et pour votre aide
@+
Dernière modification par Sanseau le 20 nov. 2008 21:46, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Base Gestion des congés

Message par jeanmimi »

Je ne sais pas s'il faut reprendre tout, mais c'est vrai que pour un publipostage (voire un rapport) il faudrait une table, une requête ou une vue à exploiter.
Le document EtatCongé.odt est la sauvegarde du formulaire en format texte, mais il ne peut pas être utilisé en publipostage car les contrôles ne sont pas connectés aux champs de la base.
Quant à
créer une table container récupérant les Id des autres tables
, c'est le principe de OOo Base.
Mais à ce que j'ai vu, il n'y a pas de table container dans ta base.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Base Gestion des congés

Message par jeanmimi »

À partir de la RequêteRecap, j'ai édité un document reprenant les valeurs des champs et permettant de faire un publipostage sans difficulté.
Maintenant, as-tu dans cette requête assez d'éléments par rapport à ce que tu veux adresser aux agents ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir

Hélas cette requête ne sert que pour un visuel rapide des compteurs de chaque agent
Hors il faut que j'arrive à faire un document reproduisant les détails pour chaque agent (comme le formulaire RecapCongeAgent)

J'ai essayé en créant une requête (Requete1)où j'ai placé bout à bout les champs des différentes tables (voir des requêtes Recap)
mais en pratiquant de cette manière j'obtiens un "out of memory" (pour test l'agent sango se retrouve avec 40320 lignes en cumul de toutes les tables) ou un plantage quand j'essaye d'atteindre le dernier enregistrement

Et cette base doit servir pour gérer 50 agents

Donc je suis reparti dans la création d'un table container pour récupérer les Id des autres tables mais pour l'instant je n'obtiens pas de résultat . Il faut que je retravaille le formulaire et les associations pour incrémenter cette table container avec les Id des autres tables ( le problème c'est qu'on ne rentre pas obligatoirement des renseignements dans toutes les tables en même temps ( un agent prend un Ca mais n'est pas malade, ni en congé exceptionnel, ni autre donc pas d'entrée d'Id pour ces tables et lors de la création d'une requête (RequeteContainer) associant cette table container aux requêtes rien ne s'affiche)

Ci joint la base (je n'ai pas retravaillé le formulaire, la table Container a été rempli à la main)

Merci pour les suggestions et aides à venir
@+
Dernière modification par Sanseau le 20 nov. 2008 21:46, modifié 2 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Base Gestion des congés

Message par jeanmimi »

Dans cette version, j'ai modifié la RequêteRecap pour avoir aussi les détails des enregistrements en plus des soldes.
Sur mon PC, la requête se lance bien, sans planter, et je visualise les enregistrements.
Reste plus qu'à construire le Rapport qui visualisera les tableaux pour chaque agent, ça c'est pas gagné.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonjour

Je ne dis pas que la requête plante au lancement mais si tu veux atteindre la dernière ligne et que pour cela tu clique sur le petit bouton en bas tu as un plantage
Car comme je l'ai dis avec cette requête rien que pour le cas sango tu atteins + de 40000 lignes (les enregistrement des tables se multipliant entre eux) Ok j'ai chargé un peu le cas sango (avec tout les congés) mais cette base devant gérer 50 personnes au moins je risque de faire "exploser la base ( exemple si chaque agent prend 5 CL*10HS* 5CE* 5CM* 2EM*50 agents) j'obtiens 125000 lignes ça risque de faire beaucoup non
Je sais pas si il y a une limitation pour Base

Je suis en train de voir avec une table container mais je butes sur la macro insert into Message d'erreur "no such element" pourtant j'ai bien pris le nom du champs dans ses propriétés du formulaire (mais je suis pas sur de la déclaration du sous formulaire)
Edit:
Bon j'ai modifié la macro pour prendre en compte que la valeur à récupérer se trouve dans un SubForm_Grid ou un TableControl et dans un sous formulaire mais j'ai toujours un erreur "propriété ou méthode introuvable"

Code : Tout sélectionner

Sub Test

Dim oStatement as variant

oDoc = ThisComponent
oFormAgent = oDoc.DrawPage.Forms.getByName("MainForm")

oStatement = oFormAgent.ActiveConnection.CreateStatement

valeurIdAgent = oFormAgent.getByName("fmtRefAgent").Text

oFormCL = oFormAgent.getByName("CongeLegaux")
SubFormCL = oFormCL.getByName("SubForm_Grid")
valeurIdCL = SubFormCL.getByName("IdCongeLegaux").Text

oFormHS = oFormAgent.getByname("HeureRecup")
SubFormHS = oFormHs.getByName("TableControl")
valeurIdHS = SubFormHS.getByName("IdHeuresRecup").Text


oFormCE = oFormAgent.getByName("CongeExeptionnel")
SubFormCE = oFormCE.getByName("TableControl")
valeurIdCE = SubFormCE.getByName("IdCongeExeptionnel").Text

oFormCM = oFormAgent.getByName("CongeMaladie")
SubFormCM = oFormCM.getByName("TableControl")
valeurIdCM = SubFormCM.getByName("IdCongeMaladie").Text

oFormEM = oFormAgent.getByName("EnfantMalade")
SubFormEM = oFormEM.getByName("TableControl")
valeurIdEM = SubFormEM.getByNamr("IdEnfantMalade").Text

if IdAgent <> "" and IdCL <> "" and IdHS <> "" and IdCE <> "" and IdCM <> "" and IdEM <> "" then
	oStatement.executeUpdate("INSERT INTO ""TableContainer""(""IdAgent"",""IdCL"",""IdHS"",""IdCE"",""IdCM"",""IdEM"") VALUES ('"& valeurIdAgent &"','"& valeurIdCL &"','"& valeurIdHS &"','"& valeurIdCE &"','"& valeurIdCM &"','"& valeurIdEM &"')"
end if
End Sub
Si tu peux j'étais un coup d'œil merci
@+

Ps: j'ai essayé de testé la requete avec un document writer que j'ai fait dans le but de tester un publipostage, donc j'ai transformé la requete en vue je l'ai associé avec le document writer mais la j'obtiens 11 page pour duboc, je suppose 40000 pour sango etc Donc pas cool pour la planete
Dernière modification par Sanseau le 20 nov. 2008 21:48, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir

Avec l'aide de DLE la macro commence à donner quelque résultat ( bien qu'il reste des soucis à revoir)

Mais en testant je ne suis pas certain que cela me serve, car en créant une requête basée sur la table container et liée avec les autres requêtes, j'aboutis aux même résultat, une multiplication des lignes

Donc retour à la case départ

@+
Dernière modification par Sanseau le 20 nov. 2008 21:48, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Base Gestion des congés

Message par jeanmimi »

As-tu regardé ou testé ce que serait la base avec seulement deux tables : une pour les personnes, une pour les congés reliées entre elles par l'id des personnes ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonjour

Pas encore mais je pense que je vais essayé cela sera peut être plus simple
Au départ j'ai voulu éclaté les tables des congés car un agent peut prendre un CA sans poser autre chose donc pour moi la logique était de faire un table par type de congé mais au final cette façon de faire me complique la vie pour la représentation final que je veux en tirer
Donc je vais procédé de cette manière en créant une seule table congé
Après avoir retravaillé la base, tableConge, les requêtes(avec 1à la fin), le formulaire (idem) et le fichier writer pour le publipostage le résultat n'est pas satisfaisant car j'obtiens 2 pages au même nom qui correspondent aux 2 enregistrements rentrés pour le même agent
Donc je reviens à une des questions que j'avais posées sur le forum à savoir la possibilité de créer un rapport ou un publipostage MultiTable
Mais les recherches que j'ai faites sur ce sujet n'ont pas été fructueuses
Merci
et
Bon WE

@+
Dernière modification par Sanseau le 20 nov. 2008 21:50, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Base Gestion des congés

Message par jeanmimi »

Cette structure de base semble plus rapide pour les traitements.
À confirmer bien sûr.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Certes pour le traitement tu as raison
Mais en sortit je dois pouvoir présenter un tableau (formulaire,page) où l'on verra apparaitre les détails pour chaque types de congés avec les totaux et les soldes et en les séparant (comme le formulaire recap ou le fichier writer etat )
et la avec ta base allégée je pense pas que l'on puisse éclater les enregistrements par type de congé avec leur détail (dates, motif, nombre Pris ou dus)
Le plus dur c'est d'obtenir le document de sortie et surtout de pouvoir lancer une impression de tout les Etats en une seule action (publipostage) et non un par un comme le permet actuellement le formulaire Recap ou le fichier writer Etat

Merci
et
@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Bonjour,

Si j'ai bien compris, le problème majeur est de pouvoir faire soit un publipostage, soit un rapport, or les deux, d'après tout ce que j 'ai lu, ne savent travailler sur plusieurs tables en même temps.
Donc j'ai tenté de faire une édition en utilisant une macro et du SQL pour interroger les tables. C'est bien sûr une ébauche, il y a encore du boulot, mais avant d'aller plus loin, j'aimerais avoir ton avis.
La macro est démarrée par un bouton dans le menu général, il y a une édition par agent, je sais pas faire mieux pour l'instant, mais il existe une macro (à rechercher) qui fusionne des documents en un seul.

A+ et bonne journée. :wink:

P.S. : il faut modifier les adresses des dossiers dans les ordres "ConvertToURL" des macros "Sauvagarder" et "Edt_Conge".
Fichier supprimé car obsolète : voir plus bas
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonjour

Tout simplement :bravo: :bravo: :bravo:

Quel boulot c'est impressionnant d'avoir créée une macro comme ça
J'ai pas encore tout pigé dans le code mais c'est intéressant
Pr contre j'ai une erreur

Code : Tout sélectionner

Runtime error Basic
Une exception c'est produite
Type: com.sun.star.lang.IndexOutOfBoundsException
Message: .
à la ligne Indiquée par la flèche

Code : Tout sélectionner

' Traitement TableCongeLegaux
instrSQL = "Select * from TableCongeLegaux where" & chr(34) &  "IdRefAgentCL" & chr(34)& "="  & idAgent

maRequete = maConnexion.createStatement()
r_Table = maRequete.executeQuery(instrSQL)
laTable = leDoc.TextTables.getByname("Tableau_CL")
ligne = 1
colonne = 0
while r_Table.next
	laCellule = laTable.getCellByPosition(colonne ,ligne) <<<------ICI
	laCellule.string = r_Table.Columns.getByName("NbrJoursDus").String
La feuille apparait à moitié rempli
On voit bien la reprise des champs de la table agent, une partie du tableau CL, mais les autre tableau sont vides ansi que les soldes (la macro s'arretant sur le tableau CL cela me parait normale que le reste ne soit pas rempli )
Est ce du à un manque de ligne du tableau qui comporte 5 lignes alors que le nombre d'enregistrement pour la table CL de sango en contient 10 (Oui en attendant j'ai fais des tests en rentrant d'autre exemple)
Puis je intervenir directement dans le ott et agrandir le tableau en insérant des lignes suplémentaire ou pas
Dans la macro j'ai vu que tu appelais "Tableau_CL" hors ce n'ai pas le nom de la table et je ne vois rien dans les propriétés de l'ott qui porte ce nom
Pour la présentation j'ai encore un petit peu de boulot à faire mais faut d'abord que je comprenne comment tu as positionné les différents tableau et comment on peut modifier certainne chose (taille des polices , leur format, inserer un cadre pour le haut etc)
Et surtout trouver la macro qui permettrait de créer toutes les feuilles des différents agent (Peut etre une boucle sur l'id des agent en y plaçant un saut de page obligatoire quand l'id de l'agent change)

En tout cas merci pour le boulot colossal
:D :D :bravo: :bravo: :D :D
Edit: Après Tentative l'erreur provennait bien du manque de ligne dans le tableau, je l'ai modifié en insérant des lignes et ça fonctionne
@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Bonjour,

Je vais faire des tests avec plus de lignes pour les différents tableaux. Actuellement je fais des modifs pour donner un aspect plus pro aux premières lignes de l'état.
Je te tiens au courant dans le journée.

A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Re

En faisant des test je me suis aperçu d'une erreur dans la partie Solde et Nbr de jours Pris
Exemple Domenech se retrouve avec -31 jours de congé et un total jours pris de 66

Sans te commander (j'oserai pas ) si tu pouvais t'inspirer de la présentation du formulaire ou du fichier EtatCongé odt que j'avais joint cela serait super

Vu que tu as l'air de dominer OOo plus que moi je cherche aussi la possibilité de faire un calcul progressif pour rajouter une colonne "Reste" qui devrait indiquer à chaque ligne de congé posé le reste à prendre ( donc Total jours Annuel + Jours Dus - Jours Pris = Reste pour la 1 er ligne et Reste + jours Dus - Jours Pris = Nouveau Reste pour la 2 ème ligne et ainsi de suite)
Pour plus de détail voici le lien du post
http://user.services.openoffice.org/fr/ ... =9&t=13130

Merci pour tout
et
@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Bonsoir,

Ci-joint une version améliorée du projet, j'ai revu le calcul des compteurs, ça doit être bon, et maintenant les tableaux s'agrandissent selon les besoins. Le modèle d'état est modifié, donc à reprendre.

Je n'ai pas fait le calcul progressif, je viens seulement de le voir. J'attends ton retour d'info. avant de jouer avec le piano.

Bons tests
A+ :wink:
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir

Alors là chapeau
:bravo: :bravo: :bravo: :super:

Les calculs se font bien, les tableaux aussi c'est du grand Art
En comparant les 2 macros j'ai noté beaucoup de différence (en dehors de la partie calcul)
Ancienne version

Code : Tout sélectionner

' 1iere ligne édition 

leTexte.insertString(leCurseur, " Année : " & Year(now), false)
leTexte.insertString(leCurseur, chr(9) & chr(9) & chr(9), false)
			
idAgent = r_Agent.Columns.getByName("RefAgent").String

valeur  = r_Agent.Columns.getByName("Prenom").String
leTexte.insertString(leCurseur, chr(9) & "Prénom :" & valeur & chr(9), false)
Nouvelle

Code : Tout sélectionner

' 1iere ligne édition 
racineChampMaitre = "com.sun.star.text.FieldMaster.User"
leChampMaitre = leDoc.TextFieldMasters.getByName(racineChampMaitre + "." + "Année")
leChampMaitre.content = Year(Now)
De plus je ne vois plus l'instruction

Code : Tout sélectionner

special = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
Qui devait faire changer de ligne, là je vois rien alors ????
Comment se fais le changement de ligne????
(je viens de trouver en regardant de plus près l'ott pour les champs et les tableaux)

Question encore dans la macro sauvegarder je vois dans cette ligne

Code : Tout sélectionner

nomFichier = "Etatcongé_" & qui & "_" & year(now) & Month(now) & ".odt"
la variable "qui" mais à aucun moment dans toute la macro je vois une affectation du genre qui = nom - prenom
pourtant l'enregistrement des fichiers ce fait bien avec le nom prenom et date. Alors ????

Dernier point n'est il pas possible dans la boucle "while r_agent" de faire la même chose que la macro sauvegarder mais au lieu de sauvegarder de faire une insertion de saut de page pour que l'agent suivant se trouve sur la page 2 etc, et à la fin de la boucle et là seulement d'envoyer vers la macro sauvegarde en mettant que la date comme renseignement
Bon j'abuse un peu

Pour le calcul progressif avec de l'aide, un début de solution pointe son nez même si ce n'est pas la panacée c'est pour le moment la seule solution qui fonctionne que j'ai
Voir ici http://user.services.openoffice.org/fr/ ... um.php?f=9
si tu vois d'autre méthode plus simple je suis preneur d'autant plus qu' après je devrais insérer la colonne pour avoir un "ResteDus" dans les tableau de 'ott

Pas simple la vie sous OOo

Je te renouvelle mes remerciements :super:
Je mets à jour la base avec tes modifs et celles de Yves14 et la placerais dans un post à suivre pour que tout le monde puisse voir l'évolution

@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Bonjour,

Encore un envoi, cette fois j'ai réglé le calcul progressif. Il reste à régler la constitution d'un seul fichier d'édition, et là c'est pas une mince affaire.
En effet lorsqu'il y a insertion du modèle "EtatCongé"pour la 2ieme fois, tous les tableaux perdent leur nom d'origine, mais les champs utilisateurs gardent leur nom; en affectant une valeur à l'un d'eux, tous les champs éponymes sont affectés. Affaire à suivre.
la variable "qui" mais à aucun moment dans toute la macro je vois une affectation du genre qui = nom - prenom
pourtant l'enregistrement des fichiers ce fait bien avec le nom prenom et date. Alors ????
A la variable "Qui" est affecté la valeur du paramètre passé à la macro, soit :

Code : Tout sélectionner

sauvegarder(sauvegarde)
et sauvegarde est alimenté par :

Code : Tout sélectionner

Sauvegarde = r_Agent.columns.getByName("Nom").String  & "_"& r_Agent.Columns.getByName("Prenom").String



A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir DLE

Je pense qu'il y a eu un problème dans l'envoi car dans la base je ne vois ni tes macros ni de calcul progressif
Peux tu vérifier
De mon coté j'ai continué à bosser dessus

J'ai modifié ta macro pour intégrer le calcul sur les Jours exceptionnels et aussi mes chemins d'accès, j'ai modifié le fichier Etatcongé.ott en rajoutant la colonne Jours Dus dans le tableau Jours Exceptionnel
Je réfléchis comme dis dans le précédent post à la manière d'intégrer les saut de page dans la boucle, mais comme la page a été faite " à la main" je pense que la présentation ne sera que sur la première page. Il faudrait je pense la construire à l'intérieur de la macro en positionnant les textes, les tableaux sur la page (Beaucoup plus compliqué et long).

J'ai intégré les requêtes pour le calcul progressif (celles de yves14 et les miennes)
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

Merci pour le coup de main et les explications
@+
Fichier supprimer voir les dernièrs post
Dernière modification par Sanseau le 23 nov. 2008 17:04, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Bonsoir Sanseau,

Je te renvoie la base, j'ai du faire la copie alors qu'elle était ouverte.

A+
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Re DLE

Mais c'est ton bon ça

Je dirais même que ça à l'air plus facile de faire ce calcul par macro que par requête

:bravo: :bravo: :bravo: :bravo: :super:

Il me reste plus qu'à recommencer mes intégrations, refaire le même système pour les HS et les Exceptionnels, soigner la présentation et voir du coté des macros comment procéder pour construire la page en positionnant tout les éléments et pour finir l'insertion du saut de page et la sauvegarde

As tu eu le temps de jeter un regard sur les modifs que j'avais fait et quand penses tu ?

Merci beaucoup
Excuse pour la fausse info mais ton 1 er post était bon avec la macro pour le calcul progressif mais je l'avais pas vu au milieu de tout le code
Pendant que j'y pense pour l'année - 1 j'ai modifié car l'instruction Year(now - 1) donnait 2008 alors à la place j'ai mis (- 365) et ça donne 2007
@+
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 10:42

Re: Base Gestion des congés

Message par Pierre-Yves Samyn »

Bonjour

Désolé de ne pas avoir le temps de suivre ce fil sur le fond mais ceci attire mon attention :
Sanseau a écrit :
Pendant que j'y pense pour l'année - 1 j'ai modifié car l'instruction Year(now - 1) donnait 2008 alors à la place j'ai mis (- 365) et ça donne 2007
@+
La fonction Now renvoie la date et l'heure système actuelles. Comme dans le tableur il s'agit en fait d'un nombre... Les deux calculs suivants ne donnent pas le même résultat...

Code : Tout sélectionner

Sub Main

print year(now-1) & " : " & year(now) - 1

End Sub
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Bonjour,

Merci Pierre-Yves pour cette précision.

Pour le problème dans les requêtes, je n'ai pas de solution, d'autant que SQL et moi ça fait deux.
Juste pour être pointilleux, la police utilisée, dans EtatCongé pour le libellé "Solde jours Exceptionnels", est Times New Roman au lieu de Arial.

Concernant la constitution d'un seul fichier d'édition via la macro, je sèche complètement, je ne trouve pas le moyen de changer les noms des champs utilisateurs à chaque page. Je poursuis les recherches.

A+ et bonne journée. :)
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonjour

J'ai retravaillé tes macros et le fichier Etatcongé pour avoir les colonnes "Reste" dans CL, HS et CE
j'ai du rajouter quelque compteurs en plus car certain changement me donnaient des valeurs erronées
Tout à l'air nickel pour moi
(j'ai pas fait attention aux polices je vérifierais plus tard quand il ne restera plus que ça)

Comme je te l'ai dit dans un précédent post je pense que la création du fichier doit se faire entièrement par macro
en indiquant la position du texte, le texte, la police, la taille, etc...
Idem pour les tableaux il faut les créer dans la macro avant d'y affecter les valeur( position, nom,nombre colonne,nombre ligne,texte centrée etc...
Certes ça doit être long et compliqué mais je ne vois que cette solution pour créer une page par agent en respectant la même présentation et surtout pour avoir un seul fichier à l'arrivée

Donc je vais me pencher sur la bible pour avoir un début de piste

je joint les dernières moutures

Bon WE
@+
Fichiers supprimer voir les derniers post
Dernière modification par Sanseau le 23 nov. 2008 17:05, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 19:56
Localisation : Lille

Re: Base Gestion des congés

Message par DLE »

Re,

Je suis en cours de modification pour générer un seul fichier, il ne me reste plus qu'à régler le problème du saut de page.
Je te tiens au courant.

A+
à 19h20

Voici le dernier jet, il y a génération d'un seul fichier, j'ai intégré en principe toutes tes modifs, à vérifier quand même.
La nouvelle macro se nomme : Prep_Edt2 qui est associée au modèle : EtatCongé_new2.ott.

Bonne soirée et à+ :wink:
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
Sanseau
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 280
Inscription : 13 juin 2008 12:14

Re: Base Gestion des congés

Message par Sanseau »

Bonsoir
ou bonne nuit

je viens de tester et c'est :super:
Du grand Art :bravo: :bravo:
Moi j'ai passé la journée dessus pour arriver à ne faire que la partie des renseignements de l'agent (et encore pas de manière totalement satisfaisante)
Vraiment chapeau bas
Je te remercie beaucoup du grand coup de main pour cette base qui sans toi n'en serait encore qu'au balbutiment
J'étudierais plus en détail demain mais sur le peu que j'ai vu, il n'y a rien à retoucher
Encore merci
@+ :D :D :D :D
Oups j'ai parlé trop vite il y a un probleme quand un agent prend trop de congé cela décale la pagination
dans la pratique je pense qu' en CL il n'y en aura jamais autant (5 à 6 maxi) mais pour les HS il y en aura 12 sur (1 ligne par mois ) Maladie ? ça dépend, Enfant Malade idem?
ci joint les fichiers
Fichiers supprimer voir les derniers post
Dernière modification par Sanseau le 23 nov. 2008 17:06, modifié 1 fois.
OpenOffice 4.1.3 ORB 1.2.1
Windows 10
Verrouillé