Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FastReport5 - Zeile in frxDBDataset einfügen (https://www.delphipraxis.net/185887-fastreport5-zeile-frxdbdataset-einfuegen.html)

fillibuster 15. Jul 2015 13:42

FastReport5 - Zeile in frxDBDataset einfügen
 
Hallo,

ist es möglich eine Zeile am Anfang eines frxDBDataset per Code einzufügen? Ich benutze FastReport5.

Danke und viele Grüße ...

mkinzler 15. Jul 2015 13:48

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Ein frxDBDataset ist mit einem DataSet verknüpft. Du müsstest also etwas dort einfügen.
Aber die Frage ist, ob das sinnvioll ist. GGf ein Memorydataset verwenden.

fillibuster 15. Jul 2015 15:08

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hallo mkinzler,

vielen Dank für deine Antwort. Vielleicht gibt es ja noch einen anderen Weg für mein Problem:

Ich drucke mit meinem Report Etiketten (z. B. 12 auf einer Seite). Jetzt will ich den Druckstartpunkt auswählen. Ich dachte jetzt ich fülle einfach je nach Auswahl Leerzeilen in das Dataset ein. Wenn z. B. erst ab Label 5 auf der ersten Seite gedruckt werden soll würde ich 4 leere Zeilen in das Dataset ein.

Viele Grüße ...

Lemmy 15. Jul 2015 16:11

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Das wirst Du am einfachsten mit einem frxUserDataset nachstellen können - die Anzahl der Datensätze die es zu überspringen gilt einfach abzählen, anschließend die eigentlichen Daten übertragen...

fillibuster 15. Jul 2015 16:38

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hi,
Zitat:

Zitat von Lemmy (Beitrag 1308766)
Das wirst Du am einfachsten mit einem frxUserDataset nachstellen können - die Anzahl der Datensätze die es zu überspringen gilt einfach abzählen, anschließend die eigentlichen Daten übertragen...

kann ich das auch direkt im Report erledigen? Ich wollte im eigentlichen Programm wenn möglich nichts mehr ändern!

Danke und viele Grüße ...

Der schöne Günther 15. Jul 2015 17:07

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Vielleicht verstehe ich etwas grundlegendes nicht, aber das ist doch eigentlich die Aufgabe deines TDataSets (der Query), nur das zu liefern, was man auch haben will. Wenn der Benutzer sagt "Von 5 - 44 bitte", dann sollte der Report auch nur diese Daten bekommen.

Oder funktioniert dein Report so, dass beispielsweise 6 Etiketten auf eine A4-Seite passen und wenn erst ab Nr. 5 gedruckt werden soll sollen die ersten 2/3 der Seite leer bleiben?

fillibuster 15. Jul 2015 17:22

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hi,
Zitat:

Zitat von Der schöne Günther (Beitrag 1308769)
.. Oder funktioniert dein Report so, dass beispielsweise 6 Etiketten auf eine A4-Seite passen und wenn erst ab Nr. 5 gedruckt werden soll sollen die ersten 2/3 der Seite leer bleiben?

Genau so :)

Lemmy 15. Jul 2015 18:41

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Zitat:

Zitat von fillibuster (Beitrag 1308768)
kann ich das auch direkt im Report erledigen? Ich wollte im eigentlichen Programm wenn möglich nichts mehr ändern!

Frag bei FR Support direkt nach ob die dafür ne undokumentierte Möglichkeit eingebaut haben. Wenn nicht sehe ich schwarz.... ggf. könntest Du dich auch in der Doku im Bereich TfrxReportPage.OnManualBuild umschauen. Dazu brauchst Du aber mind. die Standard Edition damit du im Report scripten kannst...

Der schöne Günther 15. Jul 2015 18:45

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Liste der Anhänge anzeigen (Anzahl: 3)
Ok, dann würde ich es auch so machen: Das DataSet so lassen wie es ist und das über FastReport-Logik regeln. Darf sich nur keiner beschweren dass man, wenn man genug überspringt, am Anfang erst einmal komplett leere Seiten hat ;-)

