erro sql

Delphi

16/08/2010

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

Willian Bento

Curtidas 0

Respostas

Eriley Barbosa

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

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

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
GOSTEI 0
Willian Bento

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;

GOSTEI 0
Eriley Barbosa

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

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

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

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

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

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

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

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

Willian Bento

16/08/2010

estou usando o delphi 7 e banco firebird (.fdb)

GOSTEI 0
Eriley Barbosa

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

Fernando Farah

16/08/2010

já tentou mudar o tipo do campo ?
bye
GOSTEI 0
Willian Bento

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

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
POSTAR