Hoe kan ik vanuit mijn vb.NET code ervoor zorgen dat het tijdelijke bestand
van een rapport in Crystal Reports wordt weggeschreven op de plaats waar ik
wil?
Ik heb dit reeds geprobeerd in de constructor van het rapport object:
Public Sub New()
MyBase.New()
Dim tempPath As String = "\\mijnServer\mijnMap\" If
System.IO.Directory.Exists(tempPath) = False Then
System.IO.Directory.CreateDirectory(tempPath)
End If
Dim tempFileName As String = System.Guid.NewGuid().ToString.ToLower
& ".rpt"
m_sTempFilename = tempPath & tempFileName
End Sub
Ik heb ook reeds de volgende code geprobeerd op het moment dat ik het
rapport als report source toewijs aan een report viewer in een dialog form.
Maar ik krijg een foutmelding, het rapport wordt wel getoond in de viewer
maar mijn pad wordt genegeerd:
Private Sub dlgReport_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim oReport As Reports.MyReport = CType(crViewer.ReportSource,
Reports.MyReport)
Dim tempPath As String = "\\mijnServer\mijnMap\"
If System.IO.Directory.Exists(tempPath) = False Then
System.IO.Directory.CreateDirectory(tempPath)
End If
Dim tempFileName As String = System.Guid.NewGuid().ToString.ToLower
& ".rpt"
oReport.FileName = tempPath & tempFileName
crViewer.RefreshReport()
End Sub
Het eigenlijke probleem is dat de code perfect werkt op mijn ontwikkel PC
maar eenmaal gecompileerd en gepublished op onze Citrix Application Server
krijg ik volgende foutmelding:
De verbinding kan niet worden geopend.
De verbinding kan niet worden geopend.
temp_36cf1a26-ad41-472c-9d2d-690e525bd94c
{81FF3D89-BF38-40A6-BCA2-B1AAD5350C15}.rpt
Ik krijg die fout 2 maal: juist voor het openen van het dialoog venster en
nogmaals nadat het dialoogvenster met de reportvieiwer is geopend. Het
rapport is niet te zien.
Ik heb het nagekeken en de connection string is correct en alle andere ADO
gerelateerde code in mijn toepassing werkt perfect.
Ik kan alleen maar aan een security probleem denken: het programma heeft
misschien vanop de Citrix Application Server geen rechten om het tijdelijke
rapport bestand te schrijven.
Om die reden heb ik geprobeerd om het file path van het tijdelijke rapport
op te sporen tijdens run time met volgende code:
Dim oReport As Reports.MyReport = CType(crViewer.ReportSource,
Reports.MyReport)
MessageBox.Show(oReport .FileName)
Maar ik krijg alleen een lege string ("") als resultaat.
In Debug krijg ik hetzelfde, maar wanneer ik met QuickWatch de informatie
opvraag van de oReport object, krijg ik na enkele seconden alle gegevens en
ook het echte file path. Als ik daarna de code MessageBox.Show(oReport
.FileName) laat uitvoeren dan krijg ik ook de correcte bestandsnaam..
Jammer genoeg kan ik niet debuggen op de Citrix Application Server en dus
kan ik het pad naar het tijdelijke rapport bestand niet vinden.
Wie kan me hierbij helpen?
Ik gebruik Studio.NET 2008, SQL Server 2005 en Crystal Reports 12
Bedankt,
RW
Report post as abusive
--
RW