2017-05-23 2 views
0

J'essaie de créer une application de console VB6 pour exporter automatiquement Crystal Reports au format PDF. Cela doit être fait sans interaction de l'utilisateur (pas de boîte de dialogue Enregistrer sous ou Imprimer). L'idée est de remplacer une application existante qui utilise Neevia DocCreator pour imprimer au format PDF, mais nécessite que l'utilisateur interagisse avec une boîte de dialogue Enregistrer sous pour chaque rapport.Exportation de Crystal Reports 8.0 vers PDF dans VB6 sans interaction utilisateur

En raison de la situation de notre entreprise, je suis contraint à VB6 et Crystal Reports 8.0. Je ne peux pas acheter de logiciel supplémentaire ni télécharger de logiciel open source tiers, ce qui est interdit par la politique.

Je rencontre un problème lors de l'exportation réelle. Dans le code ci-dessous, à l'aide d'un exemple de rapport à tester, la ligne "oXRpt.Export False" génère une erreur "DLL d'exportation manquante ou obsolète". Je n'ai pas été en mesure de déterminer à quelle DLL il se réfère. La référence Crystal Report Export dans le projet pointe vers C: \ Program Files \ Seagate Software \ Viewers \ ActiveXViewer \ sviewhlp.dll. Cette DLL existe dans le répertoire référencé.

Est-ce que quelqu'un a réussi à le faire, ou quelqu'un a-t-il connaissance de quelle DLL pourrait être le problème? Je peux également accepter une solution qui imprime au format PDF sans aucune interaction de l'utilisateur (nous n'avons pas Adobe Acrobat complet et cette société ne l'achètera pas, pas ma décision, désolé). Voici mon code:

Sub Main() 
Dim oXApp As CRAXDRT.Application 
Dim oXRpt As CRAXDRT.Report 
Dim oXOpt As CRAXDRT.ExportOptions 

On Error GoTo ExportErr 

Set oXApp = CreateObject("CrystalRuntime.Application") 

Set oXRpt = oXApp.OpenReport(App.Path & "\C1910X.rpt") '"\C0562.rpt") 

oXRpt.RecordSelectionFormula = "{REPORT_HEADER.ReportControlID} = " & 1985735 

With oXRpt 
    .EnableParameterPrompting = False 
    .MorePrintEngineErrorMessages = True 
End With 

Set oXOpt = oXRpt.ExportOptions 

With oXOpt 
    .DestinationType = crEDTDiskFile 
    .DiskFileName = App.Path & "\C1910X.pdf" 
    .FormatType = crEFTPortableDocFormat 
End With 

oXRpt.Export False 'throws missing or out-of-date dll error 

ExportErr: 
    MsgBox Err.Number & ", " & Err.Description 

End Sub 
+0

vous pouvez réinstaller pour le rapport de cristal l'add-on – maSTAShuFu

+0

Vous êtes manque certains fichiers critiques utilisés pour l'exportation de Crystal Reports uniquement. Je ne me souviens pas de ce qu'ils sont en ce moment, je ne suis pas en mesure d'accéder à mon code. Je fais exactement ce que vous cherchez - j'exporte des factures vers des fichiers PDF et je vais même plus loin et je les envoie par e-mail, le tout sans intervention de l'utilisateur autre que l'initiation de la fonction. Si vous n'avez pas les fichiers d'exportation corrects, cela échouera exactement comme vous l'avez indiqué. J'ai 8.5 mais je suis sûr qu'ils sont les mêmes pour 8.0. J'y reviendrai plus tard ce soir (si je me souviens bien) et posterai une réponse plus précise alors. –

Répondre

0

Je pense que je me souviens comment cela a été fait. Créez un formulaire et ajoutez la vue de rapport. Vous pouvez appeler ce formulaire mais vous n'avez pas besoin de le montrer. Affectez le rapport à cette instance et essayez d'exporter au format PDF.

1

Voici la liste des fichiers de support que j'utilise dans mon logiciel de comptabilité pour l'exportation de Crystal Reports. Il est un segment d'un script Inno-Setup, mais vous devriez être en mesure d'obtenir l'idée de cette liste de ce qu'il faut rechercher:

; begin Export Destinations 
Source: C:\WINDOWS\Crystal\u2d*.dll; DestDir: {pf32}\Seagate Software\SI\X86; Flags: sharedfile 
Source: C:\WINDOWS\Crystal\u2d*.dll; DestDir: {win}\Crystal; Flags: sharedfile 
; end Export Destinations 

; begin Export Formats 
Source: C:\WINDOWS\Crystal\u2f*.dll; DestDir: {pf32}\Seagate Software\SI\X86; Flags: sharedfile 
Source: C:\WINDOWS\Crystal\u2f*.dll; DestDir: {win}\Crystal; Flags: sharedfile 
Source: C:\WINDOWS\Crystal\crxf_*.dll; DestDir: {pf32}\Seagate Software\SI\X86; Flags: sharedfile 
Source: C:\WINDOWS\Crystal\crxf_*.dll; DestDir: {win}\Crystal; Flags: sharedfile 
; end Export Formats 

; begin Page Ranged Export 
Source: C:\Program Files (x86)\Seagate Software\Shared\ExportModeller.dll; DestDir: {pf32}\Seagate Software\Shared; Flags: sharedfile regserver 
Source: C:\Program Files (x86)\Seagate Software\Shared\crtslv.dll; DestDir: {pf32}\Seagate Software\Shared; Flags: sharedfile regserver 
Source: C:\Program Files (x86)\Common Files\Crystal Decisions\2.0\bin\ExportModeller.dll; DestDir: {pf32}\Common Files\Crystal Decisions\2.0\Bin; Flags: sharedfile regserver 
Source: C:\Program Files (x86)\Common Files\Crystal Decisions\2.0\bin\crtslv.dll; DestDir: {pf32}\Common Files\Crystal Decisions\2.0\Bin; Flags: sharedfile regserver 
; end Page Ranged Export