Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique [ Archives ASP & ASP.NET / ASP.net ] (satanik_mike)

mardi 26 avril 2005 à 19:42:26 | Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

satanik_mike

Bonjour tout le monde !!

Je viens vous demander un coup de main car je ne me sors pas du problème que j'essaye de résoudre.

J'ai fait une appli en ASP.NET (VB.NET behind) qui gère des données provenant d'une base SQLServer 2000.

Elle fonctionne sans problème, visualisation, saisie, modification, etats CrystalReport et exports Excel, Word, PDF.

Cependant, mon client me demande une subtilité dans les éditions.

Je dispose d'une page aspx contenant une datagrid me donnant une liste de bons de commande suivant une requete exécutée à la volée. Pour cela pas de soucis. Ensuite, j'ai une page impressions.aspx qui contient un crystalviewer dont la source dépend d'un paramètre dans la chaine request. Si je désire le bon seul, j'envoie 'impression.aspx?doc=BonCommande&numBon=' & DBG_LSTBONS.selectedItem.cells(1).text, sinon si je souhaite les lignes du bon de commande, j'envoie 'impression.aspx?doc=LignesBon&numBon=' & DBG_LSTBONS.selectedItem.cells(1).text.

Ces instructions sont mise dans un HyperLink serveur de manière à pouvoir ouvrir une popup et surtout définir la cible dynamiquement.

Mon problème est maintenant le suivant :
A partir de la liste, mon client me demande de faire en sorte que lorsqu'il demande l'impression d'un bon, les lignes du bon sont également imprimées. Je ne vois donc qu'une seule manière de faire cela qui serait d'ouvrir deux popups dont chacune pointerait sur la page impressions.aspx mais avec le paramètre qu'il faut.

Seulement je ne vois pas comment faire.

Si quelqu'un pouvait m'aider, ca me dépannerais grandement.

Merci d'avance.

mardi 26 avril 2005 à 20:13:10 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

Yopyop

re,

je pense que cela dépend beaucoup de ta page impression.aspx.

D'après ce que je peux voir elle permet d'imprimer le bon ou les lignes du bon.

Ne peut tu pas envoyer doc=BonEtLignes&numBon=' & DBG_LSTBONS.selectedItem.cells(1).text

et imprimer le tout ?
 

yopyop


mercredi 27 avril 2005 à 07:54:39 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

satanik_mike

Salut,

Si, cela serait une solution, seulement il faudrait donc pour cela que j'ai deux cristal viewer pour pour monter 2 etats. Cela risque d'être assez génant pour les utilisateurs.

Merci pour ta réponse

mercredi 27 avril 2005 à 09:25:35 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

Yopyop

pourquoi ne pas créer un nouveau rapport (crystal report) qui incorpore les deux déjà existants?

yopyop

mercredi 27 avril 2005 à 11:10:46 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

satanik_mike

Salut,

Bonne idée, mais les deux rapports doivent être ensuite exportable dans deux fichiers différents (normalement le bon en word car modifiable et les lignes en pdf car non modifiables)

Je sais, j'suis ch****t mais bon ...

mercredi 27 avril 2005 à 11:21:46 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

Yopyop

et alors ?

tu forward la request sur ta page d'impression et ensuite sur ta page
qui génère les fichiers...

voit pas le problème ?

yopyop

mercredi 27 avril 2005 à 11:32:07 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

satanik_mike

Re ...

Le problème est simplement que la page qui contient le CRV et qui génère les doc sont une seule et même page.

Voici le code de ma page impression.aspx si cela peut aider.

Mais donne moi un peu plus de précisions sur ta drnière réponse, je suis pas sûr d'avoir bine saisi.

Merci

'Pour info : l'objet boncde est en fait une classe qui stocke les informations du bon, ainsi que 2 datatables qui contiennent les infos des lignes de bons et des lignes facture(sans importance).

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Impression
    Inherits System.Web.UI.Page

#Region " Code gnr par le Concepteur Web Form "

    'Cet appel est requis par le Concepteur Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents BT_ENVOI As System.Web.UI.WebControls.Button
    Protected WithEvents CRViewer As CrystalDecisions.Web.CrystalReportViewer
    Protected WithEvents RD_DESTINATION As System.Web.UI.WebControls.RadioButtonList

    'REMARQUE: la dclaration d'espace rserv suivante est requise par le Concepteur Web Form.
    'Ne pas supprimer ou dplacer.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: cet appel de mthode est requis par le Concepteur Web Form
        'Ne le modifiez pas en utilisant l'diteur de code.
        InitializeComponent()
    End Sub

