Ajuda nessa consulta SQL

27/01/2006

  DMX.CdsComandas2.Close;
  DMX.CdsComandas2.CommandText := ´SELECT CODPRO, SUM(CAST(QNTPRO AS FLOAT)) AS QNTTOT, SUM(CAST(QNTPRO AS FLOAT) * CAST(PREPRO AS FLOAT)) AS PRETOT FROM COMANDAS2, WHERE NUMDOC IN (SELECT NUMDOC FROM COMANDAS1 WHERE DATDOC BETWEEN :DATINI AND :DATFIN) GROUP BY CODPRO´;
  DMX.CdsComandas2.Params.ParamByName(´DATINI´).AsDate := StrToDate(EDatini.Text);
  DMX.CdsComandas2.Params.ParamByName(´DATFIN´).AsDate := StrToDate(EDatfin.Text);
  DMX.CdsComandas2.Open;


Estou totalizando a venda por produtos, porem tenho 2 problemas que eu nao consegui resolver, primeiro quero colocar o nome do produto que esta na tabela PRODUTOS, e segundo como podem ver o codigo ficou enorme e preciso ainda totalizar outro campo, so que quando acrescento o outro campo me retorna erro de tamanho da string 255 caracteres, como posso resolver esses 2 problemas?

Abs e obrigado


Felipeiw

Respostas

27/01/2006

Emerson

tente assim:
with DMX.CdsComandas2 do
begin
  Close; 
  CommandText := ´SELECT ´+
                 ´  CM2.CODPRO, SUM(CM2.QNTPRO) QNTTOT, ´+
                 ´  SUM(CM2.QNTPRO * CM2.PREPRO) PRETOT, ´+
                 ´  MAX(PROD.DESCRICAO) DESCRICAO ´+
                 ´FROM ´+
                 ´  COMANDAS2 CM2 ´+
                 ´LEFT JOIN PRODUTOS PROD ´+
                 ´  ON (PROD.CODPRO = CM2.CODPRO) ´+ 
                 ´WHERE ´+
                 ´  CM2.NUMDOC IN ´+
                 ´    (SELECT NUMDOC FROM COMANDAS1 ´+
                 ´     WHERE DATDOC BETWEEN :DATINI AND :DATFIN) ´+
                 ´GROUP BY CODPRO ´;
  Params.ParamByName(´DATINI´).AsDate := StrToDate(EDatini.Text); 
  Params.ParamByName(´DATFIN´).AsDate := StrToDate(EDatfin.Text); 
  Open;
end;



Responder Citar