Du kannst auf dem Kram den du in deinem Band hast unter Highlight Bedingungen setzen. Da kannst du beispielsweise sagen "Nicht sichtbar wenn Zeilennummer kleiner als fünf ist". Im Anhang mal ein Beispiel.

Geht problemlos mit der kostenlosen Edition.

fillibuster 15. Jul 2015 19:01

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hi,

danke für eure Antworten. Ich habe die pro-Edition und kann scripten! Wenn ich wie Der schöne Günther vorgeschlagen hat die ersten Zeilen unsichtbar mache, werden aber die ersten Zeilen des Datasets auch nicht angezeigt, oder verstehe ich das falsch?

Viele Grüße ...

P. S.: @Der schöne Günther - im Anhang steckt nicht viel drin

Der schöne Günther 15. Jul 2015 19:06

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Ich dachte genau das wolltest du?

Zitat:

Zitat von fillibuster (Beitrag 1308770)
Hi,
Zitat:

Zitat von Der schöne Günther (Beitrag 1308769)
.. Oder funktioniert dein Report so, dass beispielsweise 6 Etiketten auf eine A4-Seite passen und wenn erst ab Nr. 5 gedruckt werden soll sollen die ersten 2/3 der Seite leer bleiben?

Genau so :)



Was erwartest du im Anhang? Ein Fast-Report der dir per Variable erlaubt wie viele Einträge ab Start unsichtbar sein sollen...

Lemmy 15. Jul 2015 19:12

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1308781)
Ich dachte genau das wolltest du?

nein will er nicht.

Er will einen Datenbestand drucken (z.B. Adressliste). nun sind von den Etiketten auf der ersten Seite die ersten 5 schon weg, also soll der Druck beim Etikett 6 anfangen

Sir Rufo 15. Jul 2015 19:13

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
@Lemmy :thumb:

fillibuster 15. Jul 2015 19:19

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hi,
Zitat:

Zitat von Der schöne Günther (Beitrag 1308781)
Was erwartest du im Anhang? Ein Fast-Report der dir per Variable erlaubt wie viele Einträge ab Start unsichtbar sein sollen...

