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
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
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
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
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
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
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
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
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
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
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
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