AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

Ein Thema von Chaoten-Joe · begonnen am 19. Sep 2010 · letzter Beitrag vom 27. Sep 2010
Antwort Antwort
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#1

Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 19. Sep 2010, 19:12
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
Hallo zusammen,

hat jemand einen Tipp, wie ich in einem Quickreport in einer TQRDBText-Komponente boolesche Werte aus einer TQuery-Auswertung mit JA oder NEIN anzeigen kann (und nicht mit WAHR oder FALSCH)?
In meinem Programm kann der Benutzer beliebige SQL-Auswertungen vornehmen, die verschiedene Tabellen betreffen. Im DBGrid lasse ich die Suchergebnisse durch OnDrawColumnsCell entsprechend formatieren ... aber im Quickreport will es nicht gelingen.
Leider kann ich die Eigenschaft DisplayValues ja nicht ansprechen, oder? Ich bekomme es einfach nicht hin ...

Vielen Dank schonmal im voraus!

Christian
Christian Becker
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 19. Sep 2010, 19:18
Notfalls in der Abfrage: select ... case when <Wert> = True then 'jaelse 'Neinend ...
Markus Kinzler
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 19. Sep 2010, 19:23
Gibt es auch ne andere Möglichkeit?
Ich möchte, dass es nicht der Benutzer eingeben muss ... Es soll halt so einfach wie möglich sein.
Christian Becker
  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
 
#4

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 19. Sep 2010, 19:39
Ja, verwende ein Datenbanksystem und erstelle dort eine entsprechende StoredProcedure.

Code:
SELECT ..., JaNein( Wert ), ...
Eine andere Möglichkeit wäre, das Resultset auf Boolean-Werte zu prüfen und dann diese Spalten ausblenden und dafür "berechnete" Spalten einzufügen.
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 sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 19. Sep 2010, 20:49
Die einfachste Möglichkeit läuft über das OnGetText-Event.
Wenn man es richtig macht, kann man ALLE Boolean-Felder so umstellen.
(einmal programmieren, so oft wie gebraucht verwenden)
Jedes Feld hat ein OnGetText-Event über das man den Text, den ein Feld liefert
beliebig verändern kann:
Delphi-Quellcode:
procedure TForm1.BooleanJaNeinGetText(Sender: TField; var Text: string; DisplayText: Boolean);
const JaNein : array[Boolean] of string = ('Nein', 'Ja');
begin
  Text := JaNein[Sender.AsBoolean];
end;
Jetzt muss man noch dafür sorgen, dass dieser Eventhandler von den Felder auch benützt wird:
Delphi-Quellcode:
procedure TForm1.SetupJaNeinEventHandler(fields:TFields);
ver
  i : Integer;
  f : TField;
begin
  for i:= 0 to fields.Count-1 do
  begin
    f := fields[i];
    if f.FieldType=ftBoolean then
      f.OnGetEvent := self.BooleanJaNeinGetText;
  end;
end;
Wenn man diese Mehode im Event AfterOpen aufruft
Delphi-Quellcode:
procedure TForm1.Query1AfterOpen(dataset.TDataset);
begin
  SetupJaNeinEventHandler(dataset.Fields);
end;
dann ist man fertig.
(Code ohne Hilfe einer Delphi IDE erstellt; kleine Syntaxfehler sind moglich)
  Mit Zitat antworten Zitat
Chaoten-Joe

Registriert seit: 11. Mär 2007
Ort: Werl
41 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 19. Sep 2010, 22:49
Perfekt! Eigentlich auch logisch! Dickes Dankeschön!

Nur der Vollständigkeit halber ... für alle, die das gleiche Problem hatten:
Eine kleine Korrektur beim Eventhandler:
Delphi-Quellcode:
procedure TForm1.SetupJaNeinEventHandler(fields:TFields);
var
  i : Integer;
  f : TField;
begin
  for i:= 0 to fields.Count-1 do
  begin
    f := fields[i];
    if f.DataType=ftBoolean then
      f.OnGetText := self.BooleanJaNeinGetText;
  end;
end;
Problem gelöst!
Christian Becker
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 20. Sep 2010, 09:48
etwas OT...

Oder aber den QRDBText bei Font auf Wingdings einstellen & anschließend das OnPrint Event des Feldes auf

Delphi-Quellcode:
procedure TFormDruckenIBC.QRDBTextXXPrint(sender: TObject;
  var Value: String);
begin
  if Datenmodul.DBQuery.FieldByName('Feld').AsBoolean = True
   then Value := #254
    else Value := #168;
end;
ändern. Jetzt erhält man das Häkchen (http://de.wikipedia.org/wiki/Häkchen_(Schriftzeichen))
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Quickreport: Boolean mit Ja/Nein statt Wahr/Falsch anzeigen

  Alt 27. Sep 2010, 01:59
Oder aber den QRDBText bei Font auf Wingdings einstellen & anschließend das OnPrint Event des Feldes auf
Das ist auch ein schöner Lösungsweg.
Wobei man versuchen sollte den Wert des Feldes über den Parameter Sender rauszuziehen:
Delphi-Quellcode:
procedure TFormDruckenIBC.QRDBTextXXPrint(sender: TObject; var Value: String);
var
  f : TField;
begin
  f := (Sender as TQRDBText).Dataset.FieldByName((Sender as TQRDBText).DataField);
  if (f.AsBoolean then
   then Value := #254
    else Value := #168;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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