Solved

Programmatically setting data source location of a Crystal Report to MS Access database

Posted on 2007-11-18
9
1,579 Views
Last Modified: 2013-11-07
Hi Experts,

I have several Crystal Report XI reports that I automate through VB.Net.  These reports point to an Access database.  I need to store the path to the access database mdb file as a setting and then set the data source location at run-time with my VB code.

How do I do this?

Thanks
0
Comment
Question by:PantoffelSlippers
  • 5
  • 2
  • 2
9 Comments
 
LVL 4

Expert Comment

by:habibb
ID: 20310623
0
 

Author Comment

by:PantoffelSlippers
ID: 20310669
Hi Habibb,

That's not exactly what I was looking for.  That example uses VB6 with the CRXDRT DLL which I've used a lot in the past.  What I'm trying to do with Access now I can already do with SQL Server, see example below:

  Public Sub SetReportConnections(ByRef XReport As ReportDocument)
    Dim CInfo As New ConnectionInfo
    Dim t As Table
    Dim TLogonInfo As TableLogOnInfo
    Dim SubR As New ReportDocument


    'Set the connection
    CInfo.ServerName = ServerName
    CInfo.DatabaseName = DatabaseName
    CInfo.UserID = UserID
    CInfo.Password = Password

    'Set Logon details for main report and each table inside the main report
    For Each t In XReport.Database.Tables
      TLogonInfo = t.LogOnInfo
      TLogonInfo.ConnectionInfo = CInfo
      t.ApplyLogOnInfo(TLogonInfo)
    Next

    For Each SubR In XReport.Subreports
      For Each t In SubR.Database.Tables
        TLogonInfo = t.LogOnInfo
        TLogonInfo.ConnectionInfo = CInfo
        t.ApplyLogOnInfo(TLogonInfo)
      Next
    Next

  End Sub


This procedure explicitly sets the connection details for a report file that connects to SQL Server.  Now I need to do exactly the same with MS Access but I'm assuming that different objects / properties / methdos must be used.

From the example in the link I basically need to copy the following logic:
Dim CRXDatabase As CRAXDRT.Database
Set CRXDatabase = CRXReport.Database
CRXDatabase.SetDataSource rs, 3, 1

I'm not using the CRXDRT so this syntax won't work.  I can't find the syntax to perform this logic. I need to find the exact syntax for the components that I'm using.  I'm using the CrystelDecisions .Net references.

Thanks
0
 
LVL 4

Expert Comment

by:habibb
ID: 20310792
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:PantoffelSlippers
ID: 20310917
Thanks habibb,

From the example provided I got the following:

cr1.ReportFileName = App.Path & "\reports\ot1.rpt"
cr1.DataFiles(0) = App.Path & "\otmanag.mdb"

I'm assuming that cr1 is a ReportDocument?  My reportdocument doesnt have a DataFiles property.  I assume the example also uses a different version of the Crystal API than I am.  As in the very first example, this is exactly the logic that I'm trying to perform, only the syntax doesn't fit my API.

Is there perhaps an API guide for the Crystal Reports XI R2 .Net references?

Thanks
0
 
LVL 4

Accepted Solution

by:
stcindia earned 500 total points
ID: 20311386
Please find below information copied from http://diamond.businessobjects.com/node/134
If you are connecting to Access through OLE DB,
then set the 'ServerName':

With crConnectionInfo
.ServerName = "C:\mydatabase\mydata.mdb"
End With
0
 

Author Comment

by:PantoffelSlippers
ID: 20318432
Thanks stcindia,

I'll try this immediately
0
 

Author Closing Comment

by:PantoffelSlippers
ID: 31409789
         Dim CInfo As New ConnectionInfo
          Dim TlogonInfo As TableLogOnInfo
          Dim t As Table

          CInfo.ServerName =

          For Each t In crRepDoc.Database.Tables
            TlogonInfo = t.LogOnInfo
            TlogonInfo.ConnectionInfo = CInfo
            t.ApplyLogOnInfo(TlogonInfo)
          Next
0
 

Author Comment

by:PantoffelSlippers
ID: 20396146
Thank you stcindia
0
 
LVL 4

Expert Comment

by:stcindia
ID: 20401003
Glad I could help
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Modal Popup Extender control 1 38
Help with opening combobox using VB.NET. 3 25
How to seperate number and letters from a string 3 22
jquery tab header text 1 23
Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

838 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question