Re: [firebase-br] SQL Dinâmico

Henrique Sinapse suporte em sinapseinformatica.com.br
Sáb Mar 19 10:55:25 -03 2005


Caro Eliomar,

Ainda não testei pelo DELPHI,  estou no Editor SQL do IbExpert. Estou executando o seguinte código SELECT * FROM SP_SALDO_PRODUTO('0252-0017-8',:pDATA1,:pDATA2). Nem se colocar um valor no parâmetro CODMAT funciona.

Segundo o colega Rubem me informou, o problema está na concatenação, pois estava concatenando um valor do tipo DATA em uma string. Então então usei a função CAST para converter o valor da variável para STRING. Veja abaixo!

vSQL='Select CODMAT,SUM(ENTRADA),SUM(SAIDA) From TB_ESTOQUE';
vSQL=vSQL||' Where (DATA BETWEEN '||CAST(:DATA_INICIAL as VARCHAR(10))||' and '||CAST(:DATA_FINAL as VARCHAR(10))||') ';

  if (Not CODMAT IS NULL) then
     vSQL=vSQL||'  and CODMAT='||:CODMAT;
  vSQL=vSQL||' Group By CODMAT';

  For Execute Statement :vSQL
  Into rCODMAT,vTOTENTRADAS,vTOTSAIDAS
  Do
  Begin
    rSALDO=vTOTENTRADAS-vTOTSAIDAS;
   suspend;
  End


Mas ainda continua dando o mesmo erro. Ouverflow occured during data type conversion. Conversion error from string "1972".

Eu tentei executar pelo DELPHI e também dá o mesmo erro. O que eu posso está fazendo de errado?

      Carlos Henrique Meireles
      Suporte de Sistemas
      Tel.: 21 - 8115-1584 
     

  ----- Original Message ----- 
  From: Eliomar 
  To: FireBase 
  Sent: Saturday, March 19, 2005 8:51 AM
  Subject: Re: [firebase-br] SQL Dinâmico


  Quando vc passa o CODMAT como null
  a SP dá certo?

  E lá no delphi como vc esta passando os
  parametros?

  Tem que passar com o QuotedStr pois
  se trata de uma Varchar.

  Entendeu?

  Agradecido.
  Eliomar,
  ICQ - 167715482
  Soft-Data Softwares Administrativos
  hptt://www.promediconet.com.br


  ------------- Segue mensagem original! -------------

  De: "Henrique Sinapse" <suporte em sinapseinformatica.com.br>
  Data: Fri, 18 Mar 2005 18:38:10 -0300
  Para: "FireBase" <lista em firebase.com.br>
  Assunto: [firebase-br] SQL Dinâmico

  Gente,

  Estou com um problema que ao meu ver é bobo, mas não estou conseguindo resolver. 

  Eu tenho que montar um procedure onde eu extraio o saldo de um material no estoque dentro de um determinado período. Só que eu queria que quando o parâmetro código do material não fosse informado, a procedure automaticamente trouxesse o saldo de todos os materiais. Mas quando eu execute a procedure dá o seguinte erro:

  Ouverflow ocurred during data type conversion. Conversion erro from string "1996".

  create procedure SP_SALDO_PRODUTO(
    CODMAT VARCHAR(12),
    DATA_INICIAL DATE,
    DATA_FINAL DATE)
  returns (
    rCODMAT VARCHAR(12),
    rSALDO NUMERIC(10,2))
  as
    declare variable vSQL VARCHAR(200);
    declare variable vTOTENTRADAS NUMERIC(10,2);
    declare variable vTOTSAIDAS NUMERIC(10,2);
  begin
    vSQL='Select CODMAT,SUM(ENTRADA),SUM(SAIDA) From TB_ESTOQUE';
    vSQL=vSQL||' Where (DATA BETWEEN '||:DATA_INICIAL||' and '||:DATA_FINAL||')';
    if (Not CODMAT IS NULL) then
       vSQL=vSQL||'  and CODMAT='||:CODMAT;
    vSQL=vSQL||' Group By CODMAT';

    For Execute Statement :vSQL
    Into rCODMAT,vTOTENTRADAS,vTOTSAIDAS
    Do
    Begin
      rSALDO=vTOTENTRADAS-vTOTSAIDAS;
      suspend;
    End

  end

  Alguém poderia me ajuda?

        Carlos Henrique Meireles
        Suporte de Sistemas
        Tel.: 21 - 8115-1584 
       

  ______________________________________________
  FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
  Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br




  ______________________________________________
  FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
  Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br



Mais detalhes sobre a lista de discussão lista