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