DBGrid drucken - viele Wege nach Rom

09/04/2011 - 12:17 von Nicole Wagner | Report spam
Hallo User,


mein naechstes Thema hat ganz viele Loesungen:
Ich moechte mein DBGrid ausdrucken / an eine Datei schicken.

Die einzige, die ich sofort nachprogrammieren koennte, ist ganz
grauslich. Welche Loesung habt Ihr?

Diese Loesungen gibt es im Netz:


1)
Die grausliche, die ich frueher oder spaeter auch zusammenbraechte:

Man greift auf die einzelnen Felder des DGGrids zu und liest die Werte
einzeln aus. - Themenwechsel.

2)
Mit Rave Report: Da soll es ein "Preview" geben und danach kann man
drucken. Leider zeigt mein Preview-Form kein DBGrid, sondern ist grau.
Das wundert mich nicht, denn ich habe nicht herausgefunden, wie ich
Preview mit DBGrid verbinde. Geht das leicht? Wenn ja, bitte langsam
sprechen.

3)
Im Grunde interessiert mich mein DBGrid nicht, sondern dessen Inhalt.
D.h. ich brauche nicht die Grid, sondern das IBQuery dahinter. Leider
nicht nur die SQL-Abfragen, sondern inkl. aller berechneter und Look-Up
Felder. D.h. incl der Verarbeitung im OnCalc-Ereignis.
Gibt es hier eine elegante Methode, das IBQuery wohin zu schicken? Wie
und wohin?

4)
Mein DBGrid hat zur Zeit keine Tabelle dahinter. Im Netz gibt es
Hinweise, dass es hier Druckloesungen geben koennte. Weiss jemand hier
ein Link und Naeheres? Ich habe noch nie mit Tabellen gearbeitet und
moechte es nicht wirklich lernen, wenn es vermeidbar ist. Ich moechte
es nur machen, wenn es danach superkomfortabel wird.

5)
Theoretisch muesste es noch eine Mercedes Loesung geben. Und zwar mit
TChart oder TChart Pro. Praktisch weiss ich kaum, wo ich zu suchen
beginnen soll. Ich braeuchte hier ein Schritt-fuer-Schritt Tutorial.
Meines Erachtens muesste es in TChart (Version 8) moeglich sein,
irgendeine (Text?)komponente (welche?) mit der IBQuery (aber auch mit
dem oncalc-event?) zu verbinden und danach Wahnsinnsausdrucke mit allen
Konfigurationen zu erstellen. So rein theoretisch.

6)
Wie sieht es mit anderen Texteditoren aus? Ist es hier sinnvoll zu
graben zu beginnen? Sowas wie TDBMemo? etc.


Danke fuer Hinweise und Links!

Nicole
 

Lesen sie die antworten

#1 Joe Galinke
11/04/2011 - 10:56 | Warnen spam
Hallo Nicole,

Nicole Wagner schrieb:


Ich moechte mein DBGrid ausdrucken / an eine Datei schicken.



Nein, das möchtest Du nicht. Zwar korrigierst du Dich spàter, aber
scheinbar hast Du Dich noch nicht vollstàndig davon lösen können, das Grid
als Quelle Deiner Daten anzusehen.


Die einzige, die ich sofort nachprogrammieren koennte, ist ganz
grauslich.



Welche wàre das?

Welche Loesung habt Ihr?



Ich verwende dafür einen Reportgenerator, am liebsten Fast Report. Rave
Report wirst Du sicherlich ebenso gut dafür einsetzen können, nur habe ich
mit dem keinerlei Erfahrung.


2)
Mit Rave Report: Da soll es ein "Preview" geben und danach kann man
drucken. Leider zeigt mein Preview-Form kein DBGrid, sondern ist grau.
Das wundert mich nicht, denn ich habe nicht herausgefunden, wie ich
Preview mit DBGrid verbinde. Geht das leicht? Wenn ja, bitte langsam
sprechen.



Diese Preview ist eine Vorschau, nicht der eigentlich Report. In diesem
Report stellst Du eine Verbindung zu Deiner Datenmenge her (nicht zu Deinem
Grid), platzierst die Komponenten zu Darstellung eines Feldinhaltes auf
einem Datenband. Ob dann gedruckt oder die Vorschau (Preview) bemüht wird,
das ist unerheblich.

3)
Im Grunde interessiert mich mein DBGrid nicht, sondern dessen Inhalt.
D.h. ich brauche nicht die Grid, sondern das IBQuery dahinter.



Endlich!

Leider
nicht nur die SQL-Abfragen, sondern inkl. aller berechneter und Look-Up
Felder. D.h. incl der Verarbeitung im OnCalc-Ereignis.
Gibt es hier eine elegante Methode, das IBQuery wohin zu schicken? Wie
und wohin?



Diese Daten sind doch dann schon Bestandteil deiner Datenmenge.
Hast Du mal meine Prozedur zum Speichern eines Datasets in eine Datei
ausprobiert? Mache das mal.

