Open a report without Crystal Reports installed

I have created a program in VC++ and in it I open a report I created in Crystal Reports V6, it does open no problem on my computer, but when other try to open it they have an error telling them that there is the dll Pdsodbc.dll that is missing.
I try to put that dll in the system, system32 and winnt\crystal directories but they still get the same message.
So I was wondering if there a way to make them open the report without having them to install crystal report on their computer, a reader could do the job but all I can find it is one for the higher version or even beter a way to make the file readable to all or maybe some code I can add to make it that way!!!

Thanks a lot for your time!

p.s. Sorry if my english do not sound good since it not my primary language!
Who is Participating?
DanRollinsConnect With a Mentor Commented:
Unlike with Visual Basic, there is no "Package anf Deployment Wizard" for VC++

There is a version of InstallShield... but at least when I used it, I had to tell it each of the files I wanted to install and each of the self-registering DLLs  (ActiveX COM modules) to install and register.

I don't know how to deploy a VC++ program that uses Crystal Reports, but here is how I'd start:

I'd run my VC++ program in the debugger and watch the "Output screen"  It shows a line like:
    Loading c:\dir\prog.DLL ...
for each DLL that the program uses.  This will include several system DLLs which you should not deploy, but there will be several CR-related DLLs that you will need to use.

Now, go to a different computer and copy your EXE file into a directory.  Try to run it and you will get an error.  Then copy each of the DLLs from that list into the same directory and try again... until it works or you have copied all of the DLLs.

If it never starts, or starts but fails when you try to generate the report, then it is possible that one of more of the DLLs is an ActiveX/COM module that needs to be registered.  TO register a COM object manually, get to a Command prompt in the directory and type:

   regsvr32 the_name_of_a_dll

You will problably need to manually register any DLLs that you brought into your project via the #import directory.

Once you find out which DLLs you need to copy and which (if any) need to be registered, I can provide help in how to use InstallShield to create a setup disk.

-- Dan
You need to build an installation package which includes all the Crystal dlls that are required.

Look in the developer help files or other helps files from CR6 to determine which files are required.

CR8 (which I use) requires many files to be included depending on the options I make available to the program.
Here is a list for CR7

cdextrazeAuthor Commented:
Well I am not sure if it is what you tell me to do, but I used "Report distribution expert" and when I try to install it, I get the error "General INF file error in file RPTFILES.INF. Check for unmatched quotes, brackets or braces"
It seem to create an exe of my report too and I was wondering since I call it from my program with some some change like show only between that and that date if it will still work that way or I have to rewrite some of my code to make it work, unless I am completly out of the track and I still use the same report and it should install all the dll that is needed to open it?

thanks again for your time!


p.s. I double the point since it is harder than I though at first!!!
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Thanks Dan.

cdextrazeAuthor Commented:
Thanks for the anwser!

My program do run np on other computer it only when I try to open the report that I get the missing dll.
So I look at my debug window like you say he did when I click the button to open the repport :
Loaded symbols for 'C:\WINNT\system32\crystl32.ocx'
and a lot of other dll but at the end of each of those line there is "no matching symbolic information found" like for exemple :
Loaded 'C:\WINNT\system32\crpe32.dll', no matching symbolic information found.
So even with that message do I need to copy those dll too??

I did try to run and copy in the same directory my exe and the dll he ask when I try to run it and he still ask them, so I try to regsvr32 them but he say he could not, the only I could was the crystl32.ocx.

So look like I am back to the start...
thanks for your time!
You did that exactly right.
On the other computer, you will need to use RegSvr32 to register crystl32.ocx

*And* you need to copy all of the DLLs that are used by crystl32.ocx into the same directory as crystl32.ocx

Note the "no matching symbolic information found." is not an error.  Ignore it.

-- Dan
cdextrazeAuthor Commented:
Great thanks a lot for you kind help all is working now, as for the install shield you could add how you do it to help other that might have the same problem as I, for my part I have someone at my job that can do it now that I know all the dll that I need!
once again thanks a lot to help me become beter!!!

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.

All Courses

From novice to tech pro — start learning today.