Array
(
)

Ajuda nessa consulta SQL

Felipeiw
   - 27 jan 2006

#Código


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


Emerson
   - 27 jan 2006

tente assim:
#Código

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;