Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrageergebnis zwischenspeichern (https://www.delphipraxis.net/111718-abfrageergebnis-zwischenspeichern.html)

d6lpz 8. Apr 2008 10:11

Datenbank: Acc2000 • Version: 2k • Zugriff über: ADO

Abfrageergebnis zwischenspeichern
 
Hallo,

ich suche eine Möglichkeit das Ergebnis einer Abfrage "zwischenzuspeichern" um es dann weiterverarbeiten zu können.
Das heißt, ich möchte es dann als Datengrundlage für eine Reportkomoponente verwenden.

Bin für alle Stichworte, Anregungen oder Hinweise dankbar!
Dirk

Klaus01 8. Apr 2008 10:13

Re: Abfrageergebnis zwischenspeichern
 
Um was für ein Ergebnis handelt es sich.
Was meinst Du mit Zwischespeichern, im Memory festhalten
oder auf die Platte schreiben?

Grüße
Klaus

d6lpz 8. Apr 2008 10:22

Re: Abfrageergebnis zwischenspeichern
 
Hallo,
Zitat:

Zitat von Klaus01
Um was für ein Ergebnis handelt es sich.
Was meinst Du mit Zwischespeichern, im Memory festhalten
oder auf die Platte schreiben?

Grüße
Klaus

Die Abfrage ist eine CrossQry. Das Ergebnis der Qry ist Grundlage für ein Report.
Da durch die Kreuzabfrage zur Entwurfszeit die Anzahl und Namen der Felder noch nicht bekannt sind, kann ich in dem Report auch vorher die zu füllenden Felder nicht benennen. Ich hoffte nun, dass ich durch das Zwischenspeichern an die Feldnamen herankommen, den Report entsprechend gestalten und dann den Report aufrufen könnte.
Die Reportkomponente benötigt als Datenbasis ein Dataset.
Wie kann ich dieses Dataset mit den "zwischengespeicherten" Werten "füllen"?
Dirk

hoika 8. Apr 2008 12:06

Re: Abfrageergebnis zwischenspeichern
 
Hallo,

eine Query ist auch ein DataSet,
also könntest du deine Query als Ausgangspunkt für den Report nehmen.

Dein Problem "Felder nicht bekannt",
wie willst du dann einen Report designen ?


Heiko

d6lpz 9. Apr 2008 07:00

Re: Abfrageergebnis zwischenspeichern
 
Zitat:

Zitat von hoika
Hallo,

eine Query ist auch ein DataSet,
also könntest du deine Query als Ausgangspunkt für den Report nehmen.

Dein Problem "Felder nicht bekannt",
wie willst du dann einen Report designen ?


Heiko

In Access werden die Reports für crossqry's dynamisch erzeugt. Da funktioniert das automatisch.

Da ich aber weiß mit welchen Feldern zu rechnen ist, wollte ich die Feldliste, welche von der CQry zurückgegeben wird, einlesen, die Felder zu den im Report definierten umbenennen und dann ein neues DataSet füllen und dem Report zur Verfügung stellen.
Der Report ist ein Export nach Excel. Für den Export wird ein Excel-Template eingelesen und in diesem befindet sich die Definition der zu erwartenden Felder/Feldnamen.
Die Exceldatei jedesmal neu generieren, also ohne Template, würde die durch diese Templatefunktion gewonnene Flexibilität eben gerade zunichte machen. Die Daten werden in den ExcelSheets weiterverbreitet und die Reports werden mit Conditional Formats entsprechend gestaltet.
Mit normalen Qry's funktioniert das schon perfekt - allerdings sind dort zur Laufzeit die Feldnamen und deren Anzahl schon bekannt.

Die CrossQry liefert als Ergebnis eine Datenmenge für jeden Tag eines Monats. Da die Monate eine unterschiedliche Anzahl von Tagen haben (Schaltjahr/Februar) ist die Anzahl der Spalten unterschiedlich.

Ich habe die Feldnamen ausgelesen und wollte sie jetzt umbenennen, allerdings weiß ich noch nicht wie ich den Schreibschutz des aktivierten DataSets umgehen kann bzw. die Datenmenge für das andere Dataset zusammenstellen kann.
Ich hatte in der Hilfe etwas gefunden, wie man ein DataSet in ein anderes kopieren kann. Ich dachte nun bei diesem Kopiervorgang kann man die Felder entsprechend umbenennen.

Bin also noch am knobeln...
Dirk

hoika 9. Apr 2008 07:03

Re: Abfrageergebnis zwischenspeichern
 
Hallo,

vielleicht hilft ja das TClientDataSet.


Heiko

d6lpz 9. Apr 2008 07:15

Re: Abfrageergebnis zwischenspeichern
 
Zitat:

Zitat von hoika
Hallo,

vielleicht hilft ja das TClientDataSet.


Heiko

Habe gerade in der Hilfe nach Erläuterung gesucht. Mit TClientDataSet habe ich noch nichts angefangen :-(
Ich verstehe noch nicht wie ich damit auf eine ADOQry zugreifen kann.
Muß also noch weiter lesen...

Dirk

hoika 9. Apr 2008 08:28

Re: Abfrageergebnis zwischenspeichern
 
Hallo,

damit kannst du eine Tabelle im Speicher erzeugen,
die füllst du dann aus deiner Query mit Werten
und benutzt das ClientDataSet als Grundlage des Reports.


Heiko

PS: Ich kenne das Ding auch nur, benutzt habe ich es noch nicht.

d6lpz 9. Apr 2008 09:56

Re: Abfrageergebnis zwischenspeichern
 
Vielleicht kann ich es später verwenden.
Ich habe mit einer anderen Lösung Erfolg gehabt. In dem Template habe ich die Feldnamen mit Hochkomma angegeben.
Habe keine Ahnung wieso das jetzt funktioniert - aber es funktioniert. Möglicherweise ein Typumwandlungsproblem in der Exl-Report Komponente.

Danke für Deine Hinweise!
Dirk


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz