![]() |
FastReport - Datenbankanbindung
Hallo zusammen,
ich bin gerade dabei FastReports zu testen um muss gestehen dass mir die Datenbankanbindung Probleme bereitet. Vielleicht könnt ihr mir helfen. 1. Ich nutze in meinem Programm bereits Datenbankverbindungen, die der Benutzer anlegen und speichern kann (unter anderem auch für selbst zu erstellende Abfragen usw...). Kann ich eine vom Benutzer eingerichtete DB-Verbindung nun sozusagen auch an FastReport durchreichen, damit der Benutzer diese dort nicht mehr extra machen braucht und sofort mit dem Aufbau eines Reports beginnen kann? (Ich verwende übrigens die Unidac Komponenten von devart) 2. Werden Datenbankverbindungen und die verwendeten Abfragen in einem Report für einen späteren Ausdruck gespeichert? |
Re: FastReport - Datenbankanbindung
Liste der Anhänge anzeigen (Anzahl: 1)
zu 1. Ja
zu 2. Ja (QueryBuilder), jedoch sowie ich es gemacht habe nicht! Ich habe dir mal ein kleines Projekt gebastelt. Da ich aber die Unidac Komponente nicht habe, dachte ich mir, es geht auch mit der VirtualTable Komponente. hier ein kleiner Code Ausschnitt (Ausschnitt ist gut, das ist alles ... :) )
Delphi-Quellcode:
noch mal zu 2. im Report wird natürlich die Verbindung gespeichert, aber hier tausche ich ja das Dataset aus, was der Report ja nicht speichert. Dadurch musst du zu jedem Report die angezapfte Tabelle oder Abfrage irgendwo zusätzlich speichern.
procedure TfrmReporting.btnGruppeClick(Sender: TObject);
begin dsGlobal.DataSet := tblGruppe; // mit fester Datenverbindung (tblGruppe) frxReport1.PrepareReport(True); // leere den Report frxReport1.DesignReport; // damit öffnest du den Designer / im Report werden die Felder von tblGruppe angezeigt end; procedure TfrmReporting.btnMitarbeiterClick(Sender: TObject); begin dsGlobal.DataSet := tblMitarbeiter; // mit fester Datenverbindung (tblMitarbeiter) frxReport1.PrepareReport(True); // leere den Report frxReport1.DesignReport; // damit öffnest du den Designer / im Report werden die Felder von tblMitarbeiter angezeigt end; Meine Verknüpfung ist ja : Dataset > Datasource > frxDBDataset > frxReport Gespeichert wird im Report nur die Verbindung frxDBDataset > frxReport Gruß Matze |
Re: FastReport - Datenbankanbindung
Vielen Dank erstmal für die ausführliche Antwort!
Wie könnte ich denn eine Verbindung zwischen dem Report und der verwendeten Datenquelle herstellen? Nach dem Aufruf des Designers weiss ich ja nicht mal ob der Anwender den Report überhaupt abspeichert. |
Re: FastReport - Datenbankanbindung
In einer INI Datei vielleicht oder aber alle Details in einer Tabelle ablegen. Bei der INI Datei eine pro Report oder so.
Da du ja im Programm den Report erstellen willst, weißt du ja wann der Designer beendet wird, dann kannst du dir alle Details aus dem Report entnehmen und abspeichern. |
Re: FastReport - Datenbankanbindung
Hallo Bebe,
bei den SDAC Komponenten (auch von DEVART) ist im Demoordner eine FastReport Komponente mit der man Tables und Querys direkt im Report einbinden kann. Das funktioniert super. Ich mache einen großteil meiner Reports so. Bei mir ist die Komponente im Ordner C:\Programme\Devart\Sdac\Demos\Win32\ThirdParty\Fa stReport\FR4 Dort findest Du auch eine gute Readme.txt Datei. So weit ich weis ist die Komponente bei UNIDAC auch dabei. Gruß EarlyBird |
Re: FastReport - Datenbankanbindung
Hallo EarlyBird,
danke für den Tipp, jedoch habe ich ihm auch diesen Vorschlag schon unterbreitet. Siehe ![]() Mir ging es in um die starre Vorgabe eine Datenquelle, natürlich ist die Vorgehensweise direkt mit der DevArt Komponente besser, da es die Datenbverbindung mit abspeichert. Gruß Matze |
Re: FastReport - Datenbankanbindung
Zitat:
|
Re: FastReport - Datenbankanbindung
zum Beispiel nach dem Befehl frxReport1.DesignReport den Zustand abfragen per frxReport1.Modified.
Delphi-Quellcode:
dsGlobal.DataSet := tblMitarbeiter;
frxReport1.PrepareReport(True); // damit löscht du, falls vorhanden, alte Report in der Komponente frxReport1.DesignReport; if frxReport1.Modified then ShowMessage('Report wurde geändert'); |
Re: FastReport - Datenbankanbindung
Vielen Dank, das funktioniert erst mal ganz gut.
Jetzt hab ich das Problem, das ich einen Report öffnen möchte (per Quellcode, nicht mit dem Dialog). Dazu mach ich folgendes:
Code:
Doch dabei öffnet er mir nicht den Report (den ich kurz zuvor erzeugt habe), sondern bringt mir eine Schutzverletzung beim schliessen der Anwendung. Ich habe den Designer in mein Programm eingebettet, analog dem Demoprogramm.
frxReport.LoadFromFile(Dateiname);
frxReport.PrepareReport(True); frxReport.DesignReport; Mach ich hier was falsch? Edit: Hab den Fehler gerade selber gefunden, ich muss natürlich mit dem Referenzobjekt arbeiten! :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz