Firebird a DBCheckBox

0

Witam wszystkich.

Jak wiadomo baza Firebird nie posiada pola typu BOOL. :-P
Na stronie Firebirda znalazłem takie rozwiązanie:

No BOOLEAN field in Firebird?

There is no built-in boolean field, but you have several options:

  1. use char(1)
  2. use smallint
  3. use domains

Domains are probably the best solution. You can create domain like this:

CREATE DOMAIN BOOLEAN
AS SMALLINT
CHECK (value is null or value in (0, 1));

Later in table definition you can refer to it as a regular datatype.

CREATE TABLE t1
(
C1 VARCHAR(10),
B1 BOOLEAN,
B2 BOOLEAN NOT NULL,
...
);

do tego momentu jes wszystko ok, ale jeżeli podepnę kontrolkę typu DBCheckBox do pola B1 (Boolean)
to w momencie zmiany DBCheckBoxa wywala komunikat : "True" is not a valid integer value.

Czy jest jakaś możliwość, aby to obejść ???

Oczywiście próbowałem wszystkie trzy punkty :)

0

Ojaaa.
No przecież robi się tak, że w bazie przechowujesz wartości 0 albo 1.
Potem, w normalnym checkboxie ja sobie zamieniam wartość na bool:

  checkBox.Checked:=IntToBool(DataSet.FieldByName('pole').AsInteger);

oczywiście intToBool musisz sam sobie napisać.
Nie używam DBCheckBox, tylko samego CheckBox.
Ale może DBCheckBox ma jakąś właściwość, która ustala boolean biorąc pod uwagę wartość int.

0

Witam!

nie kombinuj z IntToBool, w dbaware nie chodzi o to aby ręcznie rzeźbić w kodzie. Użyj właściwości TDBCheckBox pod nazwami ValueChecked i ValueUnChecked aby określić jakie wartości ma przesłać kontrolka dla zaznaczonego/odznaczonego checkboxa

Pozdrawiam

0

@Juhas

To to ja też wiedziałem, ale chodziło o to aby użyć kontrolek DB :)
THX za podpowiedź.

@wuem

Że ja na to sam nie wpadłem :-)
O to chodziło.

THX.

1 użytkowników online, w tym zalogowanych: 0, gości: 1