Using Crystal Reports 10 with C#.net and Firebird


C# express doesn't include a report designer or viewer. Reports however, is very much needed when creating a business software. Since C# express doesn't include a report designer, we need to find other means. One is to use a free report such as MyNeoReport. This however may not work under many circumstances. The other alternative would be to use a proven report engine and designer-Crystal Report. Crystal Report has been used by many developers (in our city). However, using a free programming language and IDE, and a free database is very limiting. Not much information can be gathered on the net either (with regards to reporting as of this writing). Here's a way to use Crystal Reports using Firebird database and C# Express as software development IDE:

Pre-requisites:
  • C# Express 2005
  • EMS SQL Manager 2005 for InterBase & Firebird Lite
  • Crystal Reports 10
  • Create the following database:
    Name: TestDB1
    Tables:
    TESTTABLE1
    Columns: 
    • ID - PK, INTEGER,AUTOINCREMENT
    • DESCRIPTION - VARCHAR(50)
      Data:
      Id Description
      1 AAA
      2 BBB
      3 CCC
      4 DDD
      5 EEE

Procedure:
1. Click on File->New and select "As blank report" (The Database Expert wizard shows)












2. Expand the "Create New Connection" folder, and expand OLE DB (RDO). A window will appear.


















3. Select "Enter Connection String" and place your connection string on the text field similar to the following:

Driver=Firebird/InterBase(r) driver;Uid=SYSDBA;Pwd=masterkey; DbName=d:\firebird\examples\test.gdb;
change the parameters accordingly.

4. Click Next. It will ask you the server name, the user name and the password. Mine is "localhost", "SYSDBA", and "masterkey"
5. Click Finish
6. Select the table and click ok:





8. Drag the fields to the Details section of the report. Save your report. I used Report1.rpt.








II. Making the C# Project:
1. Create a new Windows application project.
2. Right click on the Toolbox and choose "Choose Items..."
3. Select the COM components tab.
4. Select the "Crystal ActiveX Report Viewer Control 10.0"
5. Click Ok. (The Crystal Report Viewer Control icon should now be visible on the toolbox.



6. Add a Crystal Report Viewer to the form.
7. Right Click on the Solutions Explorer and click Add Reference.
8. Click the Browse tab.
9. select the following location (or depending on where you installed your crystal report): "c:\Program Files\Common Files\Crystal Decisions\2.5\bin\" and select "CRAXDRT.dll"
10. Click Ok
11. Use the following lines of code when opening a report:

CRAXDRT.Report rpt = new CRAXDRT.Report();
CRAXDRT.Application app = new CRAXDRT.Application();
rpt = app.OpenReport("", null);
axCrystalActiveXReportViewer1.ReportSource = rpt;
axCrystalActiveXReportViewer1.ViewReport();

12. the report viewer should then show the report you have created.

Comments

6 Responses to "Using Crystal Reports 10 with C#.net and Firebird"

Anonymous said... May 22, 2010 at 5:07 PM

And where exacly you use firebird? All I see is you login to MSSQL server

fiShBoN3 said... June 20, 2010 at 8:07 PM

Hi Anonymous,

Sorry I got the posts jumbled up. I have fixed it now.

Jarom said... July 13, 2010 at 12:16 AM

Do you know how to change the connection string from c# of the reporte? thanks.

Jarom said... July 13, 2010 at 12:17 AM

Do you know how to change the connection string from c# of the reporte? I have tried many procedures but I cannot change the exact connection string of FireBird.

fiShBoN3 said... July 13, 2010 at 7:45 AM

Jarom: It really depends on what driver you are using. If you are using the ODBC driver, the following connection string should do:

Driver=Firebird/InterBase(r) driver;Uid=SYSDBA;Pwd=masterkey; DbName=yourdatabase.gdb;


If you are using ADO.net provider, use the following:

User=SYSDBA;Password=masterkey;Database=yourdatabase.gdb;DataSource=localhost; Port=3050;Dialect=3; Charset=NONE;Role=;Connection lifetime=15;Pooling=true; MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;

Anonymous said... August 12, 2011 at 1:55 PM

Thats nice... Working well....
usefull for Express edition users..
Ram