J'utilise visual basic 6 avec crystal report 8.5
Dans crystal report, j'ais créer un rapport externe avec une table sqlserveur rattacher à un DNS
Lorsque je veux changer la source DNS par programmation, crystal me génére toujours une erreur en me disant qu'il utilise mon ancien DNS, les tables dans le rapport son toujours associé à l'ancien DNS.
Voici mon code source
Dim rdApp As CRAXDRT.Application
Dim rpt As CRAXDRT.Report
Set rdApp = CreateObject("CrystalRuntime.Application")
Set rpt = rdApp.OpenReport(CheminRapport)
SetLocation rpt
CRViewer1.ReportSource = rpt
CRViewer1.ViewReport
Public Sub SetLocation(ByVal rpt As CRAXDRT.Report)
Dim crxReportObjects As CRAXDRT.ReportObjects
Dim crxSection As CRAXDRT.Section
Dim crxSections As CRAXDRT.Sections
Dim crxSubreport As CRAXDRT.Report
Dim crxSubreportObj As CRAXDRT.SubreportObject
Dim crxTable As CRAXDRT.DatabaseTable
Dim crxTables As CRAXDRT.DatabaseTables
Dim ReportObject As Object
Dim Compteur As Integer
For Each crxTable In rpt.Database.Tables
crxTable.SetLogOnInfo NomDNS, NomBaseDonnees, NomID, MotPasse
Next
Set crxSections = rpt.Sections
For Each crxSection In crxSections
Set crxReportObjects = crxSection.ReportObjects
For Each ReportObject In crxReportObjects
If ReportObject.Kind = crSubreportObject Then
Set crxSubreportObj = ReportObject
Set crxSubreport = crxSubreportObj.OpenSubreport
Set crxTables = crxSubreport.Database.Tables
For Compteur = 1 To 50
Set crxTable = crxTables.item(Compteur)
crxTable.SetLogOnInfo NomDNS, NomBaseDonnees, NomID, MotPasse Next Compteur
End If
Next ReportObject
Next crxSection
Exit Sub
Erreur:
End Sub
J'utilise Crystal Report 9 pour mes rapports et je me connecte directement à la base de donnée (pas de DNS), mais peut-être ton problème est le même que celui que j'avais au début ....
Ton rapport garde en mémoire les paramêtres de connections que tu a utilisé pour créer ton rapport ???
si oui, personnelement j'utilise ceci: CrRep.DataBase.Tables(1).ConnectionProperties.DeleteAll
à placer après le chargement du rapport, puis il faut redéclarer toute tes tables utilisée (petit example)