Da ist aber kein Report drin :gruebel: . Aber dein Weg ist leider keine Lösung für mich (siehe #12) - trotzdem danke :thumb:

Der schöne Günther 15. Jul 2015 20:08

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ach jetzt verstehe ich! Du willst bei den Daten ganz am Anfang beginnen, aber die Position des ersten Items soll bereits dort sein, wo man normalerweise das fünfte hingedruckt hätte!

Du kannst das Einfügen von "Leeren Einträgen", wie schon von anderen schlauen Leuten gesagt, mit einem UserDataSet lösen. Setze einfach irgendwo wieviele "Items" du überspringen möchtest und zähle in deinem OnNext-Ereignis des UserDataSets einen Zähler um eins hoch.

Im Anhang nochmal ein Beispiel. Und ja, da ist ein Report auf dem Formular.

fillibuster 15. Jul 2015 20:28

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hallo Günther,

vielen Dank - ich habe in der Zip nach einer .fr Datei gesucht :stupid:. Dein Beispiel kann ich nachvollziehen - allerdings wäre es mir immer noch lieber, man könnte das ganze direkt im Report lösen.

Viele Grüße ...

Uwe Raabe 15. Jul 2015 21:08

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Zitat:

Zitat von fillibuster (Beitrag 1308793)
allerdings wäre es mir immer noch lieber, man könnte das ganze direkt im Report lösen.

Ohne deinen konkreten Report jetzt zu kennen und deshalb auch keine Ahnung ob das funktioniert: Du könntest versuchen, in einem geeigneten Event per Script die Eigenschaften CurX und CurY des Engine-Objekts zu setzen.

fillibuster 15. Jul 2015 21:22

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hi,

aufgebaut ist der Report wie in diesem Beispiel: https://www.fast-report.com/public_d...ing_labels.htm

fillibuster 20. Jul 2015 20:17

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hallo zusammen,

auch die Rücksprache mit dem FastReport Support hat kein Ergebnis gebracht, so dass ich jetzt versuche den Weg über Delphi zu gehen. Allerdings verstehe ich nicht, wie ich das TfrxDBDataset am Anfang um 5 leere Zeilen erweiterern kann. Habt ihr da einen Tipp?

Danke :thumb:

Lemmy 20. Jul 2015 20:22

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Zitat:

Zitat von fillibuster (Beitrag 1309318)
Habt ihr da einen Tipp?

was gefällt dir an Tipp 4 nicht? Oder ließt du nur selektiv?

fillibuster 20. Jul 2015 20:28

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Hi,

gefallen tut mir das schon, ich verstehe nur nicht, wie ich das umsetzen soll. Erst in ein UserDataset die Anzahl der zu überspringenden Daten einfügen und dann mit denen aus dem DBDataset auffüllen?

Viele Grüße ...

Lemmy 20. Jul 2015 21:14

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
nein du verwendest dann kein frxdataset.

Du verwendest das frxUserDataset, wie das angewendet wird steht in div. Posts hier. Du musst dort die notwendigen Felder anlegen und die Ereignisse implementieren.

Im OnNewGetValue überspringst du so lange das Füllen der Daten, so lange dein Zähler der Etiketten die übersprungen werden müssen >1 ist. In OnNext und OnEof musst Du ebenfalls beide Zähler berücksichtigen, d.h. erst mit dem Überspringenzähler arbeiten, ist der auf 0 dann den normalen Zeilenzähler bzw. mit deinem DataSet.EOF .

fillibuster 20. Jul 2015 21:43

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Ah ok, danke. Das werde ich so mal probieren :thumb:

fillibuster 23. Jul 2015 10:35

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
Ja ich nochma :oops:

habe es jetzt so probiert, aber die Labels werden nicht übersprungen. Ich finde den Fehler nicht:

Delphi-Quellcode:
  private
    labeljump : integer;
    linecount : integer;

....

procedure Treport.Button3Click(Sender: TObject);
begin
  labeljump := 5;

  data.reportQuery.Open;

  datasetLabels.RangeEndCount := (data.reportQuery.RecordCount + labeljump);

  main.frxReport1.Clear;
  main.frxReport1.DataSet := datasetLabels;
  main.frxReport1.LoadFromFile(reportPath + 'test.fr3');
  SetVariables();
  main.frxReport1.ShowReport(true);

end;

procedure Treport.datasetLabelsCheckEOF(Sender: TObject; var Eof: Boolean);
begin
  Eof := linecount >= (data.reportQuery.RecordCount + labeljump)
end;

procedure Treport.datasetLabelsFirst(Sender: TObject);
begin
  linecount := 0;
end;

procedure Treport.datasetLabelsNext(Sender: TObject);
begin
  inc(linecount);
end;

procedure Treport.datasetLabelsPrior(Sender: TObject);
begin
  dec(linecount);
end;

procedure Treport.datasetLabelsGetValue(const VarName: string;
  var Value: Variant);
begin
  if datasetLabels.RecNo > labeljump then
  begin
    if VarName = 'id' then Value := data.reportQuery.FieldByName('id').AsInteger;
    if VarName = 'lastname' then Value := data.reportQuery.FieldByName('lastname').AsString;
    ...
  end;
end;

Lemmy 23. Jul 2015 10:38

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
und wo ist der Rest (OnEOF, OnNext, OnPrior) des Userdataset?

fillibuster 23. Jul 2015 10:56

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
siehe oben ...

Lemmy 23. Jul 2015 12:09

AW: FastReport5 - Zeile in frxDBDataset einfügen
 
schon mal debugged?

Du prüfts im GetValue auf

if datasetLabels.RecNo > labeljump then


änderst aber die RecNo weder im Next noch im Prior... Daher würde ich vermuten dass Du hier eheer

if LineCount > labeljump then


prüfen solltest damit was kommt..

Grüße


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