3
我想知道如何通过代码导出水晶报告与4个参数。我试图返回下面的代码和“无效的索引错误”将水晶报告导出到pdf
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As New ParameterValues
Dim crParameterDiscreteValue As New ParameterDiscreteValue
Dim crParamenter_array As New ParamArrayAttribute
Dim cryRpt As New ReportDocument
Dim DefaultPrinterName As String
Dim oPS As New System.Drawing.Printing.PrinterSettings
Dim sFilePath As String
Dim sPath As String
Dim sFileLoc As String
Dim sFileName As String
Try
sPath = Path.GetTempPath()
DefaultPrinterName = oPS.PrinterName
sFilePath = GetCrystalReport(_REPRT_CODE)
sFileLoc = sPath + "Reports\" + _REPRT_CODE + ".rpt"
If sFilePath = String.Empty OrElse sFilePath = Nothing Then
TNotification.StatusBarError("File Not Found.")
Return False
Else
cryRpt.Load(sFileLoc)
End If
If Not SetDbLogonInfo(cryRpt) Then
TNotification.StatusBarError("Database Login Failed.")
Return False
Else
crParameterDiscreteValue.Value = _empid
crParameterDiscreteValue.Value = _month
crParameterDiscreteValue.Value = _parea
crParameterDiscreteValue.Value = _year
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item("empid")
crParameterFieldDefinition = crParameterFieldDefinitions.Item("month")
crParameterFieldDefinition = crParameterFieldDefinitions.Item("parea")
crParameterFieldDefinition = crParameterFieldDefinitions.Item("year")
crParameterValues = crParameterFieldDefinition.CurrentValues
' crParameterValues.Clear()
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
cryRpt.PrintOptions.PrinterName = DefaultPrinterName
Dim rep As CrystalDecisions.CrystalReports.Engine.FieldObject = Nothing
'sending report to the printer
'cryRpt.PrintToPrinter(_noOfCpys, False, 1, 100)
Dim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New _
DiskFileDestinationOptions()
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions()
' CrDiskFileDestinationOptions.DiskFileName = "c:\" + _rptCode + "_" + _docEntry + ".pdf"
'sFileName = "\\B1devsrv\b1_shr\Attachments\" + _rptCode + "_" + _docEntry.ToString + ".pdf"
sFileName = TSQL.GetSingleRecord("Select AttachPath from OADP").ToString.Trim + _empid + "_payslip.pdf"
CrDiskFileDestinationOptions.DiskFileName = sFileName
CrExportOptions = cryRpt.ExportOptions
With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
cryRpt.Export()
If SendMail(_empid.ToString, sFileName) Then
TNotification.MessageBox("Email Sent")
End If
If File.Exists(sFileLoc) Then
' File.Delete(strFileLoc)
End If
End If
Return True
Catch ex As Exception
Throw ex
End Try
你在哪里得到的错误是什么线,stakctrace –
? crParameterDiscreteValue.Value = _empid crParameterDiscreteValue.Value = _month crParameterDiscreteValue.Value = _parea crParameterDiscreteValue.Value = _year crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields crParameterFieldDefinition = crParameterFieldDefinitions.Item(“empid”) – Sivajith
它在这一行吗? crParameterFieldDefinition = crParameterFieldDefinitions.Item( “EMPID”) –