Jump to content
Fórum Script Brasil
  • 0

Sql no delphi


Question

Ola amigos, preciso contar quantos itens este select esta listando, mas parece q o count não funciona com o distinct, já fiz de tudo. Se alguém tiver alguma solução.. O banco q estou usando é o oracle 9i. valeu.

SALDO1.Close;

SALDO1.SQL.Clear;

SALDO1.SQL.ADD('Select DISTINCT A.CODPROMAT,A.DESPROMAT,Sum(B.QTDVEN) AS TOTAL from');

SALDO1.SQL.ADD('CADPROMAT A,DETNOTFISVEN B,MESFISVEN C,MESROMCAR D');

SALDO1.SQL.ADD('where C.CODEMP=B.CODEMP AND C.CODEST=B.CODEST AND C.NUMNOTFIS=B.NUMNOTFIS AND');

SALDO1.SQL.ADD('D.CODEMP=C.CODEMP AND D.CODEST=C.CODEST AND D.NUMROMCAR=C.NUMROMCAR AND');

SALDO1.SQL.ADD('B.CODCLI=C.CODCLI AND B.CODPROMAT=A.CODPROMAT AND D.DATSAI='+#39+'31/12/9999'+#39+'AND');

SALDO1.SQL.ADD('C.INDFATMAN='+#39+'N'+#39+'AND C.INDIMP='+#39+'S'+#39+'AND C.INDNOTSAI='+#39+'S'+#39+'AND');

SALDO1.SQL.ADD('C.DATEMI<'+#39+maskedit1.text+#39+'AND C.INDRET='+#39+'N'+#39+'AND C.NUMNOTSAI='+#39+'0'+#39+'AND');

SALDO1.SQL.ADD('C.INDCAN='+#39+'N'+#39);

SALDO1.SQL.ADD('GROUP BY A.CODPROMAT,A.DESPROMAT,A.INDMARPRO');

SALDO1.SQL.ADD('HAVING A.INDMARPRO='+#39+'S'+#39);

SALDO1.Open;

Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

O distinct nesta função é utilizado p/ resumir os resultados, sem ele os resultados seriam o triplo, e o fato de ter q contar os campos é p/ eu gravar em outro banco de dados tudo q foi encontrado dentro desta select, fiz um for e preciso saber quando parar por isso tenho q contar qtos registros foram encontrados.

atenciosamente,

RSA..

Link to post
Share on other sites
  • 0
..., fiz um for e preciso saber quando parar por isso tenho q contar qtos registros foram encontrados. ...

Oi, 'Renatosky'!

Em vez de for por que não usar repeat until ou while. Não seriam mais práticos?

Link to post
Share on other sites
  • 0
..., fiz um for e preciso saber quando parar por isso tenho q contar qtos registros foram encontrados. ...

Oi, 'Renatosky'!

Em vez de for por que não usar repeat until ou while. Não seriam mais práticos?

Realmente Denis Courcy, seria a opção mais adequada.

Renatosky, seguindo a sugestão do colega, seu código ficaria mais ou menos assim:

// seu código para montar o SQL estaria aqui (seu post inicial)
  ...
  SALDO1.Open;
  while not SALDO1.OEF do
  begin
    // seu processamento vai aqui
    ....
    SALDO1.Next;
  end;
  SALDO1.Close;
...
end;

Abraços

Link to post
Share on other sites
  • 0

usa

qry.recordcount ^^

obs: Porque não fazer:

qry.sql.text :=

'Select DISTINCT A.CODPROMAT,A.DESPROMAT,Sum(B.QTDVEN) AS TOTAL from'+

CADPROMAT A,DETNOTFISVEN B,MESFISVEN C,MESROMCAR D'+

'where C.CODEMP=B.CODEMP AND C.CODEST=B.CODEST AND C.NUMNOTFIS=B.NUMNOTFIS AND'+

'D.CODEMP=C.CODEMP AND D.CODEST=C.CODEST AND D.NUMROMCAR=C.NUMROMCAR AND'+....

Mesmo assim, não sei eu o que você quer fazer... Está muito grande. o maior que já utilizei foi:

begin
      lvDt  := copy(fDtBD(dtPerigo.Date), 3, 6);
      lvAux := 'A.' + cntCacelado + 'AND MID(A.dt_nasc, 1, 4) <= "' +
         fRetDtNasc(pIdade1)    + '" AND MID(A.dt_nasc, 1, 4) >= "' +
         fRetDtNasc(pIdade2)    + '"';
      lvSql := 'SELECT B.* '+
               'FROM '+ cntTBCrmAss + ' AS A LEFT JOIN ' +  cntTBCrmCtf +
               ' AS B ON (A.cd_associado = MID(B.id_ctf, 7, 9) AND '    +
               'MID(B.id_ctf, 1, 6) >= "'+lvDt+'")' +
               ' WHERE ' + lvAux + ' AND A.fl_cancelado = 0 AND B.id_ctf IS Null';
      rOpenRSQuery  (lvSql, 'qry');
      lvAll := IntToStr(fQrCount('qry'));
      pNum .Caption := lvAll;
      rAuxTotSoc();
      pPerc.Caption := fCalcPercentStr(lvAll, IntToStr(lvATot));
      rCloseRSQuery('qry');
   end;

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148691
    • Total Posts
      644530
×
×
  • Create New...