AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

In Fastreport Null-Werte ausgeben

Ein Thema von HPB · begonnen am 25. Mai 2016 · letzter Beitrag vom 25. Mai 2016
Antwort Antwort
Seite 1 von 2  1 2      
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#1

In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 08:19
Guten Tag Delphianer,
ich möchte in Fastreport den Wert einer DB-Spalte auf NULL prüfen.

Folgender Quellcode funktioniert:
Das Feld "AUFGENOMMENAM" ist ein Date-Feld.

Delphi-Quellcode:
  if FormatDateTime('yyyy', <frxDBBrdDaten."AUFGENOMMENAM">) <> '1899then
  begin
  Memo31.Text := 'Aufgenommen am: ' + FormatDateTime('dd.mm.yyyy' <frxDBBrdDaten."AUFGENOMMENAM">);
  end
  else
   Memo31.Text := 'Aufgenommen: - unbekannt';
Wie kann ich nun aber abfragen ob der Wert NULL ist?

if <frxDBBrdDaten."AUFGENOMMENAM">) IS NULL liefert einen Fehler.

Mit Gruß HPB
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 09:00
Versuch es dochmal mit
Delphi-Quellcode:
if frxDBBrdDaten.FieldByName('AUFGENOMMEN').AsString = 'then
Begin
 // Mach was
End;
Alternativ kannst du auch einfach im SQL was machen...
wie wäre es mit
Code:
Select *, Case when AUFGENOMMEN is null then 1 else 0 as istLeer from Tabelle
und dann Prüfst du auf den Wert von Spalte istLeer ob diese 1 oder 0 ist.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.

Geändert von Devil1925 (25. Mai 2016 um 09:04 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#3

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 09:37
Versuch es dochmal mit
Delphi-Quellcode:
if frxDBBrdDaten.FieldByName('AUFGENOMMEN').AsString = 'then
Begin
 // Mach was
End;
Alternativ kannst du auch einfach im SQL was machen...
wie wäre es mit
Code:
Select *, Case when AUFGENOMMEN is null then 1 else 0 as istLeer from Tabelle
und dann Prüfst du auf den Wert von Spalte istLeer ob diese 1 oder 0 ist.
Vielen Dank für Deine Antwort.

Select und Case gehen nicht, da dies Feld Teil einer größeren Abfrage, die über
mehre Tabellen geht, ist.
Aber es muß doch möglich sein, in Fastreport das Feld auf den Wert NULL zu prüfen.
Wenn im Datumfeld kein Wert steht, dann gibt Fastreport immr '30.12.1899' zurück.
Vielleicht weis ja noch jemand eine Lösung.
Mit freundlichem Gruß HPB
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#4

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 09:47
Oder eine User-Function basteln, die das Ganze übernimmt.

Delphi-Quellcode:
type
  THackfrxCustomDBDataSet = class(TfrxDataSet)
  private
    FFields: TStringList;
  end;

function TFormValidierung.IsDBFieldNull(index: Integer): Boolean;
begin
  Result := TField(THackfrxCustomDBDataSet(frxDBDatasetAuftrag).FFields.Objects[index]).IsNull;
end;

...

  frxReport.AddFunction('function IsDBFieldNull(index: Integer): Boolean', 'User Function','');

...

function TForm.frxReportUserFunction(const MethodName: String; var Params: Variant): Variant;
begin
  inherited;
  Result := -1;
  if (MethodName = 'ISDBFIELDNULL') then
  begin
    Result := IsDBFieldNull(Integer(Params[0]));
  end;
end;

...
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 10:08
Aber es muß doch möglich sein, in Fastreport das Feld auf den Wert NULL zu prüfen.
Wenn im Datumfeld kein Wert steht, dann gibt Fastreport immr '30.12.1899' zurück.
Vielleicht weis ja noch jemand eine Lösung.
Mit freundlichem Gruß HPB
Jap.

Code:
if <Table1."Field1"> = Null
heißt die Abfrage in FR.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#6

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 10:50
Jap.

Code:
if <Table1."Field1"> = Null
heißt die Abfrage in FR.[/QUOTE]

Guten Tag MrSpock,
die Abfrage wirft keinen Fehler.
Trotzdem erkennt FR nicht, das in der DP-Spalte kein Wert steht.
Ich habe nachgeschaut, der Wert der Spalte ist mit NULL gekennzeichnet.
Kann es sein das FR hier einen Fehle hat?
Mit Gruß HPB
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#7

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 11:13
Aber es muß doch möglich sein, in Fastreport das Feld auf den Wert NULL zu prüfen.
Wenn im Datumfeld kein Wert steht, dann gibt Fastreport immr '30.12.1899' zurück.
Vielleicht weis ja noch jemand eine Lösung.
Mit freundlichem Gruß HPB
Jap.

Code:
if <Table1."Field1"> = Null
heißt die Abfrage in FR.
Null mit nil erstezen, dann funzt es.
  Mit Zitat antworten Zitat
HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#8

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 11:22
Vielen Dank an alle für die rasche Hilfe.
Mit "NIL" klappt es wirklich.
Ein erfolgreicher Tag. Wieder etwas dazu gelernt.
Mit gruß HPB
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#9

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 12:11
Wenn es mit Nil klappt, ist alles gut. Ich kann es von hier gerade nicht testen.

Laut Manual zur FR Version 4.6 im Kapitel 6.6 müsste es NULL und nicht NIL sein. Dann ist entweder die Dokumentation falsch oder nicht zutreffend für die aktuelle Version. Ich nutze das in meinen Reports auch, habe aber wie gesagt im Moment keinen Zugriff darauf.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: In Fastreport Null-Werte ausgeben

  Alt 25. Mai 2016, 12:59
Wir hatten vor Kurzem das selbe Problem und bei uns ging =NULL auch nicht und sowas wie VarIsNull gab es wohl nicht.

FastReport 4.10
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:16 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