Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Qreport / QRDBText (https://www.delphipraxis.net/110650-qreport-qrdbtext.html)

scuby 21. Mär 2008 17:27

Datenbank: Paradox • Version: 7 • Zugriff über: DBE / SQL

Qreport / QRDBText
 
Hallo zusammen,


ich habe ein kleines Problem oder Besser einen Blackout. Seid stunden probiere ich Daten im QReport ausgeben zulassen, welches aber nicht funktioniert.

Ziel: Daten aus der SELECT - Anweisung im QReport (QRDBText) ausgeben.
Problem: Keine Ahnung wie das geht!

Beschreibung: Bisher habe ich meine Select-Anweisung geschrieben und diese liefert auch Daten (getestet in DBGrid). Diese Daten sollen nun in den QReport übertragen werden. Wenn möglich in die QRDBText Felder die ich angelegt habe. Problem ist ich weiß nicht wie ich QRDBText mit SQL verknüpfen kann.

Würde mich über eine Antwort von euch Freuen...

Scuby

mkinzler 21. Mär 2008 17:31

Re: Qreport / QRDBText
 
Verbinde die Band-Komponente mit einer mit dem DataSet verknüpften DataSource

scuby 21. Mär 2008 17:35

Re: Qreport / QRDBText
 
?? versteh gerade nur Bahnhof....

mkinzler 21. Mär 2008 17:42

Re: Qreport / QRDBText
 
Was verstehst du den nicht?

scuby 21. Mär 2008 18:22

Re: Qreport / QRDBText
 
Was ich womit verbinden soll oder allgemein wie du das meinst

mkinzler 21. Mär 2008 18:30

Re: Qreport / QRDBText
 
http://www.delphi-treff.de/tutorials...s/katalog/174/

scuby 25. Mär 2008 23:02

Re: Qreport / QRDBText
 
Hat bisher irgendwie noch immer nicht geklappt. Villeicht lag es auch an meiner Beschreibung...

ALso hier nochmal:

1.) Ich habe eine Select-Anweisung

t:= 'SELECT Vorname FROM Teilnehmer WHERE Nachname=Meyer'

So nun sind alle Vornamen von den Teilnemer mit dem Nachnamen Meyer in t gespeichert.

2.) Alle diese Namen sollen nun über ein QRDBText im QReport (neues Formbaltt) ausgegeben werden.

Mein Problem hier bei ist, ich weiß nicht wie ich diese Daten der SQL-SELECT-Anweisung an den QRDBText übergebe...

omata 26. Mär 2008 00:00

Re: Qreport / QRDBText
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel...

Ich habe mal die BDE benutzt, die Datenbankverbindung musst du selber einrichten. Beim Öffnen gibt es eventuell Fehler, weil ich eine andere Quickreport-Version habe. Diese Meldungen kannst du alle ignorieren.

Gruss
Thorsten

scuby 26. Mär 2008 01:22

Re: Qreport / QRDBText
 
Danke dir werde mal sehen ob das bei mir auch so umzusetzen ist...

Würde mich aber dennoch interessieren, ob man den SQL Text auch so übergeben kann...

hoika 26. Mär 2008 08:53

Re: Qreport / QRDBText
 
Hallo,

mit QRDBText nicht.
Das zeigt immer nur einen Wert an,
also z.B. bei einer Rechnung den Namen des Kunden.

Was du willst, ist ein Grid drucken,
dazu gibt es wohl eine freie Komponente (viell. die im vorigen Posting)

Du könntest aber auch Free-Report nehmen.

QR hatte ich mal gehabt, puh ... ;)

Jetzt habe ich List&Label -> topp, aber auch teuer.


Heiko

scuby 29. Mär 2008 10:41

Re: Qreport / QRDBText
 
Hmmm erstmal danke für eure Tipps,

habe mal Freereport ausprobiert, bekomme aber keine verbindung zur DB über die Query...
Raff das irgendwie alles nicht....

Wäre ganz cool wenn mir irgendwer mal ein nettes Tutorial dazu schicken könnte, oder ein kleines Beispiel mit der Übergabe der SQL Select anweisung an die entsprechende Freereport komponente..

LG
Scuby

