AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Thema durchsuchen
Ansicht
Themen-Optionen

Fast Report - Leerzeile einfügen bei fehlendem Datensatz

Ein Thema von Jens Hartmann · begonnen am 3. Dez 2014 · letzter Beitrag vom 5. Dez 2014
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 08:45
Datenbank: Access • Version: 2007 • Zugriff über: ADO
Hallo zusammen,

ich erstelle mit FastReport einen Report, in dem eine Tabelle über eine MasterDataBand angezeigt weird. Funktioniert auch echt gut.

Die Tabelle die ich Anzeigen möchte, verfügt über einen Primärschlüssel, den ich nicht zur Anzeige bringen. Es gibt aber eine weiteres Feld, welches eine fortlaufende Nummerierung enthält (z.B. 1 - 100). Es kann vorkommen, das die Wert 1 - 5 enthalten sind, der Wert 6 fehlt und dann der Wert 7-22 wieder vorhanden ist.

Beispiel:

1 Feld(1) Feld(2) Feld(3)
2 Feld(1) Feld(2) Feld(3)
3 Feld(1) Feld(2) Feld(3)
4 Feld(1) Feld(2) Feld(3)
5 Feld(1) Feld(2) Feld(3)
7 Feld(1) Feld(2) Feld(3)
8 Feld(1) Feld(2) Feld(3)

Bei der Ausgabe kann man somit nicht auf einen Blick erkennen, das Zeile 6 noch zur Verfügung steht. Wie kann ich hier im Report eine Leerzeile generieren lassen.

So sollte es dann aussehen:

Beispiel:

1 Feld(1) Feld(2) Feld(3)
2 Feld(1) Feld(2) Feld(3)
3 Feld(1) Feld(2) Feld(3)
4 Feld(1) Feld(2) Feld(3)
5 Feld(1) Feld(2) Feld(3)

7 Feld(1) Feld(2) Feld(3)
8 Feld(1) Feld(2) Feld(3)

Vorab vielen Dank und Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 09:02
Du musst diesen "leeren" Datensatz dem Report zur Verfügung stellen. Also einfach vor dem Report aktiv werden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 09:06
Nur eine Idee, und dafür müsstest Du im Report ein wenig programmieren: Definiere Dir eine lokale Variable für die fortlaufende Nummer. Bei jedem Datensatz schaust Du nun, ob dessen Nummer der gemerkten + 1 entspricht. Falls nicht, müsste die Höhe aller Komponenten der Zeile des Bandes verdoppelt und die Ausgabe am unteren Rand ausgerichtet werden. Falls doch, dann wieder auf Standard zurückstellen. Anschließend die Variable in jedem Fall mit der aktuellen Nummer belegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 09:28
Zitat von Sir Rufo:
Du musst diesen "leeren" Datensatz dem Report zur Verfügung stellen. Also einfach vor dem Report aktiv werden.
Das geht leider nicht, da es diesen leeren Datensatz nicht gibt. Ich habe eine Tabelle, in der Störmeldungen eingetragen sind. Technisch kann man hier 512 Stück/pro Störmeldeanlage anlegen. Existieren diese nicht, werden diese in der DB auch nicht angelegt.

Zitat von DeddyH:
Nur eine Idee, und dafür müsstest Du im Report ein wenig programmieren: Definiere Dir eine lokale Variable für die fortlaufende Nummer. Bei jedem Datensatz schaust Du nun, ob dessen Nummer der gemerkten + 1 entspricht. Falls nicht, müsste die Höhe aller Komponenten der Zeile des Bandes verdoppelt und die Ausgabe am unteren Rand ausgerichtet werden. Falls doch, dann wieder auf Standard zurückstellen. Anschließend die Variable in jedem Fall mit der aktuellen Nummer belegen.
Der Ansatz scheint mir logisch, aber doch sehr aufwendig. Eventuell sollte ich das DataSet für die Übergabe an den Report entsprechend erweitern.
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 09:38
Code:
select n.LaufendeNummer, d.* 
  from AlleNummern n
       left join MeineDaten d
         on n.LaufendeNummer = d.Nummer
  where n.LaufendeNummer between :Anfang and :Ende
So könnte man die Reportquelle erweitern, so daß Lücken entstehen. Ich persönlich bevorzuge die Variante, so wenig wie möglich Logik im Report selbst zu haben. Der ist für die Formatierung zuständig. Wobei...hmmm.. die Leerzeichen auch eine Formatierung sein könnten.

In jedem Fall ist imho o.g. Variante die einfachste.

@DeddyH: Bei deinem Lösungsansatz müsstest Du eventuell aus dem 'verdoppeln' ein 'ver-N-fachen' machen, denn wenn z.B. die Eintrage 6-123 fehlen, sind das dann u.U. mehr Lücken. Kommt aber drauf an.

Allgemein würde ich sagen:
Eine Lücke konstanter Größe, egal wie viele Nummern fehlen => DeddyH.
Für jede fehlende Nummer eine Lücke => vielleicht meine.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 09:48
Der Ansatz von Dejan Vu scheint mir auch am sinnvollsten und kann notfalls auch so aufgeblasen werden, dass große Lücken wieder auf eine Zeile eingedampft werden.
Aus der Anforderung ist mir allerdings nicht klar, was "am Ende" der Liste geschehen soll, hier ist ja auch eine "Lücke" bis 512.
Davon abhängig müsste man sich überlegen, wie man "AlleNummern " aus dem Beispiel SQL befüllt bzw handhabt.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 10:14
Die Variante von Dujan Vu werden ich mal probieren. ich persönlich würde das auch gerne aus dem Report rauslassen und im Programm verarbeiten.

Ich benötige eigentlich egal wie groß die Lücke ist nur einen einzige Leerzeile. Sinn ist es nur auf einen Blick erkennen zu können, ob noch Reserve Meldungen vorhanden sind. Wie viele, spielt hier erstmal keine Rolle.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 10:19
Meiner Meinung nach ist es schlecht den Report dafür derart zu verbiegen. Da ist es besser zwischen der Abfrage und dem Report diese Lücken, je nach Gusto, in die Datenmenge einzufügen. Dadurch ergibt sich der geringste Aufwand bei der Abfrage und der Report-Gestaltung.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 10:29
Der Report wird ja mit eine geänderten Datenquelle nicht verbogen.
2 verschiedene Datenquellen (Views)
1 Report
Je nach Datenquelle zeigt er Lücken an oder nicht.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 3. Dez 2014, 10:43
Der Report wird ja mit eine geänderten Datenquelle nicht verbogen.
2 verschiedene Datenquellen (Views)
1 Report
Je nach Datenquelle zeigt er Lücken an oder nicht.
Das ist doch genau das was ich sage "dem Report entsprechende Informationen liefern". Wie und wann und wieso ist egal, der Report bekommt einfach alle Informationen übermittelt.

Das Verbiegen bezog sich auf den Vorschlag von DeddyH, wo der Report umständlich dahingehend programmiert werden muss.

Das würde ich nur dann in Erwägung ziehen, wenn ich nur Zugriff auf den Report und nicht auf die Datenmenge habe. Das scheint hier aber nicht der Fall zu sein. Und eine andere View muss es nicht sein, geht aber logischerweise auch. Je nach Datenbank kann das von trivial bis schwierig sein. Darum wäre mein Favorit ein Vorbereiten der Datensätze in der Anwendung selber und diese dann dem Report zu übergeben.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 10:38 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