Fórum consultando pedidos do mes #344928
23/08/2007
0
var part: string;
dataini,datafin : string;
begin
ShortDateFormat:=´dd/mm/yyyy´;
part := datetostr(date);
begin
dataini := MaskEdit1.text;
datafin := MaskEdit2.text;
//Transforma em data estilo Americano, usado pela instrução SQL
dataini:=FormatDateTime(´mm/dd/yyyy´,StrToDate(dataini));
datafin:=FormatDateTime(´mm/dd/yyyy´,StrToDate(datafin));
with DtmContVendas.Query3 do
begin
Close;
sql.Clear;
sql.add(´select codped,nped,clienteped,dataped,subtotal,desconto,totgeral,produto,preco,qtditem,totiten,descricao from produtos,clientes,Pedidos,itens´);
sql.add(´where produtos.descricao=itens.produto and itens.codped=pedidos.codped and pedidos.dataped between ´´+ dataini + ´´and ´´ + datafin + ´´´);
sql.add(´group by codped,nped,clienteped,dataped,subtotal,desconto,totgeral,produto,preco,qtditem,totiten,descricao order by pedidos.dataped´);
Open;
Application.CreateForm(TFrmrelpedmes,Frmrelpedmes); // cria o formulário
Frmrelpedmes.qreprelpedmes.Preview; // exibe a consulta
por favor se alguem podr ajudar
Marquinhospe
Curtir tópico
+ 0Posts
23/08/2007
Emerson Nascimento
outra coisa: você está certo do resultado que deseja? porque não é possível retornar numa instrução simples, os itens do pedido e ainda o total dos pedidos [b:cb82dd9e88]por cliente[/b:cb82dd9e88]. sem contar a incoerência de exibir ´todos os pedidos feitos no mês desejado´ e ter uma data inicial e uma data final.
Gostei + 0
23/08/2007
Nasguone
segue abaixo um exemplo de como utilizo
DATAINI := (FormatDateTime(´mm/dd/yyyy´,dtpIni.DateTime));
DATAFIN := (FormatDateTime(´mm/dd/yyyy´,dtpFin.DateTime +1));
dm.cdproducao.Close;
dm.dsProducao.CommandText :=
´DECLARE @ApontIni As DateTime,´+´ ´+
´@ApontFin As DateTime;´+´ ´+
´SET @ApontIni =´´´+DATAINI+´´´;´+´ ´+
´SET @ApontFin =´´´+DATAFIN+´´´;´+´ ´+
´SELECT A.* FROM CONSULTA_PRODUCAO A´+´ ´+
´where´+´ ´+
´(A.Apont_Date >=@ApontIni) and ´+´ ´+
´(A.Apont_Date <=@ApontFin)´+´ ´+
´and A.Apont_Status = ´´AP´´´+´ ´+
´order by A.Apont_Date desc´;
dm.cdproducao.Open;
ode os dtp são componentes de data TdateTime
dsprodução = datasource
E o script e para SQL Server...se vc utiliza outro banco não sei se funciona a forma de declarar as datas.
No geral a logica do seu script esta correta, não vejo nada de anormal.
Apenas no where coloque entre parentese cada clausula dos and.
Espero que te ajude
E.C.S
Gostei + 0
23/08/2007
Nasguone
para este tipode resultado vc teria que usar uma instrução de WITH ROLLUP ai sim vc teria numped por quantidade total de itens, pois os resultados seriam como um cubo.
Gostei + 0
23/08/2007
Marquinhospe
Gostei + 0
23/08/2007
Nasguone
, COUNT(*) AS´TOTAL GERAL ´
FROM tabela_pedidos A
where
A.Apont_Date >=´05/05/2007´ and A.Apont_Date <=´09/05/2007´
group by A.nped WITH ROLLUP
Order by A.nped DESC
tente usar este select para ver se reporta numped por totais de itens....
se sim basta vc incluir as clausulas que vc quiser
Gostei + 0
23/08/2007
Emerson Nascimento
begin with DtmContVendas.Query3 do begin Close; sql.Text := ´select codped, nped, clienteped, dataped, subtotal, desconto, totgeral, ´+ ´ produto, preco, qtditem, totiten, descricao ´+ ´from pedidos, clientes, itens, produtos ´+ ´where clientes.codcli = pedidos.codcli and itens.codpedido = pedidos.codpedido ´+ ´ and produtos.codproduto = itens.codproduto and extract(month from pedidos.dataped) = :mes ´+ ´ and extract(year from pedidos.dataped) = :ano ´+ ´order by pedidos.dataped ´; ParamByName(´mes´).asinteger := monthof(strtodate(dataini)); ParamByName(´ano´).asinteger := yearof(strtodate(dataini)); Open; if IsEmpty then ShowMessage(´Não há pedidos no mês´) else begin Application.CreateForm(TFrmrelpedmes,Frmrelpedmes); // cria o formulário Frmrelpedmes.qreprelpedmes.Preview; // exibe a consulta end; end; end;
Gostei + 0
23/08/2007
Emerson Nascimento
begin with DtmContVendas.Query3 do begin Close; sql.Text := ´select codped, nped, clienteped, dataped, subtotal, desconto, totgeral, ´+ ´ produto, preco, qtditem, totiten, descricao ´+ ´from pedidos, clientes, itens, produtos ´+ ´where clientes.codcli = pedidos.codcli and itens.codpedido = pedidos.codpedido ´+ ´ and produtos.codproduto = itens.codproduto and extract(month from pedidos.dataped) = :mes ´+ ´ and extract(year from pedidos.dataped) = :ano ´+ ´order by pedidos.dataped ´; ParamByName(´mes´).asinteger := monthof(strtodate(MASKEDIT1.TEXT)); ParamByName(´ano´).asinteger := yearof(strtodate(MASKEDIT1.TEXT)); Open; if IsEmpty then ShowMessage(´Não há pedidos no mês´) else begin Application.CreateForm(TFrmrelpedmes,Frmrelpedmes); // cria o formulário Frmrelpedmes.qreprelpedmes.Preview; // exibe a consulta end; end; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)