Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [FastReport] Innerhalb des Report in einem DataSet suchen (https://www.delphipraxis.net/149985-%5Bfastreport%5D-innerhalb-des-report-einem-dataset-suchen.html)

RWarnecke 4. Apr 2010 09:07


[FastReport] Innerhalb des Report in einem DataSet suchen
 
Hallo zusammen,

ich möchte gerne in einem FastReport-Bericht in einem übergebenen DataSet nach einem bestimmten Suchbegriff filtern. Das ganze muss/sollte in dem Pascalteil geschehen.

Wie übernehme ich die folgende Funktion in das Pascalskript ?
Delphi-Quellcode:
function TDM_Main.GetKTOText(KTONr: string; KRNr: Integer): string;
begin
  with UniQuery_Temp2 do
  begin
    SQL.Clear;
    SQL.Text := 'SELECT * FROM kto WHERE KTO1 = :K';
    ParamByName('K').AsString := KTONr;
    Open;
    if FieldByName('KTO' + IntToStr(KRNr)).AsString <> null then
      Result := FieldByName('KTO' + IntToStr(KRNr)).AsString
    else
      Result := '';
    Close;
  end;
end;

haentschman 4. Apr 2010 09:33

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Guten Morgen... :hi:

Wenn du mich fragst, gar nicht. Ich würde das auch als Mißbrauch ansehen. :zwinker: Ein Report ist dafür auch nicht zuständig. Der soll nur das was er bekommt darstellen. Die Aufarbeitung der Daten sollte mal schön die Anwendung übernehmen und dem Report in optimaler Weise zur Verfügung stellen.
Das Script sollte eher nur dazu dienen:
- visuelle Darstellung in Abhängigkeit von Feldwerten.
- kleinere Berechnungen mit vorhandenen Daten

:hi:

RWarnecke 4. Apr 2010 09:47

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Hallo haentschman,

die Funktion gibt mir ja einen Wert zurück, den ich in einer IF-Abfrage überpüfe um damit ein Memo im Report anzeige oder verstecke.

Die SELECT-Anweisung habe ich im Programm ausgeführt und an ein DataSet im Report übergeben. Da stellt sich mir jetzt nur die Frage, wie filtere ich jetzt diesen DataSet nach der KTONr ? Das Feld KTONr wird in dem Report angezeigt und genachdem welche KTONr ich habe muss ich anhand der IF-Abfrage und der Funktion das Feld angezeigt oder nicht.

mkinzler 4. Apr 2010 10:10

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Im OnAfterScroll des anderen DataSets

RWarnecke 4. Apr 2010 10:41

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Hallo Markus,

wo meinst Du genau ? Ich finde das Ereignis "OnAfterScroll" in keiner der Komponenten. Kannst Du mir bitte sagen, wo genau das Ereignis ist ? Irgendwie stehe ich gerade auf dem Schlauch.

mkinzler 4. Apr 2010 10:52

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Im DataSet (Query o.ä) aus dem KtoNr stammt

haentschman 4. Apr 2010 10:58

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Zitat:

Das Feld KTONr wird in dem Report angezeigt und genachdem welche KTONr ich habe muss ich anhand der IF-Abfrage und der Funktion das Feld angezeigt oder nicht.
wieviele verschiedene Kontonummern mußt du filtern ? Oder ist es nur eine Kontonummer wo das Memo ausgeblendet wird. Erklär mal bitte wie viele Möglichkeiten entstehen können.

RWarnecke 4. Apr 2010 11:17

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Der Aufruf der Funktion ist folgendermaßen :
Delphi-Quellcode:
DM_Main.GetKTOText('4190', Grunddaten.KRNr)
Dabei ist nur die Eigenschaft KRNr aus der Klasse Grunddaten variabel.

haentschman 4. Apr 2010 11:29

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
versteh ich nicht :gruebel: Was hat dieser Aufruf mit dem Report zu tun ? Im Report hast du die Kontonummern und in Abhängigkeit wievieler Varianten soll das Memo angezeigt werden ?

Edit:
kannst du das was du erreichen möchtest mal visualisieren ? Inhalt des übergebenen Datasets und wann soll was sichtbar sein...oder so :zwinker:

RWarnecke 4. Apr 2010 11:44

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Ich danke euch beiden. Ich habe das ganze jetzt anderst gemacht. Das Ergebnis der Funktion "GetKTOText" ermittel ich und gebe es an eine Variable im Report. Mit dieser Variable überprüfe ich nun die Kontonummern und lasse durch eine IF-Abfrage das Memo anzeigen oder nicht.

alzaimar 4. Apr 2010 11:45

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Ich würde das ja über ein UserDataset und ein eigenes Feld lösen. Im OnGetData-Event (heißt doch so, oder) des Userdatasets kannst Du dann deine Abfrage auslösen.

Wenn es denn unbedingt im Report sein muss, kannst Du auch einfach eine eigene Verbindung aufbauen. Lohnt sich aber nicht, finde ich.

haentschman 4. Apr 2010 11:51

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Zitat:

Das Ergebnis der Funktion "GetKTOText" ermittel ich und gebe es an eine Variable im Report.
...so ähnlich löse ich das auch manchmal. Dabei befinden sich in machen Datasets STATUS Spalten welche dann mit geladen werden und die Optik entsprechend des Status eingestellt wird.

Programmieren heißt: Machmal mit Tricks zum Ergebnis. :zwinker:

mkinzler 4. Apr 2010 11:56

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
In diesem Fall könnte man den Wert gleich im zu filterenden DataSet übergeben (Im Programm filtern oder Zeiger auf Datensatz plazieren)

RWarnecke 4. Apr 2010 12:00

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Zitat:

Zitat von haentschman
Programmieren heißt: Machmal mit Tricks zum Ergebnis. :zwinker:

Das stimmt, da gebe ich Dir recht.

Zitat:

Zitat von mkinzler
In diesem Fall könnte man den Wert gleich im zu filterenden DataSet übergeben (Im Programm filtern oder Zeiger auf Datensatz plazieren)

Das mache ich doch eigentlich indirekt. Ich hole mir den Wert mit der Funktion und übergebe den Wert an den Report.

mkinzler 4. Apr 2010 12:03

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Das kannst du dir ja Sparen, wenn du die Filterug vornimmst und dann den Wert als Spalte des DataSets übergibst

haentschman 4. Apr 2010 12:05

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
was mkinzler und ich meinen ist:
- wenn du den "Wert" im Dataset zu jedem Datensatz hast kannst du in jeder "Zeile" der Liste mit dem Wert "spielen".
- wenn du es als Variable übergibst, hast du quasi einen "globalen" Wert für alle.

...ersteres ist flexibler.

RWarnecke 4. Apr 2010 12:17

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Zitat:

Zitat von haentschman
- wenn du den "Wert" im Dataset zu jedem Datensatz hast kannst du in jeder "Zeile" der Liste mit dem Wert "spielen".
- wenn du es als Variable übergibst, hast du quasi einen "globalen" Wert für alle.

Achso, jetzt habe ich es kapiert. Da ich aber nur einmalig den Wert ermitteln muss, ist für mich die Variable im Report ausreichend.

haentschman 4. Apr 2010 12:21

Re: [FastReport] Innerhalb des Report in einem DataSet suche
 
Dann ist´s ja gut...kommt immer auf den Verwendungszweck an :thumb:


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