MrSpock 29. Mär 2008 10:58

Re: Qreport / QRDBText
 
Hallo scuby,

hast du es denn jetzt mit Quickreport hinbekommen, oder nicht? Es ist wirklich einfach.

scuby 29. Mär 2008 11:05

Re: Qreport / QRDBText
 
nein leider auch nicht

MrSpock 29. Mär 2008 11:18

Re: Qreport / QRDBText
 
Hallo scuby,

ok, dann mal Schritt für Schritt: Wie hast du dein SQL Statement eingebunden? Benutzt du eine TQuery Komponente? Hast du eine DataSource Komponente in dem Formular (oder einem Datenmodul), die auf die Query verweist?

scuby 29. Mär 2008 11:44

Re: Qreport / QRDBText
 
Hi ich nutze TQuery und DataSource

MrSpock 29. Mär 2008 12:46

Re: Qreport / QRDBText
 
Ok, dann nehme ich an, dass die Query in der SQL Eigenschaft die entsprechende Abfrage enthält und Database auf den ALIAS oder das Verzeichnis zeigt, in dem die Tabelle steht. Wenn du die datasource mit der query verbindest und temporär ein DBGrid eifügst, kannst mal die Active Eigenschaft auf True setzen, nachdem du die DataSource Eigenschaft von DBGrid auf die DataSource Komponente einstellst. Dann solltest du bereits zur Designzeit die Datenmenge betrachten können. Funktioniert das?

scuby 29. Mär 2008 17:48

Re: Qreport / QRDBText
 
Ja genau das funktioniert, da werden mir die selectierten daten angezeigt

MrSpock 29. Mär 2008 21:25

Re: Qreport / QRDBText
 
Gut, dann öffne ein zweites Formular und lege dort eine TQuickRep Komponente drauf. Trage unter uses die erste Unit ein oder wähle unter Datei | Unit verwenden die erste Unit aus.

Bei DataSet der QuickRep Komponente kannst du jetzt Form1->Query1 auswählen, damit hast du die Datenverbindung hergestellt. Unter Bands wählst du bei HasDetail den Wert True, um ein Detailband in den Reort einzufügen. Auf dieses Detailband legst du eine QRDBText Komponente, deren Eigenschaft DataSet du mit der Query verbindest und bei DataField wählst du anzuzeigende Datenfeld.

Jetzt legst du in dem ersten Formular einen Button an, und schreibst in die OnClick Methode:

Delphi-Quellcode:
Query1.Open; { Falls das noch nicht der Fall ist }
Form2.QuickRep1.Preview;
Denke noch daran in der Form1 die Form2 in die uses Anweisung aufzunehmen oder wieder mit Datei | Unit verwenden einzufügen.

Und schon sollte nach dem Kompilieren und der Betätigung des Schalters der Report alle Datensätze enthalten. :cheer:

scuby 30. Mär 2008 23:33

Re: Qreport / QRDBText
 
Hallo,

vielen Dank, soweit funktioniert das erstmal, was leider nicht geht, er zeigt mir nur einen Datensatz an, obwohl mehrere in der SELECT-Anweisung ausgelesen werden. Was habe ich vergessen?

MrSpock 31. Mär 2008 07:02

Re: Qreport / QRDBText
 
Hallo scuby,

wahrscheinlich das hier:

Zitat:

Bei DataSet der QuickRep Komponente kannst du jetzt Form1->Query1
Du musst die Eigenschaft DataSet der Komponente QuickRep auf die Form1->Query1 zeigen lassen. Diese Datenmenge hat einen Datensatzzeiger, der auf den Anfang der Datenmenge zeigen muss. D.h. wenn du z.B. durch die Datenmenge durchgelaufen bist, musst du diese vor Erstellung des Berichts mit der Methode First wieder auf den ersten Datensatz stellen.

scuby 31. Mär 2008 11:51

Re: Qreport / QRDBText
 
Hmm ich kann den Zeiger weitersetzen und sehe dann immer andere Daten das ist korrekt, die Frage ist aber nun wie kann ich alle Daten gleichzeitig anzeigen lassen, denn meine SELECT-Anweisung spukt mehrere Datensätze aus und das auch noch abhänig vom Suchbegriff.

