DBGrid mit Lazreport verbinden

Für Fragen von Einsteigern und Programmieranfängern...
Fussel2011
Beiträge: 6
Registriert: Mi 31. Aug 2011, 09:02

DBGrid mit Lazreport verbinden

Beitrag von Fussel2011 »

Hallo Leute,
habe ein kleines Problem, ich kann mit Lazreport auf die Datenbank zugreifen und Daten auslesen das funktioniert.
Wie bekomme ich das hin das ich statt auf die Datenbank, auf ein Grid zugreifen kann?

Vielen Dank
Fussel2011

laines
Beiträge: 45
Registriert: Mo 18. Apr 2011, 08:30

Re: DBGrid mit Lazreport verbinden

Beitrag von laines »

Hallo

Gibt es hierfür eine Antwort ??

Laines

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: DBGrid mit Lazreport verbinden

Beitrag von Christian »

Wozu
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

laines
Beiträge: 45
Registriert: Mo 18. Apr 2011, 08:30

Re: DBGrid mit Lazreport verbinden

Beitrag von laines »

WIE Wozu ??

@Christian
Es tut mir Leid, dass ich versuche Programmieren zu lernen. Anscheinend passt dir das nicht.
Ich vermute du bist schon als Programmierer auf die Welt gekommen.

Sollte jemand meine Frage mit JA oder NEIN beantworten können wäre ich sehr dankbar.
Wenn Ja wäre ein kl. Beispiel auch sehr nett.

Gruß
Laines

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: DBGrid mit Lazreport verbinden

Beitrag von theo »

laines hat geschrieben: Sollte jemand meine Frage mit JA oder NEIN beantworten können wäre ich sehr dankbar.
Wo ist denn deine Frage?
Ich sehe nur eine Frage von Fussel2011, und die verstehe ich irgendwie nicht (Bin aber auch keine Experte für Lazreport).
Ich sehe auch nichts, was man mit JA oder NEIN beantworten könnte.
Ausserdem ist Christians Frage schon berechtigt: Wozu? Vielleicht gibt es ja einen einfacheren Weg.

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: DBGrid mit Lazreport verbinden

Beitrag von Bora4d »

Ich habe so verstanden:
Du willst die in DB-Grid angezeigte Daten in Lazreport anzeigen/verwenden?

Dann mußt du Datasource-Eigenschaft von DB-Grid verwenden. Weil DB-Grid bekommt seine Daten auch über Datasource von einer Datenbank.
Wenn ein Lazreport-Komponente DataSet-Eigenschaft erwartet, dann muß du die gleiche Dataset von Datasource die du für DB-Verwendest. Z.B.

Du hast ein DB-Grid (DBGrid1) auf dein Formular dafür brauchst du zusätzlich.
Ein TDataSource(DataSource1) und ein TTable oderTQuery oder TDbf .... (Table1).
Um daten jetzt in DBGrid1 anzuzeigen macht man ja folgendes:

DataSource1.DataSet:=TAble1;
DBGrid1.DataSource:=DataSource1;
.....
Um jetzt DBGrid-Daten für LazReport-Komponente zu verwenden muß du zurück verfolgen:

DeinLazReportKOmponente.DataSet:=DBGrid1.DataSource.DataSet;

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: DBGrid mit Lazreport verbinden

Beitrag von Bora4d »

Noch eins. Wenn du Stringgrid anstatt DB-grid verwenden willst, dann findest du dafür Beispiel in Lazarus Ordner, hier:
...\lazarus\components\lazreport\samples\stringgrid

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: DBGrid mit Lazreport verbinden

Beitrag von Christian »

Bleib mal aufm teppich, ein db grid macht in lazreport wenig sinn die darin angezeigten daten schon. Deshalb fragte ich was du vor hast um dir eine alternative vorzuschlagen

Ich verliere langsam die lust zu antworten bei den neuankömmlingen hier
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

laines
Beiträge: 45
Registriert: Mo 18. Apr 2011, 08:30

Re: DBGrid mit Lazreport verbinden

Beitrag von laines »

Sorry !! War etwas zu forsch oben.
Ich dachte mir nur, dass das eine Lösung für mein Problem gewesen wäre.

Ich brauche den Report ja zur Laufzeit meines Programms.
Die Lösung ist diese:

Code: Alles auswählen

frDBDataSet1.Dataset:=DBGrid1.DataSource.DataSet;
 FrReport1.LoadFromFile('kunden_rep.lrf');
 FrReport1.ShowReport;
