SELECT SUM

Firebird

06/12/2006

Bom galera, sou participante viciado em foruns e resolvi entrar nesse tb, espero poder ajudar no que souber.
para iniciar, tenhu uma dúvida sobre o SUM com o C++ Builder 6...

AnsiString DE = MaskEdit1->Text;
AnsiString ATE = MaskEdit2->Text;

if(RBTODAS->Checked == true){


      DataModule1->IBQueryLocaliza5952->Close();
      DataModule1->IBQueryLocaliza5952->SQL->Clear();
      DataModule1->IBQueryLocaliza5952->SQL->Text = "SELECT * FROM DARF5952 WHERE DATA >= :DE AND DATA <= :ATE";
      DataModule1->IBQueryLocaliza5952->ParamByName("DE")->AsDateTime =(MaskEdit1->Text);
      DataModule1->IBQueryLocaliza5952->ParamByName("ATE")->AsDateTime = (MaskEdit2->Text);
      DataModule1->IBQueryLocaliza5952->Active = true;
      DataModule1->IBQueryLocaliza5952->Open();

}
if(RBSOMA->Checked == true){


      DataModule1->IBQueryPrinc5952->Close();
      DataModule1->IBQueryPrinc5952->SQL->Clear();
      DataModule1->IBQueryPrinc5952->SQL->Text = "SELECT //NOMETELEFONE, SUM(VALORPRINCIPAL)FROM DARF5952 WHERE DATA >= :DE AND DATA <= :ATE GROUP BY NOMETELEFONE";
DataModule1->IBQueryLocaliza5952->SQL->Text = "SELECT NOMETELEFONE, REF, PERIODOAP, NUMEROCGC, CODRECEITA, NUMEROREF, DATAVENC, VENCIMENTO, PRINCIPAL, VALORPRINCIPAL, VALORMULTA, VALORJUROS, VALORTOTAL, DARF5952VALOR, DATA, SUM(VALORPRINCIPAL)FROM DARF5952 WHERE DATA >= :DE AND DATA <= :ATE GROUP BY NOMETELEFONE";
      DataModule1->IBQueryPrinc5952->ParamByName("DE")->AsDateTime =(MaskEdit1->Text);
      DataModule1->IBQueryPrinc5952->ParamByName("ATE")->AsDateTime = (MaskEdit2->Text);
      DataModule1->IBQueryPrinc5952->Active = true;
      DataModule1->IBQueryPrinc5952->Open();

      }
}


Bom, na linha comentada o código funciona, pois seleciona apenas o NOMETELEFONE e mostra a soma, mas como ficaria para mostrar todos os campos?? coloquei separando por virgula só que não deu...

(qlq código eim delphi será bem aceito...)
obrigado..[b:4ca0700dcb][]´s[/b:4ca0700dcb]


Rostery

Rostery

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

06/12/2006

não sei se entendi direito, mas - no seu caso - para ter mais campos na instrução select você deverá colocá-los na cláusula [i:5adadf5525]group by[/i:5adadf5525], a menos que você use campos agregados com funções.


GOSTEI 0
Rostery

Rostery

06/12/2006