Mein DBGrid hat zur Zeit keine Tabelle dahinter. Im Netz gibt es
Hinweise, dass es hier Druckloesungen geben koennte. Weiss jemand hier
ein Link und Naeheres? Ich habe noch nie mit Tabellen gearbeitet und
moechte es nicht wirklich lernen, wenn es vermeidbar ist. Ich moechte
es nur machen, wenn es danach superkomfortabel wird.



Weißt Du was Tabellen sind? Ich fürchte, nein.
Deine Datenbank besteht aus 1-n Tabellen. Mit einer Tabellenkomponente
TIBTable, TTable etc. erhàlst Du eine Sicht auf diese Daten, mit allen
Spalten und Zeilen. Per Filter können nun bestimmte _Zeilen_
herausgefiltert werden. Letztendlich erhàlst Du eine Datensammlung mit 2
Dimensionen, àhnlich einem Excelblatt. Über eine Datasource kannst Du diese
TIBTable nun mit einem Grid verinden.

Wo ist der Unterschied zu TIBQuery? Die Query erlaubt Dir eine komplexere
Abfrage, die sich evtl. aus den Daten mehrerer Tabellen zusammensetzt. Die
berechneten Felder sind kein Merkmal der Query, die könntest Du auch der
TIBTable gönnen.

Aber was hast Du letztendlich? Letztendlich erhàlst Du eine Datensammlung
mit 2 Dimensionen, àhnlich einem Excelblatt. Öhm, das hatten wir doch
schon.

Wenn es um das Lesen und Drucken geht, kannst Du die Tabellen und IBQuery
durchaus gleich ansehen.

Wenn ich Dich in Deiner Bemerkung nicht vollkommen falsch verstanden habe,
dann empfehle ich Dir dringend eine einfache Einführung Delphis
Datenbankkonzept. Demnach hast Du dieses nàmlich ganz und gar nicht
verstanden. Dieses ist aber wichtiger zu kennen (zumindest in Grundzügen),
als zu überlegen ob Firebird 2.5 schneller ist als 2.,1 und dadurch
Vorteile zu erwarten sind. Ich erinnere mich an eine diesbezügliche Frage
deinerseits.


5)
Theoretisch muesste es noch eine Mercedes Loesung geben. Und zwar mit
TChart oder TChart Pro. Praktisch weiss ich kaum, wo ich zu suchen
beginnen soll. Ich braeuchte hier ein Schritt-fuer-Schritt Tutorial.
Meines Erachtens muesste es in TChart (Version 8) moeglich sein,
irgendeine (Text?)komponente (welche?) mit der IBQuery (aber auch mit
dem oncalc-event?) zu verbinden und danach Wahnsinnsausdrucke mit allen
Konfigurationen zu erstellen.



Du kennst Diese Komponentne weitaus besser als ich, aber sind diese nicht
dafür gedacht, _Charts_ darzustellen? Ich ging bisher davon aus, dass Du
Deine Daten àhnlich einem Excelblatt ausgedruckt haben möchtest.

Kann das TChart? Die Möglichkeit, ein Dataset (TIBQuery, TTable etc) an
TChart oder TDbChart zu hàngen ist doch dafür gedacht, die für
Chartdarstellung notwendigen Werte bereitzustellen.

Dann stolperte ich noch hierüber:

| mit der IBQuery (aber auch mit
| > dem oncalc-event?)

Was meinst Du damit? Fragst Du Dich, ob das OnCalcFields-Event auch
funktionert wenn die IBQuery "irgendwo anders als im Grid" verwendet wird?



6)
Wie sieht es mit anderen Texteditoren aus? Ist es hier sinnvoll zu
graben zu beginnen? Sowas wie TDBMemo? etc.



Was erwartest Du von einem Texteditor wenn Du dee Inhalt eines Datasets
darstellen willst? Die Erwàhnung von TDbMemo bestàtigt meinen Eindruck der
Notwendigkeit das Datenbankkonzept und den Sinn der Komponenten zu
verstehen.

Ein TDbMemo ist wie ein TDbEdit für nichts anderes da, als den Inhalt eines
bestimmten Feldes des gerade aktiven Datensatzes einer geöffneten
Datenmenge anzuzeigen oder zu bearbeiten. Für nichts mehr. Gar nichts.
Punkt.

Zusàtzlich gibt es noch für bestimmte Datentypen spezialisierte
TDbxxxx-Komponenten. So kann man auch TDateTime in einem TDbEdit
darstellen, aber ein TDbDateEdit wàre halt für die Darstellung und
besonders Bearbeitung besser geeignet.


Zurück zum Drucken:

Lerne einen Reportgenerator zu nutzen. Rave Report wird mitgeliefert und
damit sollten sich hier auch einige Leute auskennen. Fast Report kostet, ob
der kostenlose Free Report mit aktuellen Delphis funktioniert, weiß ich
nicht.

Du erwàhntest aber das Schicken der Daten an eine Datei als Alternative.
Wie so oft frage ich mich, was Du überhaupt vor hast. Geht es Dir nur um
die Kontrolle von Daten? Dafür wàre als einfache und schnelle Lösung meine
Routine geeignet.

Funktioniert sie nicht? Dann solltest Du es erwàhnen.

Reicht das nicht oder geht es um etwas anderes?



Gruß, Joe

Ähnliche fragen