Problemas com DBCheckBox
Saudações gente,
é a primeira vez que trabalho com DBCheckBox em minhas aplicações e estou encontrando dificuldades para navegar pelo form. Após selecionar e cadastrar as opções que quero com os dbcheck´s, eu tento navegar pelo form com o DBNavigator e o que acontece é que as opções dos check´s não se alteram como acontecem com os dbedit´s. Como faço para que ao navegar os check´s fiquem marcados se forem true e desmarcados caso forem false no banco? Preciso implementar algum código pelo DBNavigator? Agradeço desde já toda ajuda.
é a primeira vez que trabalho com DBCheckBox em minhas aplicações e estou encontrando dificuldades para navegar pelo form. Após selecionar e cadastrar as opções que quero com os dbcheck´s, eu tento navegar pelo form com o DBNavigator e o que acontece é que as opções dos check´s não se alteram como acontecem com os dbedit´s. Como faço para que ao navegar os check´s fiquem marcados se forem true e desmarcados caso forem false no banco? Preciso implementar algum código pelo DBNavigator? Agradeço desde já toda ajuda.
Elias Jr
Curtidas 0
Respostas
Gandalf.nho
12/11/2004
Não é necessário fazer nada, basta vincular o controle ao campo. Só é necessário uma alteração quando o campo de origem não for Booleano.
GOSTEI 0
Elias Jr
12/11/2004
Olá amiga,
eu já vinculei e inclusive já cadastro. O problema é que ao navegar os Dbcheck´s ficam acinzentados (como se estivessem desabilitados) e só mudam caso a gente clique em cima deles. Eu queria que mesmo desabilitados eles ficassem marcados e desmarcados dependendo do que está no banco.
eu já vinculei e inclusive já cadastro. O problema é que ao navegar os Dbcheck´s ficam acinzentados (como se estivessem desabilitados) e só mudam caso a gente clique em cima deles. Eu queria que mesmo desabilitados eles ficassem marcados e desmarcados dependendo do que está no banco.
GOSTEI 0
Gandalf.nho
12/11/2004
Geralmente só ficam acinzentados se estiverem recebendo um valor nulo. No caso de registros novos, use o evento OnNewRecord para atribuir um valor padrão ao campo e evitar que fique assim.
GOSTEI 0
Elias Jr
12/11/2004
Geralmente só ficam acinzentados se estiverem recebendo um valor nulo. No caso de registros novos, use o evento OnNewRecord para atribuir um valor padrão ao campo e evitar que fique assim.
Olá Gandalf,
desculpe a ignorância mas, como já disse, é a primeira vez que uso este componente e não encontrei o evento OnNewRecord. Estou utilizando-o assim: quando marco e salvo o registro no banco fica a palavra ´tru´ e quando desmarco fica ´fal´. Eu só quero que à medida que mude fique branco se for ´fal´ e marcado se for ´tru´. Agradeço pela ajuda.
GOSTEI 0
Gandalf.nho
12/11/2004
Agora entendi, seu campo na tabela não é Booleano e sim string. Nesse caso, use as propriedades ValueChecked e ValueUnchecked, setando-os conforme os valores que você grava, ou seja:
ValueChecked = ´tru´
ValueUnchecked = ´fal´
E o evento OnNewRecord é do DataSet, e não do DBCheckBox
ValueChecked = ´tru´
ValueUnchecked = ´fal´
E o evento OnNewRecord é do DataSet, e não do DBCheckBox
GOSTEI 0
Elias Jr
12/11/2004
Agora entendi, seu campo na tabela não é Booleano e sim string. Nesse caso, use as propriedades ValueChecked e ValueUnchecked, setando-os conforme os valores que você grava, ou seja:
ValueChecked = ´tru´
ValueUnchecked = ´fal´
E o evento OnNewRecord é do DataSet, e não do DBCheckBox
Desculpe amiga, mas ainda não é isso. Mesmo com estas opções (que eu já tinha marcado também) eles continuam da mesmo forma. Quando navego pelos registros todos os dbcheck´s ficam marcados e acinzentados como se estivessem desabilitados. Isso acontece com todos. Já tentei mas ainda não consegui fazer eles ficarem marcados apenas os que forem true. Já estou me descabelando... :-P
GOSTEI 0
Gandalf.nho
12/11/2004
Alguma coisa você deve estar fazendo errado, pq só com isso deveria funcionar... Qual o seu banco de dados, o componente de acesso aos dados e o tipo de dados do campo vinculado ao DBCheckBox?
GOSTEI 0
Elias Jr
12/11/2004
Utilizo o Delphi 5.0 Pro, o banco de dados é o MySql 5.0, a paleta de acesso aos dados é a MySqlDAC, o componente de ligação é o DataSource setado a uma MyDACTable e o tipo de dados do DBCheckBox no banco é string (varchar). Eu não sei se o DBCheck atua como o DBEdit com relação à navegação pois nunca o utilizei mas não tem lógica todos os outros compoentes trabalharem direitinho e só ele fica assim. Já verifiquei se era o meu código mas está normal (rotinas normais de inclusão de dados).
GOSTEI 0
Gandalf.nho
12/11/2004
Realmente, não tem motivo para isso estar acontecendo. Só se for um bug do componente de acesso. Tente outra coisa, já vi DBCheckBox não gostar de campo string, substitua seu campo varchar por SMALLINT (se existir no MySQL) ou INTEGER e use os valores 1 (True) e 0 (False). Não esqueça de setar as propriedades ValueChecked e ValueUnchecked de acordo. Eu uso campos SMALLINT, já que não existe ainda tipo BOOLEAN no FB...
GOSTEI 0