erro sql
bom dia galera estou com uma mensagem de erro que nao estou conseguindo solucionar, a mensagem e a seguinte: "dynamic sql error code=-104 as approximate floating point values in sql dialect 1 but as 64 bit" eu uso banco de dados firebird, e conexao com ibtable e consultas com ibsql, essa mensagem apareceu depois que fiz algumas consultas no formulario de vendas quando vou salvar a tabela aparece a mensagem se alguem puder me ajudar ficarei grato !
Willian Bento
Curtidas 0
Respostas
Eriley Barbosa
16/08/2010
Veja se a propriedade SQLDialect do seu IbDatabase tem o Valor 3 e se nos parâmetros tem o CharacterSet correto, tipo lc_ctype=ISO8859_1.
Atenciosamente
Eriley
GOSTEI 0
Willian Bento
16/08/2010
obrigado pela ajuda mas ja tentei isso tambem so que nao deu nada continua com o erro !!
GOSTEI 0
Eliézio Mesquita
16/08/2010
Boa tarde,
Willian, coloca ai sua instrução SQL, para verificarmos o que pode ser.
Abraço.
Eliézio Mesquita
Willian, coloca ai sua instrução SQL, para verificarmos o que pode ser.
Abraço.
Eliézio Mesquita
GOSTEI 0
Willian Bento
16/08/2010
procedure TfrmVendas.pesquisacliente; //procedimento para pesquisar clientes;
var a: string;
begin
a:= 'select * from clientes where cod_cli = ' + CodCli.Text;
with dmDados.Cons_cli do
begin
Close;
SQL.Clear;
SQL.Add(a);
Open;
end;
end;
pesquisacliente; //aqui e colocado no evento on exit do campo codigo cliente;
if dmDados.Cons_cli.RecordCount > 0 then
begin
dmDados.TsaipaiCODCLI_SAIPAI.Value := dmDados.Cons_cli.fieldbyname('cod_cli').AsInteger;
dmDados.TsaipaiNOMECLI_SAIPAI.Value := dmDados.Cons_cli.fieldbyname('nome_cli').AsString;
CodVend.SetFocus;
end
else
begin
ShowMessage('Cliente nao Cadastrado !!!!');
CodVend.SetFocus;
Exit;
end;
daqui para baixo uso para pesquisar produto !
procedure TfrmVendas.pesquisaproduto;
var a: string;
begin
a:= 'select * from estoque where cod_est = ' + CodProd.Text;
with dmDados.Cons_prod do
begin
Close;
SQL.Clear;
SQL.Add(a);
Open;
end;
END;
procedure TfrmVendas.CodProdExit(Sender: TObject);
begin
pesquisaproduto;
if dmDados.Cons_prod.RecordCount > 0 then
begin
dmDados.TdetSaipaiCOD_PROD_DET.Value := dmDados.Cons_prod.fieldbyname('cod_est').AsInteger;
dmDados.TdetSaipaiNOMEPROD_DET.Value := dmDados.Cons_prod.fieldbyname('descricao_est').AsString;
dmDados.TdetSaipaiVALORPROD_DET.Value := dmDados.Cons_prod.fieldbyname('precovenda_est').AsFloat;
QuantProd.SetFocus;
end
else
begin
ShowMessage('Produto nao Cadastrado !!!!');
CodProd.SetFocus;
Exit;
end;
end;
var a: string;
begin
a:= 'select * from clientes where cod_cli = ' + CodCli.Text;
with dmDados.Cons_cli do
begin
Close;
SQL.Clear;
SQL.Add(a);
Open;
end;
end;
pesquisacliente; //aqui e colocado no evento on exit do campo codigo cliente;
if dmDados.Cons_cli.RecordCount > 0 then
begin
dmDados.TsaipaiCODCLI_SAIPAI.Value := dmDados.Cons_cli.fieldbyname('cod_cli').AsInteger;
dmDados.TsaipaiNOMECLI_SAIPAI.Value := dmDados.Cons_cli.fieldbyname('nome_cli').AsString;
CodVend.SetFocus;
end
else
begin
ShowMessage('Cliente nao Cadastrado !!!!');
CodVend.SetFocus;
Exit;
end;
daqui para baixo uso para pesquisar produto !
procedure TfrmVendas.pesquisaproduto;
var a: string;
begin
a:= 'select * from estoque where cod_est = ' + CodProd.Text;
with dmDados.Cons_prod do
begin
Close;
SQL.Clear;
SQL.Add(a);
Open;
end;
END;
procedure TfrmVendas.CodProdExit(Sender: TObject);
begin
pesquisaproduto;
if dmDados.Cons_prod.RecordCount > 0 then
begin
dmDados.TdetSaipaiCOD_PROD_DET.Value := dmDados.Cons_prod.fieldbyname('cod_est').AsInteger;
dmDados.TdetSaipaiNOMEPROD_DET.Value := dmDados.Cons_prod.fieldbyname('descricao_est').AsString;
dmDados.TdetSaipaiVALORPROD_DET.Value := dmDados.Cons_prod.fieldbyname('precovenda_est').AsFloat;
QuantProd.SetFocus;
end
else
begin
ShowMessage('Produto nao Cadastrado !!!!');
CodProd.SetFocus;
Exit;
end;
end;
GOSTEI 0
Eriley Barbosa
16/08/2010
Pela mensagem pode ser erro de characterSet ou seu banco foi construido com Dialeto 1.
Atenciosamente
Eriley
GOSTEI 0
Willian Bento
16/08/2010
mas ele foi construido em dialeto 3 e tambem ja tentei mudar a tabela de caracteres mas nada adiantou !
GOSTEI 0
Eriley Barbosa
16/08/2010
Também pode ser de versão do firebird, tipo criar uma tabela utilizando um novo recurso da versão 2 e depois rodar seu programa utilizando a versão 1.5.
Atenciosamente
Eriley
GOSTEI 0
Willian Bento
16/08/2010
se for problema de versao como faço para corrigir isso ? realmente acho que vc tem razao, antes eu utilizava versao 1.5 depois no meio do projeto passei para versao 2.1, mas sempre utilizei dialeto 3, vc tem msn me passa para nos trocarmos ideia, pois sou novato em delphi e preciso de ajuda de um programador com mais experiencia !
GOSTEI 0
Eriley Barbosa
16/08/2010
Você consegue fazer insert nestas duas tabelas, pelo ibexpert ou iboconsole, vou resaltar novamente pelo que eu sei este erro acontece em um banco construido em Dialeto 1 ou Caracter set errado?
Veja este link no forum:
http://forum.devmedia.com.br/viewtopic.php?t=84083&sid=2299619c1b7bd25e6b204fc65f50ced6
Atenciosamente
GOSTEI 0
Eriley Barbosa
16/08/2010
Você consegue fazer insert nestas duas tabelas, pelo ibexpert ou iboconsole, vou resaltar novamente pelo que eu sei este erro acontece em um banco construido em Dialeto 1 ou Caracter set errado?
Veja este link no forum:
http://forum.devmedia.com.br/viewtopic.php?t=84083&sid=2299619c1b7bd25e6b204fc65f50ced6
Atenciosamente
GOSTEI 0
Willian Bento
16/08/2010
mas se ele foi construido em dialeto 1 como faço para converter para dialeto 3 ?
GOSTEI 0
Eriley Barbosa
16/08/2010
Use a ferramenta IBDataPump, qual versão do Delphi esta utilizando e qual a extensão do seu banco(.gdb, .fdb, etc....)?
Atenciosamente
Eriley
GOSTEI 0
Willian Bento
16/08/2010
estou usando o delphi 7 e banco firebird (.fdb)
GOSTEI 0
Eriley Barbosa
16/08/2010
Tente recriar o seu banco para Dialeto 3, mas com a extensão .gdb, pois, o IBX que vem com o Delphi é muito velho e talvez seja isso que está causando problema também.
Atenciosamente
Eriley
GOSTEI 0
Fernando Farah
16/08/2010
já tentou mudar o tipo do campo ?
bye
bye
GOSTEI 0
Willian Bento
16/08/2010
ja tentei sim mas acho que vou recriar o banco para ver se funciona, mas valeu pela dica, qualquer coisa eu posto o resultado aki no forum !!!
GOSTEI 0
Willian Bento
16/08/2010
boa tarde amigos consegui resolver o problema, e que quando eu ia salvar os dados na tabela o campo de codigo do produto estava com focus e ai na hora de salvar ele ficava pesquisando so que nao tinha nada no campo, ai coloquei uma verificaçao para ele pesquisar somente se os campos estiverem vazios ! valeu pela ajuda de vcs ate mais !!!
GOSTEI 0