Questione : “Discussione non valida fornita.„ L'errore quando genera PDFs nell'applicazione di VB.NET via il cristallo segnala il visore

Ho sviluppato un'applicazione semplice per generare i documenti del pdf. Funziona appena fine, a meno che sembri che approssimativamente ogni ottavo abbia generato il rapporto che mi dà “una discussione non valida fornita. Non riuscito a richiamare i dati dalla base di dati. Errore in lima C:\DOCUME ~1 \ \ LOCALS~1 \ Temp \ PDF_Report {EDB21020-D860-4FEE-B5FA-55AD61847E3F} .rpt: Discussione non valida per base di dati.„ errore. L'applicazione è intesa per leggere un insieme delle variabili da una lima di testo, generare il rapporto, quindi per esportare quella lima verso il dispositivo di piegatura adatto. Qui è il mio codice:

Imports CrystalDecisions.CrystalReports.Le maniglie secondarie riservate Start.Click

del codice categoria Form1

Start_Click (mittente di Engine
Imports CrystalDecisions.Shared
Imports System.IO
Imports System.Threading.Thread

Public di ByVal come System.Object, ByVal e come System.EventArgs) 'generano il nuovo caso di StreamReader con usando block.
Using il lettore come StreamReader = nuovo contatore fioco del

di StreamReader (“file.txt„) come il numero intero = 0

mentre (non) il
oscura la linea come String
AssessmentID fioco come String
VisitID fioco come rptPath fioco di String
come linea di String

= reader.ReadLine

AssessmentID = linea. Sottostringa (0, 7)
VisitID = linea. Sottostringa (8, il rptPath di 7)

= “di C:\PDF _Report.rpt " oscura il CR come nuovo crParameterDiscreteValue fioco del

del
CR.SetDatabaseLogon ( “dell'utente ", “parola d'accesso„, “assistente„, “db„ di ReportDocument

CR.Load (rptPath)) come nuovo crParameterFieldDefinitions di ParameterDiscreteValue
come crParameterFieldLocation fioco di ParameterFieldDefinitions
come crParameterValues fiochi di ParameterFieldDefinition
mentre nuovo ParameterValues

„ ottiene del rapporto di parametri collection.
'crParameterFieldDefinition/>s = CR.DataDefinition.ParameterFields
'del
i crParameterValues del
di crParameterFieldLocation = del crParameterFieldDefinitions.Item il

(“@AssessmentID„) = il crParameterDiscreteValue di crParameterFieldLocation.CurrentValues
= nuovo CrystalDecisions.Shared.ParameterDiscreteValue
crParameterDiscreteValue.Value = crParameterValues del
di crParameterFieldLocation = del crParameterFieldDefinitions.Item (“@Visit_OID„ del

) del
crParameterFieldLocation.ApplyCurrentValues (crParameterValues) del
crParameterValues.Add (crParameterDiscreteValue) di Int (AssessmentID) = crParameterFieldLocation.CurrentValues
'crParameterDiscreteValue = nuovo CrystalDecisions.Shared.ParameterDiscreteValue
crParameterDiscreteValue.Value = crParameterFieldDefinition
del
crParameterFieldLocation.ApplyCurrentValues (crParameterValues) di VisitID
crParameterValues.Add (crParameterDiscreteValue)/>s = CR.DataDefinition.ParameterFields

CrystalReportViewer1.ReportSource = CR

txtAssessmentVisit.Text = AssessmentID &„/“& VisitID

oscurano il myDiskFileDestinationOptions come myDiskFileDestinationOptioskFileDestinationOptions
/>ns = nuovo Il
di CrystalDecisions.Shared.DiskFileDestinationOptions () oscura i myExportOptions come myExportFile fioco di CrystalDecisions.Shared.ExportOptions
come String
myExportFile = “S:\Missed Assessments\MIASA„ & del
di .pdf„ & di AssessmentID "/>eName = i myExportOptions del myExportFile
= CR.ExportOptions
myExportOptions.DestinationOptions = myDiskFileDestinationOptions
myExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
myExportOptions.ExportFormatType =

del
GC.Collect di ExportFormatType.PortableDocFormat

CR.Export () () ricambiano = contro + 1
di counter.ToString = di txtNumberProcessed.Text () del

di conclusione di While
di conclusione estremità Sub
End Class

Thank del

di Using

MessageBox.Show il myDiskFileDestinationOptions.DiskFil class= del

Risposta : “Discussione non valida fornita.„ L'errore quando genera PDFs nell'applicazione di VB.NET via il cristallo segnala il visore

Prova che fa due volte l'accumulazione del garbabe:
Pulire la memoria.
GC.Collect ();
GC.WaitForPendingFinalizers ();

// che La GASCROMATOGRAFIA deve essere denominata due volte per ottenere
// Finalizers ha denominato - la prima volta dentro, fa semplicemente
// una lista di che cosa deve essere finito, la seconda volta dentro,
// esso realmente la conclusione. Allora soltanto
l'oggetto di // fa il relativo ReleaseComObject automatico.
GC.Collect ();
GC.WaitForPendingFinalizers ();
Altre soluzioni  
 
programming4us programming4us