AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Boolean -> String und zurück
Thema durchsuchen
Ansicht
Themen-Optionen

Boolean -> String und zurück

Ein Thema von haentschman · begonnen am 23. Dez 2007 · letzter Beitrag vom 23. Dez 2007
Antwort Antwort
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#1

Boolean -> String und zurück

  Alt 23. Dez 2007, 11:18
Datenbank: Firebird • Version: 2.0 • Zugriff über: Zeos
Guten Morgen an alle...

das Problemchen läuft wieder einmal unter


...wie Euch bekannt ist hat ja Firebird keine Boolean Felder.
... darum habe ich mich entschieden dafür varchar zu benutzen und 'True' / 'False' einzutragen... gefällt mir besser als 0 / 1

...testweise 'True' in die Datenbank eingetragen und mit z.B.CheckBoxSteuerung.Checked:= ZQueryAnlagenDetail.FieldByName('STEUERUNG').asBoolean; eingelesen ---> Checkbox wird gesetzt.

ok... dann eintragen mit ZQueryAnlagenDetail.ParamByName('Steuerung').asBoolean:= CheckBoxElektro.Checked;
... in der Datenbank kommt aber 0 bzw 1 an und einlesen mit 0 oder 1 mag er nicht CheckBox ist in jedem Fall nicht gesetzt.

muß ich wirklich mit if ...Checked then 'True' eintragen ?
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#2

Re: Boolean -> String und zurück

  Alt 23. Dez 2007, 11:39
die interne representation von boolschen werten ist eigentlich immer das selbe (pascal/C/C++) 0 = false; <> 0 = true. daher solltest du am besten auch die boolschen werte so in die datenbank ablegen. als integer mit 0 = false und true = 1 oder 0xff. die zuweisung kannst dann konsistent über false machen if ... oder if not ... damit sollte das problemlos gehen.

überdenke doch bitte aktuell dein DB design... es wird dir mittelfristig mehr probleme bereiten, als lösen...

noch schöne weihnachten.

nachtrag:
  • dein ansatz über string constanten ist nicht sonderlich performant...
  • kannst du ggf. die klasse variants noch entsprechend erweitern
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#3

Re: Boolean -> String und zurück

  Alt 23. Dez 2007, 11:44
ok...

das ändern in Integer und 0/1 ist problemlos möglich...

bevor ich jetzt den Gang nach Canossa antrete lieber noch mal nachgefragt...

wenn dann in einem Integer Feld eine 1 steht würde dann mit
CheckBoxGerate.Checked:= ZQueryAnlagenDetail.FieldByName('GERATE').asBoolean; die CheckBox gesetzt ? oder trotzdem if then ...

[edit]
Zitat:
die zuweisung kannst dann konsistent über false machen
..ist ja eigentlich die Antwort
[/edit]
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#4

Re: Boolean -> String und zurück

  Alt 23. Dez 2007, 11:54
mach dir doch 'n kleines testprogramm und seh es dir mal an (z.b. im debugger). dann weisst du es gewiss. ich hab im übrigen kein zeos... sollt aber kein problem darstellen. hier mal 'n kleines testprogy

Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}

uses
  SysUtils, variants;

var
 b: boolean;
 v: variant;
 i: integer;
begin
 b := true;
 v := b; i := v; writeln(v, ', ', b, ', ', i);
 b := v; i := v; writeln(v, ', ', b, ', ', i);
 v := 1; v := i; writeln(v, ', ', b, ', ', i);
 b := v; i := v; writeln(v, ', ', b, ', ', i);
 v := 0; i := v; writeln(v, ', ', b, ', ', i);
 b := v; i := v; writeln(v, ', ', b, ', ', i);
 readln;
end.
Edit: Testprogramm mit Integer erweitert
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#5

Re: Boolean -> String und zurück

  Alt 23. Dez 2007, 12:00
Vielen Dank...probiere es mal durch...

Frohe und ruhige Weihnachten....
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Boolean -> String und zurück

  Alt 23. Dez 2007, 13:09
Integer sind unter anderem besser zu vergleichen as Strings
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#7

Re: Boolean -> String und zurück

  Alt 23. Dez 2007, 14:38
...Update für alle mit gleichem Denkfehler...


...so funktionierts:

1. Tabellenfeld als Integer definieren
2. CheckBox speichern... SQL ParameterQuery.ParamByName('XXXX').Value:= CheckBox.Checked; 3. CheckBox einlesen...CheckBox.Checked:= Query.FieldByName('XXXX').Value; 4. Bei Verwendung von DBCheckBox ValueChecked = 1 , ValueUnchecked = 0

...vieleicht hilfts jemanden.

Frohe Weihnachten....
  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 07:25 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