#End Region
    Public doc As String
    Public numbon As Integer

    Private Function RemplitEtat() As ReportDocument
        Dim temprep As New ReportDocument
        doc = Request.QueryString.Item("doc")
        numbon = Convert.ToInt32(Request.QueryString.Item("numbon"))
        'Selon les paramtres, je slectionne la source de CRViewer
        Dim logonInfo As New TableLogOnInfo
        Dim tbReport As Table
        Dim selFormule As String

        Try
            temprep.Load(Server.MapPath(doc & ".rpt"))

            'Mise en page de l'tat
            temprep.PrintOptions.PaperSize = PaperSize.PaperA4
            temprep.PrintOptions.PaperOrientation = PaperOrientation.Portrait

            If doc <> "BonCommande" Then
                'Impression d'une fiche Sigef ou Factures
                'Je dispose donc des infos contenues dans lesobjets de traitements des bons
                selFormule = "{BonCde.An_BonCde} = """ & bonCde.Exercice & """ and {BonCde.Ordonnateur} = """ & _
            bonCde.Ordonnateur & """ and {BonCde.N_Cde} = " & bonCde.numBon

                temprep.RecordSelectionFormula = selFormule
            Else
                'Passage des paramtres de la procdure stocke
                temprep.SetParameterValue("@Ordo", Request.QueryString.Item("Ordonnateur"))
                temprep.SetParameterValue("@Annee", Request.QueryString.Item("Annee"))
                temprep.SetParameterValue("@Bon", Convert.ToInt32(Request.QueryString.Item("NumBon")))
            End If

            ' Dfinir les informations de connexion pour chaque table de l'tat
            For Each tbReport In temprep.Database.Tables
                ' Extraire l'objet TableLogonInfo.
                logonInfo = tbReport.LogOnInfo
                ' Dfinir le serveur ou le nom de la source de donnes ODBC, le nom de la base de donnes,
                '  l'ID utilisateur et le mot de passe.
                logonInfo.ConnectionInfo.ServerName = ConfigurationSettings.AppSettings("serverSql")
                logonInfo.ConnectionInfo.DatabaseName = ConfigurationSettings.AppSettings("database")
                logonInfo.ConnectionInfo.UserID = ConfigurationSettings.AppSettings("userSqlServer")
                logonInfo.ConnectionInfo.Password = ConfigurationSettings.AppSettings("passSqlServer")
                ' Appliquer les informations de connexion  la table.
                tbReport.ApplyLogOnInfo(logonInfo)
            Next tbReport

            Return temprep
        Catch ex As Exception
            HttpContext.Current.Response.Write("Erreur lors de l'ouverture de l'tat :<BR><BR><BR><BR>" & Server.MapPath(doc & ".rpt"))
            Exit Function
        End Try
    End Function
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack() Or report Is Nothing Then
            report = RemplitEtat()
        End If
        CRViewer.ReportSource = report
    End Sub

    Private Sub BT_ENVOI_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_ENVOI.Click
        Dim fic As String, path As String
        path = Server.MapPath(".") & "\"

        'Attention, si l'etat est dj charg je ne le regnre pas
        If Not report.IsLoaded Then report = RemplitEtat()
        Try
            Select Case RD_DESTINATION.SelectedIndex
                Case 0 'PDF
                    fic = Request.QueryString.Item("doc") & "_" & gh_Utilisateur & ".pdf"
                    report.ExportToDisk(ExportFormatType.PortableDocFormat, path & fic)
                Case 1 'word
                    fic = Request.QueryString.Item("doc") & "_" & gh_Utilisateur & ".doc"
                    report.ExportToDisk(ExportFormatType.WordForWindows, path & fic)
                Case 2 'excel
                    fic = Request.QueryString.Item("doc") & "_" & gh_Utilisateur & ".xls"
                    report.ExportToDisk(ExportFormatType.Excel, path & fic)
            End Select
        Catch ex As Exception
            Response.Write("Erreur lors de l'exportation de l'tat :<BR><BR><BR><BR>" & ex.Message)
            Exit Sub
        End Try
        report.Close()
        report.Dispose()
        report = Nothing
        CRViewer.Dispose()
        Response.Redirect(fic)
    End Sub
End Class


mercredi 27 avril 2005 à 11:53:38 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

Yopyop

oki,

le problème (si j'ai bien compris), c'est que ton code n'imprime pas les documents automatiquement, mais il les génère et ensuite les ouvre pour que l'utilisateur puisse
les imprimer ... c'est ca ?
En fait ta page impression n'imprime rien, mais elle génère des documents
c'est bien ca ?

Maintenant ton user ne veux pas l'un ou l'autre des documents, mais les deux->
génération des 2 rapports->2 fenêtres avec chacune 1 rapport à imprimer...

Si c'est bien le ca, tu vas être obligé d'ouvrir 2 fenêtres car tu doit générer un
pdf et un word dans ce cas (j'ai bien compris?).

L'idée serait donc d'ouvrir une seule fenêtre avec les deux docuements...

Est-ce que tu as pensé a utiliser des frames ?
Une fenêtre en trois parties:
1. Le document Word
2. Le document PDF
3. Le bouton print qui fait un print des 2 documents...

Ca irait ca ?

je vais manger miam:)

yopyop

mercredi 27 avril 2005 à 14:06:48 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

satanik_mike

Re,

En effet, c'est bien le fonctionnement actuel mais qui est voué a changer. Mais ca on verra plus tard.

En plus, les utilisateurs utilisent plusieurs navigateurs différents et certains n'acceptent pas les frames, ce qui m'obligerait à rajouter un traitement (que je ne connais pas encore) qui ferait un chargement différent selon le type de navigateur.

Ta solution serait effectivement envisageable, seulement j'ai peur de ne pas avoir le temps nécessaire pour la développer. En fait, je pense que le plus simple serait que le bouton qui demande l'ouverture de la page impressions.aspx puisse ouvrir 2 fenêtres chargeant la page impression.aspx avec chacune des paramètres différents.
J'ai fait une ébauche avec un script javascript sur le bouton appelant, mais je ne parviens pas à récupérer le numéro du bon sélectionné dans la datagrid d'origine.

Merci de ton interêt,

mercredi 27 avril 2005 à 14:49:19 | Re : Application ASP.NET : Datagrid vers Export crystal report puis vers Word automatique

Yopyop

re,

si tu te bases sur une id de base de données tu peux utiliser Datakeys dans ta
datagrid et la passer en paramètre à ta page.

ou si tu as déjà l'id

tu mets un itemtemplate avec
<a href="impression.aspx?doc=BonCommande&numBon=
<%#Convert.ToString(DataBinder.Eval(Container.DataItem,"Id"))%>
imprimer bon</a>

ou si tu passes par un javascript
<a href="#" onclick="maFonctionJavascript(<%#Convert.ToString(DataBinder.Eval(Container.DataItem,"Id"))%>);">print both documents</a>

et maFonctionJavascript(iId) recoit l'id et fait 2 window.open.

<%# Convert.ToString(DataBinder.Eval(Container.DataItem,"Id")) %>
yopyop


1 2

Cette discussion est classé dans : net, asp, datagrid, word, aspx


Répondre à ce message

Sujets en rapport avec ce message

En ASP.net, les datagrid et autres outils du genre sont ils inévitables ? [ par BigJim ] La question vient du fait que je code à la main la plupart du temps, même si j'utilise Dreamweaver pour générer le code HTML "standard".L'écriture man Compil ASP.NET - Debutant [ par sebfunzy ] Bonjour a tous!J'ai un petit probleme basique:Lorsque que je crée une page fomulaire.aspx avec son code behind formulaire.aspx.vb, dois-je compiler ob Ouvrir une nouvelle fenetre en ASP.NET [ par mimi75 ] Bonjour, j'aimerais savoir comment on ouvrir une nouvelle fenetre en ASPX.J'utilise :Dim retour As String = "window.open='Impression.aspx'" Res asp.net et flash mx [ par wheel46 ] peut on mettre les fichiers .swf dans une page aspx? avec l'html j'y arriveais pas avec aspxmerci code behind dans asp.net [ par kenza_sana ] Salut je trouve partotu que le code behind en realite separe le fichier presentation du code donc (html et aspx)alors que je trouve parfois que ca sep Concernant envoie de mail en ASP ou ASP.net [ par jagdjg ] Bonsoir j ai lu les sujets consacrés au mail mais j ai plusieurs questions.En fait j ai cree un projet web dans visual studio .net mais j ai inclus de ASP.NET : récupération de données (et notamment d'un ID) à partir d'un datagrid ou d'un datalist [ par vir76 ] Voilà j'ai une table T_FILM avec le champ ID_FILM. J'aimerais récupérer la valeur de ce champ à partir d'un datagrid. Comment faire?. [asp.net]Nombres de lignes ds un datagrid [ par jimmy69 ] Salut a tous,Voila je debute avec asp.net (vb.net)et j'aimerais savoir comment je pourrai faire pour connaitre le nombre de lignes que contient mon da Répéter un Datagrid avec des données différentes(ASP.NET) [ par SuperBouly ] Je repose ma question ici car j'ai oublié un mot (riez pas)Peut-on afficher plusieurs fois SUR LA MEME PAGE un Datagrid avec des données différentes Selection d'une ligne d'un datagrid sous ASP.NET [ par vmasson ] Bonjour a tous,Alors voila, je récupère des données d'une base de données dans un DATAGRID.J'affiche pas tous les champs de mes enregistrements parcek


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.