![]() |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Liste der Anhänge anzeigen (Anzahl: 2)
du kannst es auch einfach mit einem Script im Report machen
In den Report ein Masterband und ein Detailband einfügen Masterband Deinem Dataset zuordnen. Detailband nicht zugeordnet Anzahldatensätze auf 1 stellen Siehe Screenshot1 Das Ergebnis siehe Screenshot2
Delphi-Quellcode:
var
LastMeldergruppe : integer; procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin //leere Zeile ausblenden MasterData1.visible := False; if (LastMeldergruppe) <> <frxDBDataset1."Meldergruppe"> then begin //leere Zeile anzeigen MasterData1.visible := True; end; LastMeldergruppe := <frxDBDataset1."Meldergruppe"> + 1; end; procedure frxrprt1OnStartReport(Sender: TfrxComponent); begin MasterData1.DataSet.First; LastMeldergruppe := <frxDBDataset1."Meldergruppe">; end; |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Die Routine sollte doppelte Nullspalten entfernen (getippt und nicht getestet). D.h. Du liest die Query ein, jagst das DS durch die Methode und druckst anschließend aus.
Delphi-Quellcode:
Du gehst von hinten nach vorne durch und löschst eine leere Zeile, wenn die zuvor besuchte (also, die darunter) auch schon leer war.
Procedure RemoveDuplicateNUllRows (aDataSet : TDataSet; aFieldNameToCheckForNull : String);
var prevLineWasNull : Boolean; Begin aDataSet.Last; While not aDataSet.Bof do begin if VarIsNull(aDataSet[aFieldNameToCheckForNull]) then begin if prevLineWasNull then aDataSet.Delete; prevLineWasNull := Not prevLineWasNul; end else prevLineWasNull := false; aDataSet.Prior end end; |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
So, jetzt Doktor ich hier schon wieder etwas länger rum
Zitat:
Nach genauer Prüfung, kann das ja auch nicht gehen...
SQL-Code:
Im Left Join, wird ja abgefragt, ob der Wert Meldergruppe = Value ist
from
ValueTable left join MelderGruppen on Meldergruppe = Value -> Meldergruppe(1) = Value(1) = true Meldergruppe(?) = Value(2) = false |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Ein Left Join ist ein Outer Join, d.h. dass wenn es in der "rechten" Tabelle keine Entsprechungen gibt, werden deren Felder genullt.
|
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Ohne etwas am Report zu ändern und nur um nochmal das genannte zusammenzufasse, bzw. zu erweitern.
leere Dummy-Datensätze einfügen, für die fehlenden Datensätze k.A. warum man den Report extra wild verbiegen will. * entweder aus einem Generator an das Select dranUNIONen (nur die Indize, welche fehlen) * oder eine Sequenz/Dummytabelle 1 bis 256 (bzw. bis 255) erzeugen und dort die existierenden Daten anJOINen (siehe mein Vorredner) |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
SQL-Code:
SELECT ZahlerEMA.MG, MGV_EMA.Meldergruppe FROM ZahlerEMA left join MGV_EMA on MGV_EMA.Meldergruppe = ZahlerEMA.MG WHERE Anlagennummer = 325 ORDER BY ZahlerEMA.MG
Und was bitte ist dann daran falsch. Das Ergebnis der Abfrage liegt im Anhang |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Sicher, daß in MGV_EMA diese Datensätze wirklich nicht drin sind? :stupid:
|
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
SQL-Code:
Ich denke schon... Siege Abfrage und Anhang
SELECT Meldergruppe FROM MGV_EMA WHERE Anlagennummer = 325 ORDER BY Meldergruppe
|
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Ups, falsch geguckt. :oops:
Und wie sieht ZahlerEMA aus? |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Liste der Anhänge anzeigen (Anzahl: 1)
Wie vorgesehen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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 by Thomas Breitkreuz