IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

Client Crystal Report


Sujet :

Visual Studio

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Client Crystal Report


    En passant sur VS 2013, j'ai bien sûr du changer de client Crystal Report pour VS pour pouvoir éditer mes rapport directement depuis VS.
    Problème en passant à la dernière version (13.0.13):
    Une exception de type 'System.InvalidCastException' s'est produite dans App_Web_sn1zukvl.dll mais n'a pas été gérée dans le code utilisateur

    Informations supplémentaires : Impossible d'effectuer un cast d'un objet de type 'FileStreamDeleteOnClose' en type 'System.IO.MemoryStream'.
    Avec le code habituellement utilisé:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        Protected Sub btnRapport_Click(sender As Object, e As EventArgs) Handles btnRapport.Click
            Dim etat As New rpRapportComplet
            Dim ms As System.IO.MemoryStream
            Dim ds As New dsGeneral
            Dim infos As New dsGeneralTableAdapters.V_INFOS_GENERALESTableAdapter
     
            infos.FillByStep(ds.V_INFOS_GENERALES, ucFiltres.Ouvrage.SelectedValue.ToString())
     
            Try
                etat.SetDataSource(ds)
                etat.PrintOptions.PaperOrientation = CrystalDecisions.[Shared].PaperOrientation.Portrait
                ms = etat.ExportToStream(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat)
     
                Session("cr") = ms
     
                Page.ClientScript.RegisterClientScriptBlock(
                    Me.GetType(),
                    "page dans nouvelle fenetre",
                    "window.open('PDF.aspx', 'PDF' ,'toolbar=yes,status=yes,directories=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes')",
                    True)
     
                etat.Close()
                etat.Dispose()
            Catch ex As Exception
                Throw ex
            End Try
        End Sub

    Quelqu'un aurait déjà eu ce problème et réussi à le résoudre ?


    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    après une petite recherche CRW 2008 SP4 et supérieur n'accèpte plus l'export vers le type System.IO.MemoryStream (et même dans les versions précédents cela soulevait parfois des problèmes, avec des rapports de bug à la clé). Apparemment un simple changement du typage de ta variable en System.IO.Stream devrait suffir (de ce que j'ai compris). A tester
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Oui c'est bien ça merci. Mais sur la page que je lance il y a le code de lecture qui permet de retranscrire le fichier PDF. Avec les MemoyStream il y avait une fonction de conversion pour passer d'un MemoryStream à un tableau d'octet. J'ai bien essayé de faire quelque chose mais ça ne fonctionne pas:
    Le fichier ne commence pas par '%PDF-'Local\EWHp$oj~tc{


    Voici mon code:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
            Dim oStr As System.IO.Stream
            Dim s As String = Nothing
     
            oStr = CType(Session("cr"), System.IO.Stream)
            s = oStr.ToString()
     
            Session("cr") = Nothing
     
            With Response
                .Clear()
                .Buffer = True
                .ContentType = "application/pdf"
                .BinaryWrite(System.Text.Encoding.Unicode.GetBytes(s))
                .Flush()
                .End()
            End With
    Ca ne fonctionne pas peu importe le système d'encodage.


    Plus je connais de langages, plus j'aime le C.
    Pareil C'est mon langage Number 1
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    En fait j'ai trouvé une fonction qui fait le boulot demandé et ça fonctionne, mon rapport PDF s'affiche à nouveau, mon code complet:
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Imports Microsoft.VisualBasic
    Imports System
    Imports System.IO
     
    Partial Class PDF
        Inherits System.Web.UI.Page
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim oStr As System.IO.Stream
     
            oStr = CType(Session("cr"), System.IO.Stream)
     
            Session("cr") = Nothing
     
            With Response
                .Clear()
                .Buffer = True
                .ContentType = "application/pdf"
                .BinaryWrite(GetStreamAsByteArray(oStr))
                .Flush()
                .End()
            End With
        End Sub
     
        Private Function GetStreamAsByteArray(ByVal stream As System.IO.Stream) As Byte()
            Dim streamLength As Integer = Convert.ToInt32(stream.Length)
            Dim fileData As Byte() = New Byte(streamLength) {}
     
            ' Read the file into a byte array
            stream.Read(fileData, 0, streamLength)
            stream.Close()
     
            Return fileData
        End Function
    End Class
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impression de crystal report coté client
    Par eival dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 29/08/2014, 13h49
  2. Réponses: 0
    Dernier message: 27/05/2013, 16h04
  3. Réponses: 0
    Dernier message: 27/10/2009, 00h46
  4. CRYSTAL REPORT ET NATSTAR
    Par TILK dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 03/09/2002, 16h42
  5. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo