AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge FastReport - Zuordnung Page zu DataSet-Record

FastReport - Zuordnung Page zu DataSet-Record

Ein Thema von himitsu · begonnen am 25. Okt 2022 · letzter Beitrag vom 28. Okt 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#1

FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 12:53
Moin,

wie bekommt man es am Einfachsten hin, zu einem Record-Datensatz die gedruckte Seite zuzuordnen?
Also Record in frxReport1.Dataset zu den Seiten/Bildern vom TfrxBMPExport.

So lange alles perfekt läuft, erzeugt jeder Datensatz eine Seite. (PageNo = RecNo)
Gibt es aber Probleme, z.B. weil der QR-Code zu groß wird, dann sind es mehrere Seiten pro Datensatz.

Nach dem Prepare/Export müsste ich dann wohl irgendwie auf die Komponenten der Seiten zugreifen und mir von dort irgendwie einen Wert rausholen.
frxReport1.PreviewPages.Page[i] ???

Genau hab ich im HauptDataset ein Field und dessen Inhalt hätte ich gern, jeweils zu den Seiten des Exports.
* es gibt auf der Design-Page "ein" vollflächiges TfrxMasterData mit Memos, Barcode usw.
* und jetzt bräuchte ich nach dem Prepare/Export auf den Pages irgendwo einen gespeicherten Wert

* im Barcode. oder frxMemo.TagStr ließe sich über eine Variable <WorkSql."esl_barcode"> der Wert hinterlegen (diese eine Komponente müsste ich dann auch noch irgendwie identifizieren)
* einfacher wäre es wohl sowas direkt an der frxMasterData zu haben, aber dort gibt es kein TagStr, in Description werden Variablen nicht ersetzt und sonst gibt es nichts (im PropertyEditor zu finden)
* * aber eventuell kennt ja das MasterData auch schon intern (codeseitig) seine Zuordnung zu seinem DataSet (RecNo oder eine ID oder Kopie der Fields)


Im Grunde geht es jetzt darum, dass ich die Bilder vom Report zu ESLs zuordnen zu können und die Ausgabe dann an diese Devices zu übertragen.
https://www.delphipraxis.net/211367-...abels-esl.html
(im Moment nehme ich mir einfach die erste Seite und schicke sie an die ID aus dem ersten aktuellen Record)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Okt 2022 um 16:02 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.391 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 17:20
Ich habe die Tage was vergleichbares gebraucht, bin "einfach" hergegangen und habe keinen Gesamtreport erstellt und als PDF Einzelseiten exportiert, sondern halt Einzelpdf (also für einen Datensatz einen Report, den exportieren,...). nicht schön, dauert lange, funktioniert aber. Über welche Menge von Bildern sprechen wir denn?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#3

AW: FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 17:45
Das funktioniert aktuell schon, also je ein Gerät einzeln.

Aber wenn jetzt z.B. ein Artikel mehrere Lagerorte hat und man überall die Labels aktualisieren will, müssten mehrere Reports, bzw. mehrmals der gleiche Report (mit anderen Daten) gedruckt werden
und das ist schon bissl unpraktisch.

Nja, mehr als 4-5 werden es wohl nicht werden, außer jemand will mal ALLE Labels für ALLES aktualsieren (z.B. weil neues Design des Reports)

Wie gesagt, wenn alles super läuft, dann ist es einfach und ich könnte Seite mit RecNo gleichsetzen,
aber schon beim zweiten Test war es mit passiert, dass der QR-Code fehlplatziert war und somit einen Seitenumbruch erzeugte.
Gehe ich dann einfach mit PageNo=RecNo ran, würden ab dem zweiten Gerät die Inhalte nicht mehr stimmen.



Siehe Bild: https://www.delphipraxis.net/211367-...ml#post1511793
Falls es einen "falschen" Seitenumbruch gibt, und nur die erste Hälfte vom Label zu sehen wäre, wäre nicht so schlimm,
so lange es wenigstens der richtige (zugehörige) halbe Inhalt ist und bei den nachfolgenden Labels nicht das Falsche drauf stünde.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Okt 2022 um 17:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#4

AW: FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 18:00
Dass es möglich ist und der FR weiß was wo ist, das hatte ich heute schon erfahren/gesehn.
Mitbekommen, dass wir für einen Kunden mal was gebaut hatten. (von dem, der jetzt die neuen Labels designen soll)
Da kann man in der Druckvorschau auf Zahlen (frxMemos) klicken, im OnClick geht ein InputQuery auf, man kann andere Werte eingeben und die werden dann zurück in die Datenbank geschrieben.

Der bekommt im OnClick (FastScript) das Memo als Sender und das kennt alles Nötige (z.B. seine ID im .TagStr) .... ich muß jetzt nur noch rausbekommen, wie ich von außen da dran komm.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
479 Beiträge
 
#5

AW: FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 19:06
Dass es möglich ist und der FR weiß was wo ist, das hatte ich heute schon erfahren/gesehn.
Ja, weil jedes View im Report ein Objekt ist. Das Schema ist so (ohne Beachtung von FR Besonderheiten!):
Delphi-Quellcode:
procedure memWertPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
var
  sValue: String;
begin
  if Sender is TfrxMemoView then
  begin
    sValue := TfrxMemoView(Sender).Text;
    Modified := InputQuery('Bearbeiten', 'Wert ändern:', sValue);
    if Modified then
      TfrxMemoView(Sender).Text := sValue;
  end;
end;
Ich verstehe dein Problem nicht. Jedes Label soll auf eine Seite gedruckt werden. Ein Datensatz ist ein Label. Dann brichst du nach jedem Datensatz die Seite zwangsweise um.

Wenn es dir weiter hilft, kannst du meine Testanwendung verwenden und ein neues Projekt erstellen. Den Bericht designen und alle Daten für den Bericht als JSON Datei(en) hinterlegen und das gesamte Projektverzeichnis als Anhang hier einstellen. Dann kann ich es mir ansehen.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#6

AW: FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 20:44
Einzeln: Ich bekomme ja pro Seite ein Bitmap,
aber falls da was verrutscht, wäre es praktisch, wenn ich wüsste welche Seite/Bitmap zu welchem Datensatz gehört.

Aktuell verwende ich einfach blind die erste Seite (erstes exportiertes Bitmap) und sende sie an das im ersten aktuellen Datensatz verlinke Gerät.




Der Report/Designer ist in einem PixelModus:
frxReport.DotMatrixReport=True
frxDesignerForm.Units=2 (GridType=Pixel)
frxDesignerForm.Grid3=10 (GridSize in Points)
...
frxDesignerForm.ShowBandCaptions=0 -> das MasterData (alle Bänder) ohne Caption, damit die Anzeige im Designer nahezu wie im Ausdruck ist

nahezu = weil die Geräte haben nur 2 oder 3 Farben (hier Schwarz, Weiß und Rot) ... der Report und die Druckvorschau haben noch keine Farbglättung, bzw. viele Fonts auch ein Antialiasing, was später erst im exportierten Bitmap repariert wird, damit der Import nicht anfängt das häßlich zu rastern

Die Page ist z.B. 296 * 128 px groß (für den mittelgroßen kleinen ESL)

Im ReportDesigner gibt es einen TfrxMasterData, der über die ganze Seite positioniert ist.
Darin mehrere Memos, Barcode usw.
Im Prinzip gebe ich nur vor, dass es den einen MasterData gibt und wie die Seite eingerichtet ist (anhand des zugeordneten Gerätes) und dass es im DataSet eine bestimmte Spalte gebn muß, aber was da dann drin liegt, das entscheiden dann später die Designer.

Der FastReport erstellt im Prepare daraus je eine "Gruppe" pro Datensatz.

Also "normal" ein Record im frxReport.DataSet = ein MasterData + Memos usw. = eine Seite
und mehrere Records = gleichviele Seiten
ABER bei Problemen auch mal mehrere Seiten für einen Record, wenn das frxMasterData durch zu großen oder verschobenen Inhalt vergrößert wird. (den Überstand abschneiden, haben wir nicht hinbekommen)



Im Prinzip will ich jetzt einfach nur wissen welcher MasterData (oder welche Komponente ala Memo/Barcode) für einen der Datensätze auf welcher Seite liegt, bzw. auf welcher Seite das jeweilige MasterData beginnt.
Angehängte Grafiken
Dateityp: png BeispielReport.png (128,8 KB, 18x aufgerufen)
Dateityp: png BeispielPreview.png (29,2 KB, 15x aufgerufen)
Dateityp: png BeispielOverflow.png (32,6 KB, 5x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Okt 2022 um 12:59 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.391 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: FastReport - Zuordnung Page zu DataSet-Record

  Alt 25. Okt 2022, 20:16
klar, Einzeln drucken ist nicht so sexi - aber es erfüllt halt seinen Zweck. Vor allem wenn du das Resultat einzeln dann an das jeweilige Gerät übertragen musst.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz