![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Zeos
Boolean -> String und zurück
Guten Morgen an alle... :-D
das Problemchen läuft wieder einmal unter :wiejetzt: ...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 :-D ...testweise 'True' in die Datenbank eingetragen und mit z.B.
Delphi-Quellcode:
eingelesen ---> Checkbox wird gesetzt. :thumb:
CheckBoxSteuerung.Checked:= ZQueryAnlagenDetail.FieldByName('STEUERUNG').asBoolean;
ok... dann eintragen mit
Delphi-Quellcode:
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 ? |
Re: Boolean -> String und zurück
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:
|
Re: Boolean -> String und zurück
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
Delphi-Quellcode:
die CheckBox gesetzt ? oder trotzdem if then ...
CheckBoxGerate.Checked:= ZQueryAnlagenDetail.FieldByName('GERATE').asBoolean;
[edit] Zitat:
[/edit] |
Re: Boolean -> String und zurück
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:
Edit: Testprogramm mit Integer erweitert
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. |
Re: Boolean -> String und zurück
Vielen Dank...probiere es mal durch... :-D
Frohe und ruhige Weihnachten.... :hi: |
Re: Boolean -> String und zurück
Integer sind unter anderem besser zu vergleichen as Strings :)
|
Re: Boolean -> String und zurück
...Update für alle mit gleichem Denkfehler... :-D
...so funktionierts: 1. Tabellenfeld als Integer definieren 2. CheckBox speichern... SQL Parameter
Delphi-Quellcode:
3. CheckBox einlesen...
Query.ParamByName('XXXX').Value:= CheckBox.Checked;
Delphi-Quellcode:
4. Bei Verwendung von DBCheckBox ValueChecked = 1 , ValueUnchecked = 0
CheckBox.Checked:= Query.FieldByName('XXXX').Value;
...vieleicht hilfts jemanden. Frohe Weihnachten.... :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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