Nun steh ich nur noch vor dem Problem, dass ich im Report eine Variable Auswertung habe.
Das bedeutet, ich errechne den Jahresumsatz, somit habe ich in diesem Feld nicht immer das selbe.

Beispiel:

Code: Alles auswählen

[SQLQuery1."2012"] €
wie kann ich die "2012" denn im LazReport variabel an meine Combobox1 anpassen also das was im DBGrid1 ausgewertet wurde :?:

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: DBGrid mit Lazreport verbinden

Beitrag von Bora4d »

Ich glaube LazReport ist ein Fork FreeReport, lade FreeReport runter und schaue auf Dokumentationen und Beispiele von FreeReport.

laines
Beiträge: 45
Registriert: Mo 18. Apr 2011, 08:30

Re: DBGrid mit Lazreport verbinden

Beitrag von laines »

Also in der Doku von FreeReport steht nicht wirklich viel.
Mein Ansatz für die Variable funktioniert schon mal.
Was ich nicht hin bekomme ist die Variable DB Anzeige.

Im LazReport werden die DB Felder ja so eingebunden.

Code: Alles auswählen

[SQLQuery1."2012"]
Mein Ansatz ist nun:

Code: Alles auswählen

global
  jahr: String;
  jahrUms: STRING;                 
.....
procedure TForm1.MenuItemUmsatzClick(Sender: TObject);
begin
 try
   jahrUms:= 'SQLQuery1."'+jahr+'"';
   jahr:=ComboBox1.Items[ComboBox1.ItemIndex];
 frDBDataSet1.Dataset:=DBGrid1.DataSource.DataSet;
 IF (jahr= 'Gesamt') THEN
 begin
 frVariables['jahr'] := 'Alle Jahre';
 frVariables['jahrUms']:= jahrUms;
 end
 else
 frVariables['jahr'] := jahr;
 FrVariables['jahrUms']:=jahrUms;
 FrReport1.LoadFromFile('reports/kunden_rep.lrf');
 FrReport1.ShowReport;
 except
  Meldung2020;
 end;
end;
jahrUms wird aber als String eingebunden d.h. ich habe da wo der Umsatz als Zahl erscheinen sollte [SQLQuery1."2012"] stehen.
Also anstatt

Code: Alles auswählen

Name Vorname Umsatz
Test TestVorname 2000,00 €
steht

Code: Alles auswählen

Name Vorname Umsatz
Test TestVorname [SQLQuery1."2012"] €

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: DBGrid mit Lazreport verbinden

Beitrag von Bora4d »

Ich habe bisher Report-Komponenten nicht verwendet, wenn du ungefähr 3-4 Wochen wartest, dann kann dir Antworten weil ich Sie dann brauche.
Vom Quelltext her kann man sehen dass diese Zeile unsinn ist:
jahrUms:= 'SQLQuery1."'+jahr+'"';

SQLQuery1 ist anscheinend eine Komponente die du verwendest.
Vielleicht hilft dir jemand anders.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: DBGrid mit Lazreport verbinden

Beitrag von Christian »

Du kannst das auch den report mit sum berechnen lassen oder du klärst das in ongetvariable (oder so ähnlinich) hab aber jetzt keine zeit es genau rauszusuchen. Schau mak in die hilfe das sollte beides drin stehn.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

TErxleben
Beiträge: 18
Registriert: Mi 24. Mär 2010, 18:54

Re: DBGrid mit Lazreport verbinden

Beitrag von TErxleben »

Nur drei Anmerkungen:
1) Ein DBGrid ist eher einem Report-Generator gleichzusetzen. Beiden holen sich Daten aus einer DB-Quelle und stellen diese lediglich dar.
2) Ein Report-Generator bietet bzgl. der Formatierung erheblich mehr Möglichkeiten als ein Grid, welches Daten i.d.R. lediglich tabellarisch auflistet.
3) Deshalb gibt es auch keine direkte Möglichkeit um in einem Report Daten aus einem Grid "zu holen", da letzteres eh eine 1:1 Umsetzung der/des zugrunde liegenden Tabelle/SP/View ist.

laines
Beiträge: 45
Registriert: Mo 18. Apr 2011, 08:30

Re: DBGrid mit Lazreport verbinden

Beitrag von laines »

Hallo
Das hier

Code: Alles auswählen

[SQLQuery1."2012"]
steht ja in einem Memo im LazReport.
Ich sollte dieses Memo Feld doch flexibel füllen können oder bin ich da ganz weit weg :?:

Antworten