Fórum Problema com campo Boolean ClientDataSet Delphi #612776
10/09/2020
0
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
+ 0Post mais votado
10/09/2020
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
Gostei + 1
Mais Posts
10/09/2020
Emerson Nascimento
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.
Gostei + 0
10/09/2020
Celso Lenon
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)