Gefilterte Table ausdrucken --> funktioniert nicht
-
Hallo,
ich will die gefilterten Datensätze einer Table ausdrucken. Hab schon alles schön mit QuickReport erstellt und so, funktioniert auch wunderbar.
Problem:
Er druckt immer ALLE Datensätze aus, auch wenn ich über eine Suchfunktion (Filtereigenschaft) Datensätze aus der Table filtere und diese dann auch nicht mehr in einem DBGrid angezeigt werden (soll heißen, dass die Filterfunktion funktioniert). Ich will aber halt das er dann auch nur die Datensätze ausdruckt, die nicht ausgefiltert wurden.Mein vergeblicher Versuch:
void __fastcall TForm3::Button3Click(TObject *Sender)
{
PrintDialog1->Execute();if (DataModule2->Table1->Filtered == true)
{
DataModule2->Table1->Active == true;
QuickReport1->Print();
DataModule2->Table1->Active == false;
}
else
{
QuickReport1->Print();
}
}Active hab ich einfach mal so ausprobiert, obwohl ich nicht genau weiß was dann passiert....
Oder bin ich da auf 'nem total falschen Weg???
-
Hast du mal mit:
QuickReport1->Preview();
genauer kontrolliert, welche Datensätze dort enthlten sind?
MfG
xy
-
Hallo
wie hast du deinen QuiockRep mit der Tabelle (deinen Daten) verbunden
MfG
Klaus
-
@xy: ja, in der preview zeigt er auch alle datensätze an, obwohl ich die table gefiltert habe.
ich hab 'ne 2. table auf den quickreport gelegt und diese dann eben auch mit meiner paradox-datenbank verbunden. genau wie table1, welche in einem datenmodul zusammen mit einer datasource liegt. die qrdbtexte die in einem detailqrband liegen habe ich dann mit table2 verbunden.
dann hab ich außerdem noch folgendes versucht:
ich hab gesehen, dass ich dann bei table2 MasterSource auf
DataModule1->DataSource1 setzen kann. hab ich dann mal gemacht und dann die qrdbtexte mit table1 verbunden. quasi war dann table2 nutzlos. dann hat er plötzlich immer nur den ersten datensatz, der in der gefilterten table stand ausgegeben (preview).ich hab meines wissens jetzt schon alle einstellmöglichkeiten und verbindungen zwischen allen tables, datasources, qrdbtexten, etc. versucht. ich hab's mit einer und mit zwei tables versucht. nix hat funktioniert.
ich versteh' einfach nicht, warum er mir die gefilterte table im dbgrid wunderbar korrekt ausgibt, d.h. doch dass der filter funktioniert und die table gefiltert ist. warum druckt er dann quasi noch den alten stand, d.h. die ungefilterte table? hat er irgendwie nicht mitbekommen, dass die table gefiltert wurde?hab auch schon ein bisschen was mit code versucht, aber ebenfalls ohne erfolg.
im moment weiß ich gar nicht mehr was ich überhaupt noch machen könnte. ist echt 'ne dumme sache. aber vielleicht habt ihr ja noch 'nen tipp.
-
Hallo
hast du die zweite TTable auch "gefiltert" ?
Warum verbindest du denn nicht mit der gleichen TTable wie dein DBGrid ?
MfG
Klaus
-
ja, die 2. table hab ich auch gefiltert, hab auch extra mal noch ein dbgrid angelegt und den inhalt der 2. table dort ausgegeben. und das hat auch funktioniert, er hat die datensätze korrekt angezeigt, auch wenn gefiltert wurde.
ich hab ja auch schon versucht den quickreport mit der table zu verbinden, die in dem normalen dbgrid angezeigt wird. gerade das ist ja das merkwürdige:
DBGrid1 ist mit DataSource1 verbunden, DataSource1 ist mit Table1 verbunden, Table1 ist wiederum mit den QRDBTexten in dem QuickReport verbunden. Also müsste doch theoretisch die gefilterte Table1 ausgedruckt werden. Aber stattdessen druckt er dann nur den ersten Datensatz der gefilterten Table1 aus, also nur eine Zeile, obwohl im DBGrid1 mehrere Datensätze angezeigt werden.Ich schick hier mal noch die Einstellungen meiner Table1 mit, vielleicht ist ja was falsch eingestellt:
Active->true
AutoCalcFields->true
AutoRefresh->false
CachedUpdates->false
DatabaseName->Name der Datenbank
DefaultIndex->true
Exclusive->false
FieldDefs->Hier sind meine 15 Felder festgelegt
Filter->leeres Feld
Filtered->false (wird allerdings im Quellcode auf true gesetzt, wenn die Suchfunktion über einen Button aktiviert wird, d.h. wenn die Table1 gefiltert wird)
Index...->Die 4 IndexDinger sind alle leer
MasterFields->leeres Feld
MasterSource->leeres Feld
ObjectView->false
ReadOnly->false
SessionName->leeres Feld
StoreDefs->false
TableName->Name der Datenbank
TableType->ttParadox
Tag->0
UpdateMode->upWhereAll
UpdateObject->leeres Feld
-
YEAH, ich hab den Fehler gefunden, YEAH.
Hab beim QuickReport übersehen das DataSet auf Table1 zu stellen. Und wegen so 'ner Kleinigkeit hab ich Stunden voller Verzweiflung verbracht. Naja, was soll's.
Vielen Dank an KlausB und xy für eure Bemühungen.
Die Akte wird geschlossen und verstaubt.