Fórum Coalesce ... Naum consigo fazer funcionar em alguns computad #56400

29/06/2006

0

Pessoal, quando tento executar uma SQL com a função COALESCE, dá o seguinte erro

Dynamic SQL Error.
SQL error code = -804.
Function unknown.
COALESCE.´


O que pode ser

Estou usando firebird 1.5 e delphi 5.0

Esse erro só aconteçe aqui no meu computador, fiz teste em outro computador e funciona normal, alguem sabe o motivo?

O código é este:
with dm.calculos do
  begin
    close;
    sql.clear;
    sql.add(´select mes, ano, dataextenso, conta, sum(coalesce(valord,0))as debito, sum(coalesce(valorc,0))as credito, (sum(coalesce(valord,0)) - SUM(coalesce(valorc,0)))as saldo from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    sql.add(´group by mes, ano, dataextenso, conta´);
    sql.add(´order by mes´);
    open;


O teste que fiz em outro micro o banco de dados é o mesmo e os codigos tambem, simplesmente só copiei deste micro para outro, só que neste aqui aparece o erro que citei acima.

Gradecido ajuda de todos.

JLima_Jrº


Jlimajr

Jlimajr

Responder

Posts

30/06/2006

Jlimajr

Page up


Responder

Gostei + 0

30/06/2006

Maikiperin

verifique se no seu computador há algum vestígio da instalação do Interbase se já houver instalado o mesmo algum dia, ou até mesmo algum vestígio de alguma versão antiga do FB, caso positivo apague tudo e reinstale o FB (1.5.xx) novamente....lhe falo isso pq a função [b:58c940622b][i:58c940622b]coalesce[/i:58c940622b][/b:58c940622b] só foi implementada a partir da versão 1.5.xxxx.

Att, Maiki Perin.


Responder

Gostei + 0

30/06/2006

Jlimajr

verifique se no seu computador há algum vestígio da instalação do Interbase se já houver instalado o mesmo algum dia, ou até mesmo algum vestígio de alguma versão antiga do FB, caso positivo apague tudo e reinstale o FB (1.5.xx) novamente....lhe falo isso pq a função coalesce só foi implementada a partir da versão 1.5.xxxx. Att, Maiki Perin.


Vou verificar se existe, mais a principio acho que naum pois quando migrei para o firebird ja instalei a versão 1.5 e o interbase a versão 6.0, mesmo assim vou vasculhar aqui em minha maquina.

Grato por responder


Responder

Gostei + 0

30/06/2006

Helio Nascimento

Colega, para que serve esta funçao COALESCE ?


Responder

Gostei + 0

30/06/2006

Jlimajr

Serve para calcular valores em branco (nulos), sem o coalesce naum consigo fazer somar que contem valores nilos tipo 0,00. E no projeto que estou desenvolvendo preciso que calcule para jogar o valor pro saldo.

Olhe o código completo do SQL
procedure TForm3.Button1Click(Sender: TObject);
var
vsaldo : double;
begin
vsaldo:= 0;
//-------------------------calculos soma de saldos-----------------------------------
aguardedadoson;
with dm.calculos do
  begin
    close;
    sql.clear;
    sql.add(´select mes, ano, dataextenso, conta, sum(coalesce(valord,0))as debito, sum(coalesce(valorc,0))as credito, (sum(coalesce(valord,0)) - SUM(coalesce(valorc,0)))as saldo from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    sql.add(´group by mes, ano, dataextenso, conta´);
    sql.add(´order by mes´);
    open;
    dm.calculos.First;

    while not dm.calculos.Eof do
    begin
      vsaldo:=dm.calculos.fieldbyname(´saldo´).asFloat+vsaldo;
      dm.calculos.FieldByName(´mes´).asString:=dm.calculos.fieldbyname(´mes´).asString;
      dm.calculos.FieldByName(´ano´).asString:=dm.calculos.fieldbyname(´ano´).asString;
      dm.calculos.FieldByName(´debito´).asFloat:=dm.calculos.FieldByName(´debito´).AsFloat;
      dm.calculos.FieldByName(´credito´).asFloat:=dm.calculos.FieldByName(´credito´).AsFloat;
      dm.calculos.FieldByName(´saldo´).asFloat:=vsaldo;
      dm.calculos.Next;
    end;
  end;
//-----------------------------------final codigo soma de calculo-------------------------------  
  //------------soma totaldebitos---------------
  with dm.somad do
  begin
    close;
    sql.clear;
    sql.add(´select sum(coalesce(valord,0))as totdebito from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    open;
  end;
  //---------------------final soma debito------------
  //------------soma totalcredito---------------
  with dm.somac do
  begin
    close;
    sql.clear;
    sql.add(´select sum(coalesce(valorc,0))as totcredito from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    open;
  end;
  //---------------------final soma credito------------
  if DM.calculos.isempty then
     showmessage(´Nao há registro neste numero de conta. Por favor tente novamente´);
     aguardedadosoff;
end;


Será que tem outra maneira de fazer esta soma, apezar de no meu computador de casa funcionar perfeitamente?

Obs: Naum funciona o coalesce no paradox.


Gradecido.


Responder

Gostei + 0

12/07/2006

Jlimajr

Sobe mais uma vez...Problema ainda naum resolvido.

Duvida:´Coalesce funciona em alguns micros e em outros naum´.


Responder

Gostei + 0

12/07/2006

Weber

Seu problema realmente é de versão.

Desistale o FB.
Procure pela DLL gds32.dll e apague manualmente esta dll

Instale o FB novamente

Não enetendi o que você quer dizer com isto ´...migrei para o firebird ja instalei a versão 1.5 e o interbase a versão 6.0...´. Se você está dizendo que tem o IB e FB na mesma maquina seu problema está ai.


Responder

Gostei + 0

12/07/2006

Jlimajr

Fico gradecido pela dica Sr Weber, agora sim resolveu tudo. Era isso mesmo. :D


Responder

Gostei + 0

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

Aceitar