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 :
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)
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
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 SubProblè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 :
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
- 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 !
Partager