-- Gecad Chrono function fmtHourStart(hourStart) -- formatage heures if hourStart < 0 then return ''; end hourStart = math.floor(hourStart/1000); local h = math.floor(hourStart/3600); local m = math.floor((hourStart-h*3600)/60); local s = hourStart-h*3600-m*60; return string.format("%#02dh%#02d:%#02d",h,m,s); end -- Event : report.OnInputObject function report.OnInputObject(dlg, obj) if obj == objRef then rdi.SetInputEdit(dlg, obj, rdi.ES_NUMBER+rdi.ES_RIGHT); return end end -- Event : report.OnClickObject function report.OnClickObject(doc, obj) if doc == dlg then if obj == buttonOk then txt = rdi.GetText(dlg, objRef); if string.len(txt) == 0 then rdi.SetText(dlg, objInfo, "Erreur : Numéro de manche Vide !"); rdi.SetTextColor(dlg, objInfo, rdi.COLOR_RED); rdi.Refresh(dlg); else -- On peut valider la saisie ... rdi.EndDialog(dlg, rdi.IDOK); end end if obj == buttonKo then -- On peut valider la saisie ... rdi.EndDialog(dlg, rdi.IDCANCEL); end end end -- Event : report.OnMouseOverObject function report.OnMouseOverObject(dlg, obj) rdi.SetBkMode(dlg, obj, 'L'); rdi.SetBkColorStart(dlg, obj, rdi.COLOR_LTYELLOW); rdi.SetBkColorEnd(dlg, obj, rdi.COLOR_WHITE); rdi.Refresh(dlg, obj); return true; end function report.OnMouseLeaveObject(dlg, obj) rdi.SetBkMode(dlg, obj, 'S'); rdi.SetBkColor(dlg, obj, rdi.COLOR_WHITE); rdi.Refresh(dlg, obj); return true; end -- Etape 1 : Prise de la compétition de référence ... dlg = rdi.Open("Sélection de la Manche..", rdi.PREVIEW_VISIBLE+rdi.PREVIEW_CAPTION, 500, 250); sizeBorder = 4; offset = 8; h = rdi.RenderText(dlg, "['Arial' B S 14]M").height + 2*sizeBorder + 2*offset; rdi.Text(dlg, "[N R S 12](Attention pour la manche 2, erreur de FFcanoe)\n Utiliser le décalage horaire de Gecad Chrono", 350, 2*h-2*offset, offset, 2*h); rdi.Text(dlg, "[N R S 12]N° Manche :", 250, h-2*offset, offset, h); objRef = rdi.Text(dlg, "[N L S 12]1", 50, h-2*offset, 250+2*offset, h); rdi.SetEditable(dlg, objRef); buttonOk = rdi.Text(dlg, "[N CE BORDER]Valider", 500-4*offset, h-2*offset, offset, 3*h); rdi.SetClickable(dlg, buttonOk); buttonKo = rdi.Text(dlg, "[N CE BORDER]Annuler", 500-4*offset, h-2*offset, offset, 4*h); rdi.SetClickable(dlg, buttonKo); if rdi.DoModal(dlg) ~= true then return end codemancheRef = tonumber(rdi.GetText(dlg, objRef)); -- Paramètres ... filetxt = "Export\\listedepart.txt"; -- Nom du Fichier de sortie -- Début du programme ... codeEvenement = sql.GetCellInt("Epreuve", "Id_evenement", 0); msg.AddLine("id : "..codeEvenement.." manche :"..codemancheRef); -- Chargement Table Resultat_Manche en Manche 2 ... local cmd = "Select * From Resultat Where Code_evenement = "..codeEvenement.. " Order By Dossard Asc"; sql.Load(cmd, "Resultat"); f = assert(io.open(filetxt, "w+")); for i=0, sql.GetNbRows("Resultat")-1 do Le_Code_coureur=sql.GetCell("Resultat","Code_coureur",i); local cmd_heure = "Select * From Resultat_Manche ".. " Where Code_coureur='"..Le_Code_coureur.."' AND Code_evenement = "..codeEvenement.." And Code_manche = "..codemancheRef; sql.Load(cmd_heure, "Resultat_Manche"); lignetp=sql.GetCellInt("Resultat","Dossard",i).." ".. fmtHourStart(sql.GetCellInt("Resultat_Manche","Heure_depart",0)); t =f:write(lignetp.."\n"); msg.AddLine(lignetp); end f:close() msg.AddLineOk("Génération du fichier : "..filetxt);