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

VB.NET Discussion :

Petit soucis de portée de variable


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut Petit soucis de portée de variable
    Bon voila, étant issu du monde java et n'ayant fais que très peu de C, les pointeurs et équivalent (ByVal etc...) ne sont pas du tout mon fort, et je pense que c'est de la que vient mon petit problème de code.

    Le truc est tout simple : j'ai un page asp Default.aspx. Au début de mon code Default.aspx.vb j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Partial Class _Default
        Inherits System.Web.UI.Page
        Private report As New ReportDocument
    Je déclare donc une variable report qui est de type ReportDocument (pour du Crystal Report donc, ca vient peut etre de la aussi le problème)

    Sur ma page Default, j'ai 2 boutons, l'un qui va ouvrir un .rpt qui se trouve sur le disque dur dans la variable report, récupérer une valeur dans une textbox pour la passer en paramètre et afficher le tout dans un CrystalReportViewer. Le deuxième bouton sert à imprimer ce rapport (directement la variable report, on voudrait se passer de la barre de controle du crystalreportviewer, et je ne peux pas utiliser la méthode d'impression du crystalreportviewer). Voila donc le code des deux méthodes Button_click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.report.Load("C:\Rapport8.rpt")
            Me.report.SetParameterValue(0, TextBox1.Text)
            CrystalReportViewer1.ReportSource = report
            CrystalReportViewer1.Visible = True
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
            report.PrintToPrinter(1, false, 0, 0)       
        End Sub
    Problème : dans le Button2_click, la variable report est "vide" (après avoir cliquer sur le premier bouton bien entendu). Voila ce que je crois comprendre :
    - je déclare une variable ReportDocument qui s'appelle "report"
    - quand je clique sur le bouton 1, je charge le rapport machin.rpt en lui passant des paramètres, je l'affiche etc...
    - quand je clique sur le bouton 2 après le bouton 1, j'essaye d'imprimer le rapport, mais il dit que le chemin d'accès au rapport n'est pas correct. Si j'essaye d'afficher l'attribut FileName, il n'en a pas
    - j'ai donc l'impression que lorsqu'on sort de la méthode Button1_click, la variable report ne récupère pas les changements qui ont été effectués, celle qui a été modifiée n'était qu'une copie de la variable originale.

    J'ai évidemment tenté toutes les combinaisons de déclaration : Dim, Friend, Public, Private, j'ai meme essaye de la déclarer en static dans la première méthode, mais rien n'y fais.

    Voila, si quelqu'un peut résoudre ce problème simple, parce que moi jsuis paumé la dedans, merci d'avance !

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    391
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Décembre 2005
    Messages : 391
    Par défaut
    dans l evenement de bouton 1
    mets ton raport dans une session

    puis dans le bouton 2 recherche le rapport dans la ssession

    car en aspx a chaque clic les variables de la classe sont reinitialisees

    bonne chance

  3. #3
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    avant d'imprimer, il faut rajouter le code du premier bouton, moi j'avais eu le soucis pour extraire en pdf, le cr se chargai bien mais l'export pdf ne se faisait jamais.

    Code : 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
     
     
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.report.Load("C:\Rapport8.rpt")
            Me.report.SetParameterValue(0, TextBox1.Text)
            CrystalReportViewer1.ReportSource = report
            CrystalReportViewer1.Visible = True
        End Sub
     
        Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
            Me.report.Load("C:\Rapport8.rpt")
            Me.report.SetParameterValue(0, TextBox1.Text)
            CrystalReportViewer1.ReportSource = report
     
            report.PrintToPrinter(1, false, 0, 0)       
        End Sub
    Problème

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    Citation Envoyé par HULK
    avant d'imprimer, il faut rajouter le code du premier bouton, moi j'avais eu le soucis pour extraire en pdf, le cr se chargai bien mais l'export pdf ne se faisait jamais.

    Code : 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
     
     
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.report.Load("C:\Rapport8.rpt")
            Me.report.SetParameterValue(0, TextBox1.Text)
            CrystalReportViewer1.ReportSource = report
            CrystalReportViewer1.Visible = True
        End Sub
     
        Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
            Me.report.Load("C:\Rapport8.rpt")
            Me.report.SetParameterValue(0, TextBox1.Text)
            CrystalReportViewer1.ReportSource = report
     
            report.PrintToPrinter(1, false, 0, 0)       
        End Sub
    Problème

    Cette méthode marche, je l'avais essayé, mais je trouve ca un peu barbare de regénérer deux fois le rapport (puisqu'on lui envoie deux fois les paramètres etc...). D'autant plus que, si entre les deux clics de bouton quelque chose change, le rapport imprimé ne sera pas le meme que celui affiché à l'écran.

    Jvais tenter les variables de session.

    Edit : c'est bon, les variables de session font très bien leur boulot, merci beaucoup

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

Discussions similaires

  1. petit soucis de portée de variable
    Par Darkyl dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/06/2012, 13h25
  2. Petit souci de définition de variable
    Par ArnaudMO dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/05/2011, 15h20
  3. Petit souci de label avec variables intégrées
    Par Attila54 dans le forum VB.NET
    Réponses: 7
    Dernier message: 06/04/2011, 14h21
  4. [Système] Petit souci de passage de variables
    Par geoffrey38 dans le forum Langage
    Réponses: 2
    Dernier message: 20/12/2006, 17h26
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45

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