Xreport : reporting de dataset en xml, pdf, excel et envoi par mail

Soyez le premier à donner votre avis sur cette source.

Vue 19 397 fois - Téléchargée 1 605 fois

Description

J'ai réalisé ce code dans le cadre de mon stage technique et j'ai pensé logique de le mettre à disposition de tous.

Alors, ce code prend un DataSet ou un XmlDocument directement et l'affiche dans un tableau. On peut ajouter à ce tableau une ligne Total (qui fait le total des colonnes) ou des graphiques (Camembert ou Baton) très rapidement (Voir fichier XMLLayer).

L'architecture est très simple, chaque fichier parle de lui même !

Pour l'envoi de mails, j'utilise SMTP, pensez d'ailleurs à changer le serveur SMTP (souvent votre hébergeur).

J'utilise la version Express de Dev Web sur un framework 2 avec IIS et windows XP (marche sur 2000 de sur).

Excusez moi pour le manque de détails, pour toutes questions n'hésitez pas, je suis très dispo.

Pour l'export en PDF, la source n'est pas de moi, c'est une version ASP de FPDF trouvé sur ce site.

Source / Exemple :


<%@ Register TagPrefix="intranet" TagName="XReport" Src="..\controles\XReport.ascx" %>

' Exemple d'utilisation :
    ' Génère la vue Bilan suivante :
    ' -> Equipiers | Contrat | Heures | CEX
    Public Shared Function VueEquipeBilanCtHrCx(ByVal eq_id As Integer, ByVal debut As Date, ByVal fin As Date) As Xml.XmlDocument

        Dim Data As DataSet, DataTeam As DataSet
        Dim query As String
        Dim Jour As Date = Date.Today

        DataTeam = DataLayer.SelectEquipe(eq_id)

        query = "SELECT personnel.PE_ID, CONCAT(personnel.PE_NOM, ' ', personnel.PE_PRENOM) AS Equipier, " & _
                "parametres.PA_VAL_TEXTE AS Contrat, " & _
                "SUM(journee_travail.JT_HEURES_JOUR + journee_travail.JT_HEURES_NUIT) AS Heures " & _
                "FROM(equipe, lien_personne_equipe, personnel, journee_travail, contrat, parametres) " & _
                "WHERE equipe.EQ_ID = lien_personne_equipe.EQ_ID AND lien_personne_equipe.PE_ID = personnel.PE_ID " & _
                "AND equipe.EQ_ID = journee_travail.EQ_ID AND personnel.PE_ID = journee_travail.PE_ID " & _
                "AND (equipe.EQ_ID = " & eq_id & ") " & _
                "AND (contrat.pe_id = personnel.pe_id) " & _
                "AND (parametres.pa_nom = 'TYPE') AND (parametres.pa_id = contrat.ct_type) " & _
                "AND journee_travail.jt_date >='" & debut.ToString("yyyy-MM-dd 00:00:00") & "' AND journee_travail.jt_date <='" & fin.ToString("yyyy-MM-dd 00:00:00") & "' " & _
                "GROUP BY personnel.PE_ID"

        Data = DataLayer.executeSQL(query, "personnel")

        Dim doc As XmlDocument = XMLLayer.Middleware(Data)

        XMLLayer.SetInformations(doc, "Ollioules", "2006", TimeLayer.cherche_numero_semaine(Jour), "Totaux horaire pour l'équipe " & DataTeam.Tables("equipe").Rows(0).Item("Eq_NOM") & " du " & debut & " au " & fin)
        XMLLayer.SetGraphique(doc, "circulaire", 0, 2, "Heures travaillées")
        XMLLayer.SetGraphique(doc, "histogramme", 0, 3, "CEX")
        XMLLayer.SetTotaux(doc)

        Return doc

    End Function

XReport.XMLDocument = VueEquipe... (....)

Conclusion :


Il y a un readme dans le ZIP, pour ttes questions, n'hésitez pas

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
jeudi 26 février 2004
Statut
Membre
Dernière intervention
20 janvier 2009

re dsl j ai un pb avec Timelayer aussi
cordialement,

Julien
Messages postés
7
Date d'inscription
jeudi 26 février 2004
Statut
Membre
Dernière intervention
20 janvier 2009

salut leptidev !!

CHapeau bas pour ton appli mais j ai lememe souci avec la class datalayer

de plus il serais judicieux de metre les images

ImageUrl="~/images/excel.bmp"
ImageUrl="~/images/pdf.bmp"
ImageUrl="~/images/print_logo.jpg"
imageurl="~/images/xml_logo.jpg"
imageurl="~/images/mail.gif"

sans couloir pousser car t assuyre quand meme !!!

Ps : j doit faire une demo demain si t as un chouilla de temps ca serais hyper cool de balancer tout ca avant xD

merci man t es un super dev : continu ^^
Messages postés
206
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
4 décembre 2007

Salut,

Heu ça fait longtemps mais la class datalayer sert comme interface avec une DB mySQL grossomodo, elle contient des fonctions qui renvoyent des DataSet ou du XML, si elle n'est pas dans le zip je peux te l'envoyer, mais je pensais l'avoir mise.

@ +
Messages postés
12
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
26 juillet 2007

Salut,

Ton code a l'air pas mal (surtout d'apres le screen), mais je voulais savoir ou est declarer datalayer...?
Apparement, j'utilise la meme config que toi, mais il est pas declare chez moi.
Est ce que c'est une class ou je ne sais...

Merci d'eclairer ma lanterne.
Jo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.