Modérateur: Vilains modOOs
Bonjour
La solution réside pourtant également dans les jointures... si j'ai bien compris ce que tu veux faire
Exemple pour la RequêteTotalCongeMaladie :
- Code : Tout sélectionner AgrandirRéduire
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é.
, c'est le principe de OOo Base.créer une table container récupérant les Id des autres tables
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
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
Fichier supprimé car obsolète : voir plus bas
Runtime error Basic
Une exception c'est produite
Type: com.sun.star.lang.IndexOutOfBoundsException
Message: .
' 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
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
' 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)
' 1iere ligne édition
racineChampMaitre = "com.sun.star.text.FieldMaster.User"
leChampMaitre = leDoc.TextFieldMasters.getByName(racineChampMaitre + "." + "Année")
leChampMaitre.content = Year(Now)
special = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK
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 ????
sauvegarder(sauvegarde)
Sauvegarde = r_Agent.columns.getByName("Nom").String & "_"& r_Agent.Columns.getByName("Prenom").String
Fichier supprimer voir les dernièrs post
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
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
@+
Sub Main
print year(now-1) & " : " & year(now) - 1
End Sub
Fichiers supprimer voir les derniers post
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?
Fichiers supprimer voir les derniers post
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)