I'm writing a function on a button click that allow the user to send an email to a list of customers which an attached .pdf of the invoice, which is made using Crystal Reports. I've got the email function working, I can retrieve the correct information and send an email to each customer in the list, but I'm having trouble with the attachment side of things.
In the same project, I do have a window with a ReportViewer on that I'm using to generate and view individual reports, however, due to the large amount of reports that potentially are being created and sent at once, I need to now create them without using this window.
Is it possible to generate a report and then convert it to .pdf without using a ReportViewer, and if so, how can I do this?
I thought maybe by using SQL to select all of the data that I need and store it in a DataSet, but I'm not sure what would need doing after this.
It's actually more simple than I think you're imagining it to be.
Just setup the login info for the database required, then retrieve the data from the database using SQL, and store it in a DataSet
, which you set to be the reports DataSource
, then export it. Obviously you may have different ways of doing things but this should roughly do it
Dim report As New ReportDocument
Dim dest As String = ` This is where you put your file destination
report.Load(dest)
Dim info As CrystalDecisions.Shared.TableLogOnInfo
info = New CrystalDecisions.Shared.TableLogOnInfo()
info.ConnectionInfo.DatabaseName = ' Your DB name
info.ConnectionInfo.ServerName =' Your DB server name
info.ConnectionInfo.Password = ' Your DB password
info.ConnectionInfo.UserID = ' Your DB UserID
report.Database.Tables(0).ApplyLogOnInfo(info)
sql = "SELECT * FROM your_table"
Dim rda As New OleDb.OleDbDataAdapter(sql, connectionstring)
Dim rds As New DataSet
rda.Fill(rds)
report.SetDataSource(rds)
CrDiskFileDestinationOptions.DiskFileName = ' Your directory path and chosen file name
CrExportOptions = report.ExportOptions
With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
report.Export()