2010-08-13 5 views

Répondre

2

Vous pouvez uniquement utiliser Crystal Reports DLL redistribuables pour ouvrir un fichier de rapport et de générer un PDF avec elle.

Je n'ai jamais essayé d'ouvrir la bibliothèque Crystal Reports directement à partir d'ASP, mais ne devrait pas poser de problème (ou vous pouvez créer une COM dll dans VB6 si vous le pouvez)

Une partie du code que j'ai dans une DLL VB6 utilisant Crystal Reports 9:

Private Sub Export(ReportFile as string) 
    Dim crxReport As Report 
    Set crxReport = Prepare(ReportFile) 

    crxReport.ExportOptions.FormatType = crEFTPortableDocFormat 
    crxReport.ExportOptions.DestinationType = crEDTDiskFile 
    crxReport.ExportOptions.DiskFileName = "C:\export\export.pdf" 
    crxReport.Export (False) 
end sub 


Private Function Prepare(ReportFile as string) As Report 

    Dim CRapp As CRAXDRT.Application 
    Set CRapp = New CRAXDRT.Application 
    Dim crxReport As Report 
    Dim aDatabaseObject As Database 

    Dim aDatabaseTableObject As CRAXDRT.DatabaseTable 
    Dim objConn As ConnectionProperty 


    Set CRapp = New CRAXDRT.Application 
    CRapp.SetLicenseKeycode ("XXXXXXXXXXXXXXXXXXXXXXXX") 
    Set crxReport = CRapp.OpenReport(ReportFile) 

    Set aDatabaseObject = crxReport.Database 
    Set cnn = New ADODB.Connection 
    cnn.ConnectionString = MyConnectionString() 

    Set aDatabaseObject = crxReport.Database 

    For Each aDatabaseTableObject In aDatabaseObject.Tables 
     Dim objCPProperties As CRAXDRT.ConnectionProperties 
     aDatabaseTableObject.DllName = "crdb_ado.dll" 
     Set objCPProperties = aDatabaseTableObject.ConnectionProperties 
     objCPProperties.DeleteAll 
     objCPProperties.Add "Provider", "SQLOLEDB" 
     objCPProperties.Add "Data Source", cnn.Properties.Item("Data Source").Value 
     objCPProperties.Add "Initial Catalog", cnn.Properties.Item("Initial Catalog").Value 
     objCPProperties.Add "User ID", cnn.Properties.Item("User ID").Value 
     objCPProperties.Add "Password", cnn.Properties.Item("Password").Value 
     aDatabaseTableObject.Location = aDatabaseTableObject.Name 
    Next 

    Set Prepare = crxReport 

End Function