opa...se eu colocar após o Group by, acontece que ela mostra todos os
campos, mas não calcula, mostra todos como se eu estivesse fazendo
um select sem o sum do group by....
=(


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

essa é uma característica de 100¬ dos bancos de dados.
para solucionar isso, use campos agregados.


GOSTEI 0
Rostery

Rostery

06/12/2006

um exemplo??
como assim??


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

SELECT NOMETELEFONE, NUMEROCGC, SUM(VALORPRINCIPAL) VALORPRINCIPALTOTAL,
AVG(VALORMULTA) MEDIAMULTA, AVG(VALORJUROS) MEDIAJUROS, SUM(VALORTOTAL) VALORTOTAL,
SUM(DARF5952VALOR) DARF5952VALOR
FROM DARF5952
WHERE DATA >= :DE AND DATA <= :ATE
GROUP BY NOMETELEFONE, NUMEROCGC


GOSTEI 0
Rostery

Rostery

06/12/2006

[i:4c2df68892]Ele ta calculando errado mas mostrou os campos...eu tava tentando entender esse avg ae...
li no google q é uma média...é isso msm??
queria saber, qual a parte desse código que vc me passou que adiciona o resto dos campos...[/i:4c2df68892]

[i:4c2df68892]Falow cara...brigadão msm..[/i:4c2df68892]


GOSTEI 0
Rostery

Rostery

06/12/2006

[i:b4d9ae01da]Bom, consigui aki, ta faltando uma coisa q ta mais dificil e não consigui ainda...[/i:b4d9ae01da]

[b:b4d9ae01da]SELECT:[/b:b4d9ae01da]

´
SELECT NOMETELEFONE, SUM(VALORPRINCIPAL) VALORPRINCIPALTOTAL, AVG(VALORMULTA) VALORMULTA, AVG(VALORJUROS) VALORJUROS, SUM(VALORTOTAL) VALORTOTAL, SUM(DARF5952VALOR) DARF5952VALOR FROM DARF5952 WHERE DATA >= :DE AND DATA <= :ATE GROUP BY NOMETELEFONE";


[i:b4d9ae01da]ele pega os de msm nome e agrupa..
porém, esses de msm nome, são notas, cada uma com seu numero, depois que eu agrupar as de msm nome, como faço para inserir em um campo, o numero das notas..[/i:b4d9ae01da]

[b:b4d9ae01da]Ex.:[/b:b4d9ae01da]

[i:b4d9ae01da]Se agrupasse 4 notas de msm nome, tenho q mostrar o numero de cada uma que foi agrupada..

|Campo Notas|
001, 002, 007, 010[/i:b4d9ae01da]


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

talvez a melhor forma de fazer isso seja com stored procedures...


GOSTEI 0
Rostery

Rostery

06/12/2006

Nossa cara, vou procurar no google...
mas eu num sei o que e isso q vc falou...
:(
se puder me dar um exemplo..
ou uma dica..
obrigado..


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

eis um exemplo:
CREATE PROCEDURE DARF5952_CLI (
    de date,
    ate date)
returns (
    nometelefone varchar(50),
    valorprincipal float,
    mediamulta float,
    mediajuros float,
    valortotal float,
    darf5952valor float,
    notasfiscais varchar(150))
as
declare variable data date;
declare variable numeroref varchar(10);
begin
  for select
        NOMETELEFONE, sum(VALORPRINCIPAL) VALORPRINCIPAL,
        avg(VALORMULTA) MEDIAMULTA, avg(VALORJUROS) MEDIAJUROS,
        sum(VALORTOTAL) VALORTOTAL, sum(DARF5952VALOR) DARF5952VALOR
      from
        DARF5952
      where
        DATA between :DE and :ATE
      group by
        NOMETELEFONE
  into 
    :NOMETELEFONE, :VALORPRINCIPAL,
    :MEDIAMULTA, :MEDIAJUROS,
    :VALORTOTAL, :DARF5952VALOR do
  begin
    NOTASFISCAIS = ´´;

    for select
          NUMEROREF
        from
          DARF5952
        where
          DATA between :DE and :ATE
          and NOMETELEFONE = :NOMETELEFONE
    into
       :NUMEROREF do
    begin
      if (:NOTASFISCAIS <> ´´) then
        NOTASFISCAIS = NOTASFISCAIS || ´, ´;

      NOTASFISCAIS = NOTASFISCAIS || :NUMEROREF;
    end
  
    suspend;
  end
end

para executar use:
[b:5c5d3e2b2a]EXECUTE PROCEDURE DARF5952_CLI(´01.01.2006´, ´31.12.2006´)[/b:5c5d3e2b2a]
ou
[b:5c5d3e2b2a]SELECT * FROM DARF5952_CLI(´01.01.2006´, ´31.12.2006´)[/b:5c5d3e2b2a]


GOSTEI 0
Rostery

Rostery

06/12/2006

[i:65de5b4fff]brigado emerson, agora vou estudar isso ae, passar pro builder, só mais uma coisa, onde no meu programa coloco esse código??

flw..brigado msm..[/i:65de5b4fff][b:65de5b4fff][]´s[/b:65de5b4fff]


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

o código deve ser colocado no interbase/firebird. isso é uma script para criar uma stored procedure. no ibexpert deve-se abrir o executor de scripts, colar o código e rodar. a sp deverá ser criada.

para executar:
if(RBSOMA->Checked){
      DataModule1->IBQueryPrinc5952->Close();
      DataModule1->IBQueryPrinc5952->SQL->Text = "SELECT * FROM DARF5952_CLI( :DE, :ATE )";
      DataModule1->IBQueryPrinc5952->ParamByName("DE")->AsDateTime =(MaskEdit1->Text);
      DataModule1->IBQueryPrinc5952->ParamByName("ATE")->AsDateTime = (MaskEdit2->Text);
      DataModule1->IBQueryPrinc5952->Open();
}



GOSTEI 0
Rostery

Rostery

06/12/2006

[i:d06b71255b]Cara, esse exemplo que vc me deu faz o que eu preciso neh??
putz....vou estudar isso, agora sei que é só criar ele no IBCONSOLE neh, e chamar no meu prog...nossa...valew...eu nunca usei esse stored..vou procurar aki blz??
obrigado pela ajuda..espero que de certo... =)
flw..[/i:d06b71255b][b:d06b71255b][]´s[/b:d06b71255b]


GOSTEI 0
Rostery

Rostery

06/12/2006

[i:02fc0e988f]eu fiz algumas alterações, mas ta dando erro agora... ta assim:(não mudo nd quase...)[/i:02fc0e988f]

CREATE PROCEDURE DARF5952 
( 
DE date, 
ATE date 
) 
returns( 
NOMETELEFONE varchar(50), 
VALORPRINCIPAL float, 
MEDIAMULTA float, 
MEDIAJUROS float, 
VALORTOTAL float, 
DARF5952VALOR float, 
NOTASFISCAIS varchar(150)) 
as 
declare variable DATA date; 
declare variable NUMEROREF varchar(10); 
begin 
for select 
NOMETELEFONE, sum(VALORPRINCIPAL) VALORPRINCIPAL, 
avg(VALORMULTA) MEDIAMULTA, avg(VALORJUROS) MEDIAJUROS, 
sum(VALORTOTAL) VALORTOTAL, sum(DARF5952VALOR) DARF5952VALOR 
from 
DARF5952 
where 
DATA between :DE and :ATE 
group by 
NOMETELEFONE 
into 
:NOMETELEFONE, :VALORPRINCIPAL, 
:MEDIAMULTA, :MEDIAJUROS, 
:VALORTOTAL, :DARF5952VALOR do 
begin 
NOTASFISCAIS = ´´; 

for select 
REF 
from 
DARF5952 
where 
DATA between :DE and :ATE 
and NOMETELEFONE = :NOMETELEFONE 
into 
:NUMEROREF do 
begin 
if (:NOTASFISCAIS <> ´´) then 
NOTASFISCAIS = NOTASFISCAIS || ´, ´; 

NOTASFISCAIS = NOTASFISCAIS || :NUMEROREF; 
end 

suspend; 
end 
end


[b:02fc0e988f]o ERRO:[/b:02fc0e988f]
Dynamic SQL Error SQL error code = -104 Unexpected end of command


[i:02fc0e988f]tentei mudar esses end´s de lugar, e comparei com um exemplo da internet, mas não consigui arrumar naum...
:(

q q é??[/i:02fc0e988f]


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

primeira coisa: [b:137642f9f7]a stored procedure não poderá ter o mesmo nome da tabela[/b:137642f9f7].
DARF5952 já é o nome da tabela. não pode ser o nome da stored procedure!
SET TERM ^ ;

CREATE PROCEDURE SP_DARF5952 (
    de date,
    ate date)
returns (
    nometelefone varchar(50),
    valorprincipal float,
    mediamulta float,
    mediajuros float,
    valortotal float,
    darf5952valor float,
    notasfiscais varchar(150))
as
declare variable data date;
declare variable numeroref varchar(10);
begin
  for select
        NOMETELEFONE, sum(VALORPRINCIPAL) VALORPRINCIPAL,
        avg(VALORMULTA) MEDIAMULTA, avg(VALORJUROS) MEDIAJUROS,
        sum(VALORTOTAL) VALORTOTAL, sum(DARF5952VALOR) DARF5952VALOR
      from
        DARF5952
      where
        DATA between :DE and :ATE
      group by
        NOMETELEFONE
  into
    :NOMETELEFONE, :VALORPRINCIPAL,
    :MEDIAMULTA, :MEDIAJUROS,
    :VALORTOTAL, :DARF5952VALOR do
  begin
    NOTASFISCAIS = ´´;

    for select
          REF
        from
          DARF5952
        where
          DATA between :DE and :ATE
          and NOMETELEFONE = :NOMETELEFONE
    into
      :NUMEROREF do
    begin
      if (:NOTASFISCAIS <> ´´) then
        NOTASFISCAIS = NOTASFISCAIS || ´, ´;
      NOTASFISCAIS = NOTASFISCAIS || :NUMEROREF;
    end

    suspend;
  end
end^

SET TERM ; ^



GOSTEI 0
Rostery

Rostery

06/12/2006

[i:623c059620]Nossa, criou...
cara, vc podi me dizer aonde posso encontrar mais coisas sobre essas procedures ae??

fiquei interessado..parece ser legal somente chamar o código..
:)
ondi eu encontro informações detalhadas sobre??
no google achei bastante e li o site da Borland tb tem..
tem mais algum interessante q vc sabe????

vlw[/i:623c059620][b:623c059620][]´s[/b:623c059620]


GOSTEI 0
Rostery

Rostery

06/12/2006

bOm, tentei modificar esse procedure ae, mas não sei nada disso msm, e estou com dificuldades...
é o seguinte, analizei bem o que preciso, e tava tentando fazer assim:

eu tenho que mostrar todos os campos da minha tabela DARF5952:
(
´NOMETELEFONE´VARCHAR(50),
´REF´VARCHAR(45),
´PERIODOAP´CHAR(11),
´NUMEROCGC´CHAR(20),
´CODRECEITA´CHAR(10),
´NUMEROREF´CHAR(15),
´DATAVENC´CHAR(11),
´VENCIMENTO´CHAR(11),
´PRINCIPAL´CHAR(5),
´VALORPRINCIPAL´DOUBLE PRECISION,
´VALORMULTA´DOUBLE PRECISION,
´VALORJUROS´DOUBLE PRECISION,
´VALORTOTAL´DOUBLE PRECISION,
´DARF5952VALOR´DOUBLE PRECISION,
´DATA´DATE
)

só que da seguinte maneira, primeiro tenho que calcular o [b:ccd1b1d40c]VALORPRINCIPAL[/b:ccd1b1d40c], agrupando por [b:ccd1b1d40c]NOMETELEFONE[/b:ccd1b1d40c] então ficaria assim neh?

SELECT SUM(VALORPRINCIPAL) VALORPRINCIPAL FROM DARF5952 WHERE DATA BETWEEN :DE AND :ATE GROUP BY NOMETELEFONE INTO :VALORPRINCIPAL


Bom, o que espero disso, é que, faça a soma do [b:ccd1b1d40c]valorprincipal[/b:ccd1b1d40c] entre as datas digitadas que tenham o msm nome, depois guarde o resultado na variavel...

depois disso tenho no meu campo [b:ccd1b1d40c]PRINCIPAL[/b:ccd1b1d40c] da tabela, o seu conteúdo ou pode ser ´OK´ para dizer que esse cadastro é de uma empresa matriz ou nulo quando for apenas revenda, até aí blz..o que tenho que fazer agora então, é agrupar as DARFs de nomes iguais, [b:ccd1b1d40c]INSERIR[/b:ccd1b1d40c] o valor da principal que está guardado na variável, e agrupar as notas que forem referentes aos nomes agrupados...

aí tentei fazer um procedure assim (eu tirei base no que o emerson.en passou):

SET TERM ^ ;

CREATE PROCEDURE "SP_DARF5952_TESTE"
(
  "DE" DATE,
  "ATE" DATE
)
RETURNS
(
  "NOMETELEFONE" VARCHAR(50),
  "REF" VARCHAR(45),
  "PERIODOAP" CHAR(11),
  "DATAVENC" CHAR(11),
  "PRINCIPAL" CHAR(5),
  "VALORPRINCIPAL" DOUBLE PRECISION,
  "DARF5952VALOR" DOUBLE PRECISION,
  "NOTASFISCAIS" VARCHAR(100)
)
AS
DECLARE VARIABLE DATA DATE;
DECLARE VARIABLE NUMEROREF VARCHAR(10);
BEGIN
  FOR SELECT SUM(VALORPRINCIPAL) VALORPRINCIPAL FROM DARF5952 WHERE DATA BETWEEN :DE AND :ATE GROUP BY NOMETELEFONE INTO :VALORPRINCIPAL 
    DO BEGIN
     

 SELECT * FROM DARF5952 WHERE DATA BETWEEN :DE AND :ATE AND PRINCIPAL <>´´

DO BEGIN 
    NOTASFISCAIS = ´´;
    FOR SELECT
          REF
    FROM DARF5952
    WHERE DATA BETWEEN :DE AND :ATE
          AND NOMETELEFONE = :NOMETELEFONE
    INTO
      :NUMEROREF DO
    BEGIN
      IF (:NOTASFISCAIS <> ´´) THEN
        NOTASFISCAIS = NOTASFISCAIS || ´, ´;
      NOTASFISCAIS = NOTASFISCAIS || :NUMEROREF;
    END
    SUSPEND;
  END
END
 ^

SET TERM ; ^


Bom na linha que tem o SELECT * preciso inserir o numero das notas referentes e o valor que guardei na varial, mas não sei como montar tudo isso para funcionar junto...

consigui exlpicar bem o que preciso??
obrigado..a todos principalmente a [b:ccd1b1d40c]emerson.en[/b:ccd1b1d40c]
[b:ccd1b1d40c][]´s[/b:ccd1b1d40c]


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

eu não entendi bem o que você deseja. você explicou o por quê do campo PRINCIPAL mas não faz uso dele.

mostre como os registros estão gravados e como você quer a saída dessas informações.

por exemplo...
tendo os registros:
NOMETELEFONE REF PERIODOAP VALORPRINCIPAL  VALORMULTA
-----------------------------------------------------
emp1         X   X                  10,00        1,00
emp1         y   X                  12,00        1,25
emp1         Z   X                  11,00        0,00
emp1         A   X                  13,00        0,00
emp1         B   X                  13,00        0,00
emp2         X   X                  10,00        0,00
emp2         A   X                  10,00        1,00
emp3         Z   X                  15,00        1,00
emp1         H   X                  11,00        0,00
emp1         K   X                  10,00        0,00

quero que saia assim:
NOMETELEFONE REF                     VALORPRINCIPAL  TOTALMULTA  MEDIAMULTA
---------------------------------------------------------------------------
emp1         K, X, Y, Z, A, B, H              80,00        2,25      0,3214     
emp2         X, A                             20,00        1,00      0,5000
emp3         Z                                15,00        1,00      1,0000

com esse tipo de ilustração fica mais fácil entendermos o que você precisa.


GOSTEI 0
Rostery

Rostery

06/12/2006

Tenho todos esses campos: NOMETELEFONE | REF | PERIODOAP | DATAVENC | PRINCIPAL | VALORPRINCIPAL | DARF5952VALOR | NOTASFISCAIS |

Vou abreviar pra ficar melhor na visualizaçao:

[b:3ac395ed8b]Entrada:[/b:3ac395ed8b]

NFONE | REF | PERIODOAP | DATAVENC | PRINCIPAL | VRPRINCIPAL|
===============================================================
emp1  |001  | 01/01/07  | 15/11/06 |    OK     |  100,00    |
emp1  |002  | 02/10/06  | 01/01/09 |           |  100,00    |
emp1  |003  | 03/10/09  | 02/10/05 |           |  100,00    |
emp2  |004  | 10/12/07  | 15/11/06 |           |   50,00    |
emp2  |005  | 12/11/06  | 01/01/09 |           |   50,00    |
emp2  |006  | 23/10/09  | 02/10/05 |    OK     |   50,00    |
emp3  |007  | 21/12/07  | 19/11/06 |           |   10,00    |
emp3  |008  | 09/11/01  | 05/01/09 |    OK     |   10,00    |



[b:3ac395ed8b]Saída:[/b:3ac395ed8b]
NFONE |     REF     |PERIODOAP | DATAVENC | PRINCIPAL | VRPRINCIPAL|
======================================================================
emp1  |001, 002, 003| 01/01/07 | 15/11/06 |    OK     |  300,00    |
emp2  |004, 005, 006| 23/10/07 | 02/10/05 |    OK     |  150,00    |
emp3  |007, 008     | 09/11/01 | 05/01/09 |    OK     |   20,00    |


O que eu tinha falado do PRINCIPAL é que ele pega os campos que tem conteúdo ´OK´ no campo principal ex.:

NOMEFONE | REF | PERIODOAP | DATAVENC | PRINCIPAL | VRPRINCIPAL|
==============================================================
emp1     |001  | 01/01/07  | 15/11/06 |    OK     |  100,00    |
emp1     |002  | 02/10/06  | 01/01/09 |           |  100,00    |
emp1     |003  | 03/10/09  | 02/10/05 |           |  100,00    |


ele pega a primeira linha para mostrar, referencia com as outras ficando assim:

NFONE |     REF     | PERIODOAP | DATAVENC | PRINCIPAL | VRPRINCIPAL|
===============================================================
emp1  |[b]001, 002, 003[/b]| 01/01/07  | 15/11/06 |    OK     |   [b]300,00[/b]   |


ficou melhor agora??

[i:3ac395ed8b]flw cara, vlw..[/i:3ac395ed8b]
[b:3ac395ed8b][]´s[/b:3ac395ed8b]


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

veja se é isso:
SET TERM ^ ;

CREATE PROCEDURE SP_DARF5952 (
    de date,
    ate date)
returns (
    nometelefone varchar(50),
    periodoap date,
    datavenc date,
    valorprincipal float,
    totalmulta float,
    mediamulta float,
    totaljuros float,
    mediajuros float,
    valortotal float,
    darf5952valor float,
    notasfiscais varchar(150))
as
declare variable numeroref varchar(10);
declare variable principal char(5);
declare variable periodo date;
declare variable vencimento date;
begin
  for select
        NOMETELEFONE, sum(VALORPRINCIPAL),
        sum(VALORMULTA), avg(VALORMULTA),
        sum(VALORJUROS), avg(VALORJUROS),
        sum(VALORTOTAL), sum(DARF5952VALOR)
      from
        DARF5952
      where
        DATA between :DE and :ATE
      group by
        NOMETELEFONE
  into
    :NOMETELEFONE, :VALORPRINCIPAL,
    :TOTALMULTA, :MEDIAMULTA,
    :TOTALJUROS, :MEDIAJUROS,
    :VALORTOTAL, :DARF5952VALOR do
  begin
    NOTASFISCAIS = ´´;

    for select
          REF, PERIODOAP, DATAVENC,
          COALESCE(PRINCIPAL, ´NAO´)
        from
          DARF5952
        where
          DATA between :DE and :ATE
          and NOMETELEFONE = :NOMETELEFONE
    into
      :NUMEROREF, PERIODO, VENCIMENTO, :PRINCIPAL do
    begin
      if (:NOTASFISCAIS <> ´´) then
        NOTASFISCAIS = NOTASFISCAIS || ´, ´;
      NOTASFISCAIS = NOTASFISCAIS || :NUMEROREF;

      if (:PRINCIPAL = ´OK´) then
      begin
        PERIODOAP = PERIODO;
        DATAVENC = VENCIMENTO;
      end
    end

    suspend;
  end
end^

SET TERM ; ^



GOSTEI 0
Rostery

Rostery

06/12/2006

deu isso:

Dynamic SQL Error
SQL error code = -804
Function unknown
COASLESCE



ixiii, i agora??
:shock:


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

não é COASLESCE
é COALESCE

outra coisa: qual é o banco de dados? Firebird? Interbase?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

não é COASLESCE
é COALESCE


GOSTEI 0
Rostery

Rostery

06/12/2006

coloquei [b:a559dfd16a]COALESCE[/b:a559dfd16a]
mas deu o msm erro,,,
uso o Interbase..


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

coalesce() não existe no interbase, só no firebird.

deixe somente:
    for select
          REF, PERIODOAP, DATAVENC,
          PRINCIPAL
        from
          DARF5952
        where
          DATA between :DE and :ATE
          and NOMETELEFONE = :NOMETELEFONE
    into
      :NUMEROREF, PERIODO, VENCIMENTO, :PRINCIPAL do



GOSTEI 0
Rostery

Rostery

06/12/2006

emerson.en certinho!!!!!
alterei o Coaleste e mudei o tipo de dois campos, que estavão como DATE q na minha aplicação são char...

deu certo...

Onde posso encontrar sobre como fazer essas procedures???
obrigado...agora foi... :)
vlw!!! agora falta arrumar alguns detalhes no meu programa e colocar para rodar!!!!
vlw!!!!!!!!!


[b:08f3de42ab][]´s[/b:08f3de42ab]


GOSTEI 0
POSTAR