FireBird e o atributo Boolean
Olá a todos..
Estou tentando criar um atributo Boolean no FB e não estou conseguindo..
eu fiz mais ou menos assim:
VARCHAR (5) CHARACTER SET ISO8859_1
DEFAULT ´FALSE´
CHECK (VALUE IN(´TRUE´,´FALSE´))
COLLATE PT_PT
Isso é um domínio.. ok?
O problema é o seguinte.. não consigo salvar nada dentro destre registro com um componentes checkbox.. e é isso que preciso fazer.. ou será que tenho que fazer uma gambiarra para fazer isso funcionar?
Por exemplo: if BANCO.TabelaCAMPO_ATIVO.Value = True then
checkbox.checked;
Como faço para não fazer gambiarras?
[color=green:2e90971f68]Movido de Delphi para Interbase/Firebird[/color:2e90971f68]
Estou tentando criar um atributo Boolean no FB e não estou conseguindo..
eu fiz mais ou menos assim:
VARCHAR (5) CHARACTER SET ISO8859_1
DEFAULT ´FALSE´
CHECK (VALUE IN(´TRUE´,´FALSE´))
COLLATE PT_PT
Isso é um domínio.. ok?
O problema é o seguinte.. não consigo salvar nada dentro destre registro com um componentes checkbox.. e é isso que preciso fazer.. ou será que tenho que fazer uma gambiarra para fazer isso funcionar?
Por exemplo: if BANCO.TabelaCAMPO_ATIVO.Value = True then
checkbox.checked;
Como faço para não fazer gambiarras?
[color=green:2e90971f68]Movido de Delphi para Interbase/Firebird[/color:2e90971f68]
Netcrusher
Curtidas 0
Respostas
Marcos.rio
06/08/2005
Caro amigo, basta você utilizar o componente DBCheckBox.
GOSTEI 0
Netcrusher
06/08/2005
Já testei tmb e mesmo assim não funcionou.
Lembrando que o FireBird não possui o atributo Boolean..
Lembrando que o FireBird não possui o atributo Boolean..
GOSTEI 0
Sistemald
06/08/2005
Devo lembrar que este collate que você está usando é case sensitive
provavelmente seu dbcheckbox esta configurado para usar True e False ao invés de TRUE E FALSE, aconcelho a trocar no dominio para True e False, mas você também pode trocar na propriedade ValueChecked e valueUnchecked do DbCheckbox
provavelmente seu dbcheckbox esta configurado para usar True e False ao invés de TRUE E FALSE, aconcelho a trocar no dominio para True e False, mas você também pode trocar na propriedade ValueChecked e valueUnchecked do DbCheckbox
GOSTEI 0
Netcrusher
06/08/2005
Realmente o que vc disse é verdade. Porém ainda não está funcionando.. por exemplo.. inseri um registro no banco que informa se o cliente está ativo, ou não. Por exemplo:
Cliente.CLI_ATIVO = True;
Quando abro o formulário, o CheckBox aparece Checado, e quando altero no banco para CLI_ATIVO = False, então o Check(lembrando que é um DBCheckBox) aparece realmente inativo..
Porém, se eu for alterar esta propriedade no meu projeto, ele simplesmente não salva no Banco. Se eu clico no checkbox, ele ativa, porém não salva no banco.
Será que ainda tenho que configurar algo no componente?
Cliente.CLI_ATIVO = True;
Quando abro o formulário, o CheckBox aparece Checado, e quando altero no banco para CLI_ATIVO = False, então o Check(lembrando que é um DBCheckBox) aparece realmente inativo..
Porém, se eu for alterar esta propriedade no meu projeto, ele simplesmente não salva no Banco. Se eu clico no checkbox, ele ativa, porém não salva no banco.
Será que ainda tenho que configurar algo no componente?
GOSTEI 0
Sistemald
06/08/2005
Você está dando um commit após alterar a tabela, pois pelo que você me falou parece ser isto.
Qual meio de acesso você está usando?
Qual meio de acesso você está usando?
GOSTEI 0
Netcrusher
06/08/2005
Após de dar um POST na tabela..estou dando um commit.
Mas qual é o problema em relação a isso?
Mas qual é o problema em relação a isso?
GOSTEI 0
Gandalf.nho
06/08/2005
Primeiro, uma sugestão: em vez de usar VARCHAR(5) use CHAR(1) ou SMALLINT. Para fazer o DBCheckbox funcionar em campos não booleanos vc deve setar as propriedades ValueChecked e ValueUnchecked do componente conforme os valores que vc irá usar. No meu caso eu uso SMALLINT, portanto seto ValueChecked = 1 e ValueUnchecked = 0.
GOSTEI 0
Bruno Belchior
06/08/2005
faço exatamente como a colega citou acima só que crio um domínio que restringe apenas a 0 e 1, mas na íntegra da na mesma...
GOSTEI 0