Chiusura sessione Crystal Report

mercoledì 07 luglio 2010 - 12.02

Samu Profilo | Newbie

Ciao a tutti,
ho generato un codice che stampa dei dati attraverso il metodo PrintOut. Dopo il suddetto metodo, il database agganciato a CR rimane aperto nonostate abbia impostato tutto a nothing ( praticamente rimane la sessione di crystal report aperta ). Vi posto il codice:

' Dynamically add the CRVIEWER control to the form
Set ctlCRViewer = Controls.Add("CrystalReports.ActiveXReportViewer", "ctlCRViewer", frmFNwdiCOCP)
'Make the Viewer not visible
ctlCRViewer.Visible = False
'Set the report object
Set crxReport = crxApplication.OpenReport(FileReport, 1)
' Modifico la fonte dati del database
' La modifica deve essere fatta su tutte le tabelle utilizzate nel report
For Each tbl In crxReport.Database.Tables
tbl.SetLogOnInfo strPathDbStampa
Next

' Non carica i dati eventualmente salvati con il database
crxReport.DiscardSavedData
' Imposto il driver, il nome e la porta della stampante
crxReport.SelectPrinter Printer_drv, Printer_name, Printer_port
' A seconda dell'orientamento della carta imposto la proprietà relativa
If Printer_orientation = "ORIZZONTALE" Then
crxReport.PaperOrientation = crLandscape
Else
crxReport.PaperOrientation = crPortrait
End If
'Set the report source
ctlCRViewer.ReportSource = crxReport
' Visualizza la colonna dell'albero dei link al report
ctlCRViewer.DisplayGroupTree = False
'Enables the CRViewer's Navigation Controls
ctlCRViewer.EnableNavigationControls = True
'Disables the CRViewer's Search control
ctlCRViewer.EnableSearchControl = False
' Logo della Business Object
ctlCRViewer.EnableAnimationCtrl = False
' Visualizza il pulsante chiudi
ctlCRViewer.EnableCloseButton = True
' Visualizza l'albero dei riferimenti
ctlCRViewer.DisplayGroupTree = False
' Abilita un pulsantino con il punto di domanda
ctlCRViewer.EnableHelpButton = False
' Visualizza il pulsante che consente di fare la stampa
ctlCRViewer.EnablePrintButton = True
' Abilita il pulsantino che consente di ricaricare i dati nel report
ctlCRViewer.EnableRefreshButton = True
' Abilita il cmb con la percentuale di zoom visualizzata
ctlCRViewer.EnableZoomControl = True
' Non visualizza il pulsante che consente di visualizzare il group tree
ctlCRViewer.EnableGroupTree = False
' Se devo stampare su pdf allora imposto le variabili necessarie e lancio l'estrazione dei dati nel file pdf
' altrimenti lancio la stampa senza l'anteprima della stampa
If blnPrintSuPdf = True Then
' Imposta l'estrazione su disco
crxReport.ExportOptions.DestinationType = crEDTDiskFile
' Imposta il nome del file nome.pdf con il relativo path
crxReport.ExportOptions.DiskFileName = strNomeFilePDF
' Imposta il formato di estrazione pdf
crxReport.ExportOptions.FormatType = crEFTPortableDocFormat
' Esporta il file
crxReport.Export False
Else
' Se deve fare l'anteprima lancia il viewReport altrimenti stampa senza
' anteprima e impostando il numero di copie
If blnFareAnteprima Then
' Imposta le variabili di default per effettuare l'anteprima
Call r_SetVarAnteprima
ctlCRViewer.Visible = True
' Set the location and size of the CRViewer
ctlCRViewer.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
' Visualizza l'anteprima
ctlCRViewer.ViewReport
Do While ctlCRViewer.IsBusy
DoEvents
Loop
' Imposta la percentuale di zoom
ctlCRViewer.Zoom (100)
Me.Show vbModal
Else
crxReport.PrintOut False, cmdCopie
End If
' se Garel (archiviazione elettronica, esporta anche in pdf
If GarelDir <> "" Then
' Imposta l'estrazione su disco
crxReport.ExportOptions.DestinationType = crEDTDiskFile
' Imposta il nome del file nome.pdf con il relativo path
crxReport.ExportOptions.DiskFileName = strNomeFilePDF
' Imposta il formato di estrazione pdf
crxReport.ExportOptions.FormatType = crEFTPortableDocFormat
' Esporta il file
crxReport.Export False
End If

End If

Set crxReport = Nothing
Set ctlCRViewer = Nothing


Help...:-(

freeteo Profilo | Guru

Ciao,
se non ho capito male tu stai usando vb6, in quanto usi ancora il componente COM di Crystal.

Ad ogni modo potresti pensare di passare tu i dati al report, senza lasciare che sia lui a fare la connessione al database, come mostrato qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=7942
in quel caso fai tutto da codice ADO e quindi apri e chiudi la connessione in maniera controllata da te...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5