Habe mal in einem QRDBText-Tutorial gesehen, das eine Komponente alles anzeigen lassen kann, aber wie?

MrSpock 31. Mär 2008 13:54

Re: Qreport / QRDBText
 
Hallo scuby,

nochmal: Du musst die Eigenschaft DataSet der Komponente QuickRep auf die Form1->Query1 zeigen lassen, dann werden alle Datensätze der Query angezeigt. Der Datensatzzeiger selbst muss auf den Anfang der Datenmenge zeigen. Das sind die beiden einzigen Voraussetzungen. Wenn das trotz der Hinweise nicht funktioniert, hänge mal den Code an, dann schaue ich mir das an.

scuby 1. Apr 2008 07:09

Re: Qreport / QRDBText
 
Hi,

habe es genau so gemacht wie beschrieben, die Verweise stehen. Wenn ich die Preview anzeigen lasse, dann springt der "Cursor" in meinem Testgrid auch auf den 2. Datensatz oder besser auf den letzten, aber er zeigt mir immer noch nur einen Datensatz im Druckbild an...Warum??

Zum Code...welchen willst denn haben? Poste dir hier mal die SELECT-Anweisung...

Delphi-Quellcode:
procedure TForm3.Druckvorschau1Click(Sender: TObject);
begin
 if Form1.Label4.Caption <> '2' then showmessage('Sie sind nicht berechtigt diese Funktion zu nutzen!') else
  begin
   Query2.First;
   Query2.Open;
   Form10.QRLabel13.Caption := Form2.Label4.Caption;
   Form10.QRLabel14.Caption := '' + DateToStr(Date);
   Form10.Quickrep1.preview;
  end;
 end;
So das nur die Druckvorschau nun die Sachen die hinter den beiden Query stecken....

Delphi-Quellcode:
 begin
  s := 'select * FROM Studenten WHERE Matnr='+#39+ edit1.Text+#39+'';
  Form3.query1.close;
  Form3.Query1.Sql.Text := s;
  Form3.Query1.Active:=true;
  Form3.Query1.First;

  t := 'select VNr, VName, VArt, Datum, Von, Bis, SCP, Verantwortlicher FROM studvera, veranstaltungen WHERE VNr1=VNr and Matnr1='+#39+ edit1.text +#39+'';
  Form3.query2.close;
  Form3.Query2.Sql.Text := t;
  Form3.Query2.Active:=true;
  Form3.Query2.First;

 end;
Hoffe das ist das was du wolltest....

Anbei die Bilder aus dem laufenden Programm....

http://www.nesse-city.de/GridvorDruck.jpg

http://www.nesse-city.de/Druckbild.jpg

http://www.nesse-city.de/GridnachDruck.jpg

scuby 3. Apr 2008 12:36

Re: Qreport / QRDBText
 
Keiner mehr ne idee?

scuby 3. Apr 2008 23:00

Re: Qreport / QRDBText
 
Neuer Fehler entdeckt...

Er gibt mir doch alle Datensätze aus, allerding jeden Datensatz auf einer neuen Seite, d.h. wenn ich 3 Datensätze unter Veranstaltungen habe, dann wird jede Veranstaltung mit Datum, Veranstaltung, Kategorie und SCp auf einer neuen Seite ausgegeben...

Wie bekomme ich es hin, das dieser Seitenumbruch nicht geschieht, oder nur dann geschieht, wenn die Seite wirklich zu ende ist?

LG
Scuby

MrSpock 4. Apr 2008 06:58

Re: Qreport / QRDBText
 
Hallo scuby,

hast du das Band vielleicht so groß gezogen, dass es die ganze seite einnimmt. Das Band gibt die Höhe pro Datensatz an.

Übrigens macht ein First nur Sinn, wenn die datenmenge geöffnet ist. Nach einem Open musst du aber First auch nicht direkt aufrufen, weil nach dem Öffnen der Datensatzzeiger immer auf dem ersten Datensatz steht.

scuby 4. Apr 2008 12:07

Re: Qreport / QRDBText
 
Danke dir, genau das war der Fehler, die Band war zu hoch....

So nun geht alles habt vielen vielen Dank....


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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