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
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:
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
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
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
Curtir tópico
+ 0
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
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
Responder
Mais Posts
10/09/2020
Emerson Nascimento
o erro ocorre ao abrir ou ocorre por conta do trecho
deixe o campo na instrução e retire o trecho acima. veja se funciona.
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
deixe o campo na instrução e retire o trecho acima. veja se funciona.
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
Clique aqui para fazer login e interagir na Comunidade :)