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 Im FastReport eine Datensatz mit <null>-Werten ausgeben (https://www.delphipraxis.net/148022-im-fastreport-eine-datensatz-mit-null-werten-ausgeben.html)

RWarnecke 20. Feb 2010 21:00


Im FastReport eine Datensatz mit <null>-Werten ausgebe
 
Hallo zusammen,

in einem FastReport gebe ich in einem GroupFooter verschiedene Werte aus. Dabei kann es vorkommen, dass eine komplette Reihe bei der SQL-Abfrage keine Werte findet und nur NULL als Ergebnis ausgibt. Im Moment ist es so, dass dann diese Reihe im Report nicht angezeigt wird. Ich möchte diese Reihe aber anzeigen. Für jedes NULL-Ergebnis soll dann 0,00 stehen.

Wie und was muss ich einstellen, dass die leere Reihe angezeigt wird ?

mkinzler 20. Feb 2010 21:01

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Ersetzt die werte am Besten in der Abfrage

RWarnecke 20. Feb 2010 21:14

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Hallo Markus,

danke erstmal für Deine Antwort. Es gibt dabie nur leider ein Problem, es ist eine variable Select-Abfrage. Das soll heißen, genachdem welche Werte vorher im Programm ermittelt wurden, ändert sich die Select-Abfrage in den Spalten, die ermittelt werden sollen. Dabei gibt es nur zwei Zustände, entweder sind alle 12 Spalten mit <null> oder in allen Spalten steht eine Zahl drin.

Deshalb hatte ich nach einem Weg über FastReport gesucht.

mkinzler 20. Feb 2010 21:27

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
FastReport reagiert leider recht empfindlich auf NULL-Werte. Deshalb sorge ich in der Abfrage durch IIF() Konstrukte für "richtige" Werte

RWarnecke 20. Feb 2010 21:52

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Das muss ich mir nochmal genauer anschauen bei mir. Danke erstmal für den Hinweis mit IIF-Abfragen. Es ist in meinem Fall doch etwas komplizierter als ich dachte. Ich werde es mir genauer anschauen, wenn ich etwas wacher bin.

Sir Rufo 21. Feb 2010 00:56

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Wenn du noch mitgeteilt hättest welche DB dahinter liegt ...

es gibt da nämlich das nette
SQL-Code:
COALESCE( Wert1, Wert2, ... )
das hilft dir, die NULL-Werte mit einem definierten Inhalt zu füllen.

RWarnecke 21. Feb 2010 07:29

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Hallo Sir Rufo,

danke erstmal für Deine Anwtort. Es ist eine Firebird Datenbank, woraus sich der Report die Daten zieht.

mkinzler 21. Feb 2010 10:34

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Oder halt IIF(), NullIf(), Case..When, ...

haentschman 21. Feb 2010 11:06

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Guten Morgen...

[OT] genau aus diesem Grund mag ich keine NULL Werte :zwinker: [/OT]

Zwischenfrage: wie soll das optisch aussehen ? Quasi die Reihen mit NULL als Lücken ?

Idee: Jeder DS hat doch eine ID (oder einen Wert an dem du die DS unterscheiden Kannst) welche eindeutig ist oder ? Lad die ID mit, damit du auch einen DS für die NULL in der Ergebnismenge bekommst und zeig die ID nicht an.

:hi:

RWarnecke 21. Feb 2010 11:21

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Die Null-Werte werden ja nur dann angezeigt, wenn die Select-Abfrage kein Ergebnis bringt. Die Select-Abfrage summiert verschiedene Werte zusammen, die dann wiederum in einem Endergebnis im Report angegeben werden. Das ganze mache ich 6 mal. So kommt jetzt bei einer der 6 Abfragen kein Ergebnis raus, so soll die leere Zeile im Report mit 0,00 angezeigt werden.
Hier ein konkretes Beispiel :
SQL-Code:
select T.KTO, T.KTOTEXT, sum(T."1") as Q1_1, sum(T."2") as Q1_2, sum(T."3") as Q1_3,
       sum(T."4") as Q1_4, sum(T."5") as Q1_5, sum(T."6") as Q1_6, sum(T."7") as Q1_7, sum(T."8") as Q1_8, sum(T."9") as Q1_9,
       sum(T."10") as Q1_10, sum(T."11") as Q1_11, sum(T."12") as Q1_12
from TEMP as T
where KTOARTNR = :KTOARTNR
group by T.KTO, T.KTOTEXT;
Wie bekomme ich ein Ergebnis mit 0,00 bei den Spalten mit SUM, wenn die WHERE-Clausel nicht zutrifft ?

haentschman 21. Feb 2010 11:34

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
verstehe ich das richtig:

du machst 6 Abfragen, jede Abfrage liefert 1 DS, im Report willst du 6 Zeilen obwohl 1 Abfrage "leer" ist. Diese Zeile soll dann jeweils 0,00 in jedem Feld enthalten. Du übergibst dem Report 6 Datenmengen a 1 DS ?

RWarnecke 21. Feb 2010 11:40

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Zitat:

Zitat von haentschman
verstehe ich das richtig:

du machst 6 Abfragen, jede Abfrage liefert 1 DS, im Report willst du 6 Zeilen obwohl 1 Abfrage "leer" ist. Diese Zeile soll dann jeweils 0,00 in jedem Feld enthalten. Du übergibst dem Report 6 Datenmengen a 1 DS ?

Ja, es können aber auch mal 2 Abfragen leer sein.

haentschman 21. Feb 2010 11:46

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Liefert die "leere" Abfrage einen Datensatz mit NULL in den Summen oder ist der leere Datensatz nicht vorhanden ?

ist der Datensatz da und leer...
Zitat:

FastReport reagiert leider recht empfindlich auf NULL-Werte. Deshalb sorge ich in der Abfrage durch IIF() Konstrukte für "richtige" Werte
ist das der Weg. In jedem Feld... Ausdruckseditor - Daten - Andere IIF(,,)

:hi:

RWarnecke 21. Feb 2010 11:59

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Report gibt es keine IIF-Abfragen. Dort werden die Werte 1:1 übergeben, so wie Sie im Datensatz stehen. Im Anhang ist ein Bild, was mir IBExpert und auch mein Programm zurückgibt, wennn die WHERE-Clausel kein Ergebnis findet. Aber statt <null> in den Spalten Q1_1 bis Q1_12 soll jetzt dort 0,00 stehen und somit als gültiger Datensatz an den Report übergeben werden.

Edit: Anhang nachgeschoben.

Sir Rufo 21. Feb 2010 12:00

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
wieso denn kein COALESCE ???

http://www.firebirdsql.org/manual/nu...nversions.html

btw: ich weiß nicht wie der firebird reagiert, aber bei mysql und mssql liefert sum ein NULL zurück, wenn mind. eine zeile dabei ist, wo ein NULL-Wert vorkommt.

Wenn soetwas passiert, dann würde ich immer mit COALESCE arbeiten
SQL-Code:
SELECT SUM( COALESCE( FooField, 0 ) ) FROM FooTab

RWarnecke 21. Feb 2010 12:07

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Zitat:

Zitat von Sir Rufo
wieso denn kein COALESCE ???

Wenn soetwas passiert, dann würde ich immer mit COALESCE arbeiten
SQL-Code:
SELECT SUM( COALESCE( FooField, 0 ) ) FROM FooTab

Ich habe Dein Beispiel 1:1 umgesetzt. Nur leider wird mir in der Spalte immer noch null angezeigt.

haentschman 21. Feb 2010 12:14

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Zitat:

Im Report gibt es keine IIF-Abfragen.
...doch.

Memo -> Bearbeiten - > Ausdruck einfügen -> im Ausdruckseditor Reiter Daten -> runterblättern bis Andere -> Ausdruck IIF wählen und ausfüllen. Dann wird der Inhalt des Memos abhängig einer Bedingung angezeigt. IIF(Bedingung,Wahr Wert,Falsch Wert)

RWarnecke 21. Feb 2010 12:18

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Zitat:

Zitat von haentschman
Zitat:

Im Report gibt es keine IIF-Abfragen.
...doch.

Memo -> Bearbeiten - > Ausdruck einfügen -> im Ausdruckseditor Reiter Daten -> runterblättern bis Andere -> Ausdruck IIF wählen und ausfüllen. Dann wird der Inhalt des Memos abhängig einer Bedingung angezeigt. IIF(Bedingung,Wahr Wert,Falsch Wert)

Das weis ich. Ich meinte damit, dass ich in den Memos keine IIF-Abfrage drinhabe.

haentschman 21. Feb 2010 12:23

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
wenn ich den IBExpert Screenshot richtig interpretiere hast du gar keinen Datensatz. Die Datenmenge ist leer. IBExpert zeigt immer 1 Zeile an.
Hättest du einen Datensatz würde zumindest in KTO was drinstehen. Trifft diese Bedingung (aus deiner SQL) nicht zu hast du keinen Datensatz. Wie willst du was auswerten, was nicht da ist ? :gruebel:
Da mußt du mit der Datenmenge tricksen. Wenn nach der Abfrage die Datenmenge IsEmpty ist, fügst du einfach einen ein der in den Feldern 0,00 stehen hat.

Sir Rufo 21. Feb 2010 12:25

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
jo, bei gar nix hilft auch coalesce nicht weiter :mrgreen:

RWarnecke 21. Feb 2010 12:50

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Ok, das habe ich verstanden.

Ich habe den Report aus einem bestehenden Programm übernommen. Der einzigen drei Unterschiede sind, der FastReport ist neuer und die Query's werden im Sourcecode zugeordnet und nicht fest wie vorher und das ganze läuft jetzt über Firebird und nicht über BDE.

Sir Rufo 21. Feb 2010 12:57

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Zitat:

Zitat von RWarnecke
Ok, das habe ich verstanden.

Ich habe den Report aus einem bestehenden Programm übernommen. Der einzigen drei Unterschiede sind, der FastReport ist neuer und die Query's werden im Sourcecode zugeordnet und nicht fest wie vorher und das ganze läuft jetzt über Firebird und nicht über BDE.

Was kam denn vorher bei T.KTO und T.KTOTEXT an Werten? Auch nix, oder war da etwas?
Weil dann würde ich sagen, fehlt da was im Aufbau der TEMP-Tabelle :mrgreen:

haentschman 21. Feb 2010 12:57

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Dann trickse doch im Sourcecode, damit dein Report Datensätze bekommt. Den Report brauchst du dann nicht verändern.

RWarnecke 21. Feb 2010 13:35

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
So, ich habe das Problem gelöst. Danke für Eure Hilfe. Ich habe erst jetzt festgestellt, dass ich einem Band einen falschen Dataset zugeordnet hatte. Hinzu kam noch, das ich ein Dataset vergessen hatte beim übernehmen. :wall:

Jetzt funktioniert alles so wie ich will und ich bin Happy :firejump:

Sir Rufo 21. Feb 2010 13:39

Re: Im FastReport eine Datensatz mit <null>-Werten aus
 
Na, besser ein eigener Fehler, als wenn das Grundsystem ne Macke hat :mrgreen:


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