Problema com campo Boolean ClientDataSet Delphi

10/09/2020

0

bom dia

estou com o seguinte problema

estou desenvolvendo um software Delphi 10.2 + Firebird 3.0

tenho a tabela Usuários com os seguintes campos

CREATE TABLE USUARIOS (
    ID       ID NOT NULL /* ID = INTEGER NOT NULL */,
    NOME     NOME /* NOME = VARCHAR(50) */,
    USUARIO  USUARIO /* USUARIO = VARCHAR(25) NOT NULL */,
    SENHA    SENHA /* SENHA = VARCHAR(25) NOT NULL */,
    ATIVO    ESCOLHA /* ESCOLHA = BOOLEAN */
);

ALTER TABLE USUARIOS ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID);



no delphi tenho um clientdataset conectado ao datasetprovider e esse conectado ao SQLDataSet

quando vou incluir ou editar um registro nessa tabela "usuarios" usando o clientdataset se eu colocar no command text a sql:

select u.id, u.nome, u.usuario, u.senha, u.ativo from usuarios u


e tentar abrir o mesmo ele da erro "Unknown ISC error 0"

se eu retirar o campo ativo do SQL acima ele abre o cds normalmente porem não posso registrar nenhum valor nesse campo

segue abaixo o código no delphi

    DM.cdsUsuarios.Close;
    DM.cdsUsuarios.CommandText := '';
DM.cdsUsuarios.CommandText := 'select u.id, u.nome, u.usuario, u.senha, u.ativo from usuarios u';
        DM.cdsUsuarios.Open;
        DM.cdsUsuarios.Append;
        DM.cdsUsuarios.Fields.FieldByName('ID').AsInteger := StrToInt(edtID.Text);
        DM.cdsUsuarios.Fields.FieldByName('Nome').Text := edtNome.Text;
        DM.cdsUsuarios.Fields.FieldByName('Usuario').Text := edtNome.Text;
        DM.cdsUsuarios.Fields.FieldByName('Senha').Text := Criptografar(edtSenha.Text);
        if rgAtivo.ItemIndex = 0 then
          DM.cdsUsuarios.Fields.FieldByName('Ativo').Text := 'Sim'
        else
          DM.cdsUsuarios.Fields.FieldByName('Ativo').Text := 'Não';
        DM.cdsUsuarios.Post;
    DM.cdsUsuarios.ApplyUpdates(0);
    DM.cdsUsuarios.Close;
    DM.cdsUsuarios.CommandText := '';


o mais estranho que tenho um select sql parecido porem somente com where para filtrar no login em outro formulário e não ocorre esse mesmo erro

se alguém puder me ajudar desde já agradeço
Fabio Zanela

Fabio Zanela

Responder

Post mais votado

10/09/2020

boa tarde

então troquei o campo boolean por char, colocando ele no sql tbm e deu certo nao consegui descobrir qual era o problemas mas resolveu

muito obrigado por enquanto

Fabio Zanela

Fabio Zanela
Responder

Mais Posts

10/09/2020

Emerson Nascimento

o erro ocorre ao abrir ou ocorre por conta do trecho
if rgAtivo.ItemIndex = 0 then
     DM.cdsUsuarios.Fields.FieldByName('Ativo').Text := 'Sim'
else
     DM.cdsUsuarios.Fields.FieldByName('Ativo').Text := 'Não';

deixe o campo na instrução e retire o trecho acima. veja se funciona.
Responder

10/09/2020

Celso Lenon

o erro ocorre ao abrir ou ocorre por conta do trecho
if rgAtivo.ItemIndex = 0 then
     DM.cdsUsuarios.Fields.FieldByName('Ativo').Text := 'Sim'
else
     DM.cdsUsuarios.Fields.FieldByName('Ativo').Text := 'Não';

deixe o campo na instrução e retire o trecho acima. veja se funciona.


Eu uso firebird 3.0 com boolean, porem com firedac, não tenho este tipo de problema
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar