Laden...

Crystal Reports dynamische Datenbankverbundung

Erstellt von mischa vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.860 Views
M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren
Crystal Reports dynamische Datenbankverbundung

Hallo

In meiner Applikation kann der Benutzer Reports erstellen lassen (Crystal Reports).
Die Datenbankverbindung habe ich direkt im Report angegeben. Gibt es eine Möglichkeit, diese Verbindung dynamisch zu gestalten?

Wenn das Programm ausgeliefert wird, ändert sich ja die URL der Datenbank (Access).
Ich habe gesehen, dass es die setDataSource() Methode gibt. Die funktioniert aber scheinbar nur mit DataSets.

Jemand eine Idee?

Danke, Gruss
Mischa

L
64 Beiträge seit 2006
vor 17 Jahren

also wenns deine eigene db ist kopiere diese in den bin\debug oder release ordner und gib als pfad in deinem programm application.startuppath + "\datenbank.mdb"; an
hoffe das du das meintest

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

hallo

danke erstmals. Das Problem ist, dass ich keine Möglichkeit finde, dem Report einen ConnectionString zu übergeben. Es gibt die Methode setDatabaseLogon(), dort kann man aber nur alle Attribute (Datenbank, Benutzer, Passwort) einzeln angeben.
Aber das mit dem Pfad werde ich machen.

Dann muss ich mir diese Angaben wohl aus meinem ConnectionString zusammenschnipseln... 🙁

Danke, Gruss
Mischa

L
64 Beiträge seit 2006
vor 17 Jahren

hi mischa

weis nicht ob dir das was hilft aber ich binde die db nicht mehr direkt an
ich lade ein dataset über komponenten hinzufügen rein erstelle dort meine spalten
und geben das dann beim crystal report als quelle an

wenn du weitere infos hierzu brauchst sag bescheid

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

hallo LordZero83

Wahrscheinlich ist der Weg über das DataSet wirklich die geschicktere Variante, dann kann man das DS auch ausserhalb Crystal erstellen und dann übergeben...

Leider ist die Zeit sehr knapp, ich muss schnellstens fertig werden, deshalb liegt eine solche Umstellung nicht mehr drin. Aber bei meinem nächsten Projekt dann!

Danke für den Tipp, Gruss
Mischa

L
64 Beiträge seit 2006
vor 17 Jahren

ja also ich finde den weg so ganz gut ist mein 2tes größers projekt und habe schon vorteile davon erfahren dürfen zb rechner unabhängigkeit vom crystalreport

hatte das problem das es bei mir ging nur auf nem anderen rechner nicht weil der nicht den selben namen hatte aber hiermit ist das gelöst

viel erfolg wünsch ich dir

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

ist es möglich dass ich tatsächlich für jeden subreport und für JEDE EINZELNE TABELLE in der Datenbank, die angesprochen wird, die Verbindungsinformationen manuell setzen muss?

Denn wenn ich report.setDatabaseLogon aufrufe, hat das keinerlei Auswirkungen auf die Verbindungsinfo der Tabellen --> Exception DB nicht gefunden 🙄

Hat da jemand Erfahrung?

Danke, Gruss

L
64 Beiträge seit 2006
vor 17 Jahren

weis nicht ob du das mit so ner art foreach tabelle in db löen kannst das der sich die automatsch die tabellen sucht

sonst kann ich dir im moment leider auch nicht helfen

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

foreach geht nicht (weil ich nicht rausfinde von welchem typ ein report eigentlich ist...), aber mit for auf report.Database.Tables.Count geht es.

mal schaun obs auch wirklich funktioniert, man kann leider nicht alle Angaben zur Verbindung machen (nur Datenbankname, User, Pw).

Danke, Gruss
Mischa

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

mittlerweile bin ich soweit, dass ich für alle tabellen (Mainreport und Subreports) die richtigen Logon Informationen gesetzt habe. Beim exportieren des Reports bekomme ich aber immer noch die Exception, dass die Datenbank (diejenige, die vor dem Verändern der Informationen eingestellt war) nicht gefunden wurde. Natürlich, die gibts ja dort nicht.

Nun frage ich mich, wo ich die neuen Verbindungsinformationen sonst noch setzen muss (kann?). Hat da jemand Erfahrung damit?

Ich hab auch schon versucht, zusätzlich zu den einzelnen Tabellen noch die setDatabaseLogon Methode des Reports selbst aufzurufen, hat auch nichts gebracht.

Wenn irgendjemand schon mal ein ähnliches Problem hatte oder auch nur ansatzweise weiss, in welche Richtung ich suchen muss, wäre ich sehr dankbar!

Gruss
Mischa

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

Neuster Stand:

Es ist mir gelungen, die Attribute Datenbank, User und Passwort zu setzen. Für meine Access Datenbank (.mdb) habe ich eine System Database (.mdw) erstellt. Wenn ich die oben genannten Attribute setze und den Report zu erstellen versuche, kommt die Meldung, die System Database wurde nicht gefunden.
Kann ich den Ort diese System Database auch irgendwie angeben? Oder gibt es in Access die Möglichkeit, diese .mdw Datei direkt einzubinden, so dass Access automatisch diese Datei verwendet?

Ich komm wirklich nicht mehr weiter, bin für jeden noch so kleinen Tipp dankbar

Gruss
Mischa

M
mischa Themenstarter:in
81 Beiträge seit 2006
vor 17 Jahren

ich hoffe, ich fange nicht an zu nerven. nur, mit diesen infos kommt vielleicht jemandem eine idee. hab auf businessobjects nachgeschaut, dort folgende aussage gefunden:

It is not possible to report of a secured Access
database using a native connection. See knowledge
base article C2010460 for more information.

hab ich also den besagten artikel angeschaut, dort das gefunden:

As a workaround, convert the native connection to an ODBC or OLE DB connection which supports Access session security

? heisst das, ich soll crystal direkt eine OleDbConnection mitgeben? das wäre ja eigentlich die einfachste Lösung, nur komm ich nicht drauf, wie das gehen soll X(

Die einzige Möglichkeit, die ich noch sehe, ist, den Passwortschutz meiner DB zu entfernen. Aber dann stehen meine ganzen Daten völlig ungeschützt rum, nur wegen CR...

Danke, Gruss
Mischa