I want to do a batch Convert of all Crystal Report files into PDF

Basically I want to convert every crystal report file (.rpt) that is in a certain folder into a pdf.  I set up a VB.NET Windows form for a button click to just try with one report first, then eventually I want  change to loop through all records when I can get this one working.  

Would this be the correct way to do it?  Errors it shows for me are
CRAXDRT.Application is not defined
CRAXDRT.Report is not defined
crEDTDiskFile is not declared
crEFTPortableDocFormat is not declared

Here is the code.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Transformation.Click
        Dim appl As New CRAXDRT.Application
        Dim rep As CRAXDRT.Report
        rep = appl.OpenReport("c:\mytest.rpt", 1)
        rep.ExportOptions.DiskFileName = "c:\pdf_report.pdf"
        rep.ExportOptions.DestinationType = crEDTDiskFile
        rep.ExportOptions.FormatType = crEFTPortableDocFormat
    End Sub

Please help?  Thanks ahead of time vikingg97
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Have you added the crystal references to your project - sounds like you haven't so CRAXDRT isn't going to be recognized.

Actually I looked again at your code - try this:

Dim appl As CRAXDRT.Application
Dim rep As CRAXDRT.report
Set appl = CreateObject("CrystalRuntime.Application.9")
Set rep = appl.OpenReport("c:\mytest.rpt",1)

vikingg97Author Commented:
How do I add the crystal references to your project?  

Also I added:

Dim appl As CRAXDRT.Application -->STILL saying not defined
Dim rep As CRAXDRT.report -->STILL saying not defined
Set appl = CreateObject("CrystalRuntime.Application.9")
Set rep = appl.OpenReport("c:\mytest.rpt",1)

Also it won't let me write Set on VS.NET?  It just corrects it like its not supposed to be there.  Any clue?  

Sorry about the loaded questions.
Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

I always do that - too much asp work lately.  Forget the 'set' keywork.

Actually you should probably just scrap what you've got and go with code like this:

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Dim CrReport As New CrystalReport1()
Dim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions()
Dim CrFormatTypeOptions as New PdfRtfWordFormatOptions()

'Set the destination path and file name
CrDiskFileDestinationOptions.DiskFileName = "c:\RichText.pdf"

'Specify a page range (optional)
crFormatTypeOptions.FirstPageNumber = 1
crFormatTypeOptions.LastPageNumber = 3
crFormatTypeOptions.UsePageRange = True

'Set export options
CrExportOptions = crReport.ExportOptions

With CrExportOptions
'Set the destination to a disk file
.ExportDestinationType = ExportDestinationType.DiskFile
'Set the format to PDF
.ExportFormatType = ExportFormatType.PortableDocFormat
'Set the destination options to DiskFileDestinationOptions object
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = crFormatTypeOptions
End With

' Trap any errors that occur on export
'Export the report
Catch err As Exception
End Try

This code from here: http://support.businessobjects.com/library/kbase/articles/c2010264.asp

vikingg97Author Commented:
Ok I have done this and come up with the squigly lines under  CrystalDecisions.CrystalReports.Engine and CrystalDecisions.Shared
for these lines
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Here is what the tooltip says:
--namespace for type engine for the imports of 'CrystalDecisions.CrystalReports.Engine' cannot be found.

--namespace for type engine for the imports of 'CrystalDecisions.Shared' cannot be found.
In your solution explorer, expand to the "References" node and right click then select Add Reference.  You should see CrystalDecisions.Shared under the .Net tab - select it, then select the CrystalReports.Engine and click OK.  This will add these dll's to your project.

vikingg97Author Commented:
Ok added the references to it and squiglies are gone but new ones appear on

Dim CrReport As New CrystalReport1   ''* Error CrystalReport1 is not defined

MessageBox.Show(err.ToString())  ''*MessageBox is not Declared

I think I am getting closer..
Don't worry about the messagebox for now - that's just error trapping code anyway.

CyrstalReport1 is the name of the viewer.  You should drag a viewer from your toolbox onto your form.  By default it'll be named CrystalReport1 - of course you can change the name and just change your code to reflect whatever name you use.

Ignore the last post - my brain is hurting today.  Instead:

Rt-click on your project then select Add -> Add New Item -> Crystal Report.

This will add a report object to your project and create the class which will be named (by default) CrystalReport1.
vikingg97Author Commented:
OK cool that is happening for me now and it builds just fine creating my pdf.  Thanks frodoman. I will award you the points, but for the most part I am wanting to look out in a certain folder for CR, and loop through it to generate pdf's for all of them, in one button click.  I am not sure if I should post this as a new question, for more points or not, let me know.  If someone else can answer this, then I can award partial points, since frodo mostly helped me.  Let me know frodoman..
Thanks in advance.
Basically what you'll want to do is take your working export code and put it inside a loop that itterates through all of the files.  You'll have to flesh this out a little bit but the basic process would be something like this:

    Dim fileList() As String = System.IO.Directory.GetFiles(pathSource)
    For Each fileSource As String In fileList
        If  Right(fileSource,4) = ".rpt" Then
           <<<Crystal Export Code Here>>>
        End If

In your crystal export code replace the hard coded filename with the "fileSource" variable.  If you need additional help with the looping you should probably post a separate question in the VB.Net forum ( http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/ ).



Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
vikingg97Author Commented:
Thanks frodoman, I posted a new question on VB.NET still relating to this question on http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/Q_21177464.html 

If anyone needs to follow this.  

Thanks again frodoman.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Crystal Reports

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.