GARANTIR DESCONTO

Fórum Problemas com DBCheckBox #258176

12/11/2004

0

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.


Elias Jr

Elias Jr

Responder

Posts

12/11/2004

Gandalf.nho

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.


Responder

Gostei + 0

12/11/2004

Elias Jr

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.


Responder

Gostei + 0

12/11/2004

Gandalf.nho

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.


Responder

Gostei + 0

12/11/2004

Elias Jr

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.


Responder

Gostei + 0

12/11/2004

Gandalf.nho

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


Responder

Gostei + 0

12/11/2004

Elias Jr

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


Responder

Gostei + 0

12/11/2004

Gandalf.nho

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?


Responder

Gostei + 0

12/11/2004

Elias Jr

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).


Responder

Gostei + 0

12/11/2004

Gandalf.nho

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...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar