ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Otimizar a busca

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Adsonstm
Novato
Novato


Registrado: Sexta-Feira, 30 de Abril de 2010
Mensagens: 88

MensagemEnviada: Qui Mar 03, 2016 12:53 am    Assunto: Otimizar a busca Responder com Citação

Boa Noite Pessoal !!

Uma vez ouvi falar que exite pelo menos duas maneiras de fazer alguma coisa a certa e a errada e entre essas duas exitem uma infinidade de possibilidades entao pesso que alguem me der uma forcinha se possivel com esse codigo ele ta fucionando mas demora muito desde ja agradeço a força

Código:

procedure TForm1.BitBtn1Click(Sender: TObject);
var i :Integer;
begin

 with qprod do
  begin
    close;
    sql.Clear;
    sql.Add(' Select p.ordem, p.codigo, p.nome,  p.ordem_fornecedor1, p.ordem_fornecedor2, p.ordem_fornecedor3, p.ordem_fornecedor4, p.ordem_fornecedor5, ');
    sql.Add(' a.ordem_prod_serv, a.ordem_tabela_preco,  a.preco, e.ordem_filial, e.ordem_prod_serv, sum(e.qtde_estoque_atual)estq');
    sql.Add('From prod_serv p inner join Prod_serv_precos a on p.ordem = a.ordem_prod_serv');
    sql.Add('inner join estoque_atual e on p.ordem = e.ordem_prod_serv  ');
    sql.Add(' Where  e.ordem_filial =:vfil and a.ordem_tabela_preco =:vtab and ');
    sql.Add(' (p.ordem_fornecedor1 =:vcod or p.ordem_fornecedor2 =:vcod2 or ');
    sql.Add(' p.ordem_fornecedor3 =:vcod3 or p.ordem_fornecedor4 =:vcod4 or ');
    sql.Add(' p.ordem_fornecedor5 =:vcod5) and a.preco >:vpreco');
    sql.Add(' group by e.ordem_prod_serv , p.nome, p.ordem, p.codigo, p.ordem_fornecedor1,');
    sql.Add(' p.ordem_fornecedor2, p.ordem_fornecedor3,');
    sql.Add(' p.ordem_fornecedor4, p.ordem_fornecedor5, a.ordem_prod_serv, a.ordem_tabela_preco,');
    sql.Add(' a.preco, e.ordem_filial');
    sql.Add('order by p.nome');
    Parameters.ParamByName('vcod').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod2').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod3').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod4').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod5').Value := QForOrdem.Value;
    Parameters.ParamByName('vpreco').Value := QProdpreco.Value;
    Parameters.ParamByName('vfil').Value := LbF.Caption;
    Parameters.ParamByName('vtab').Value := LbP.Caption;
    open;
    end;
   Label1.Caption := IntToStr(qprod.RecordCount);
   i := 0;
   ProgressBar1.Max := QProd.RecordCount;

   while not QProd.Eof do
   begin
      i := i + 1;
      ProgressBar1.Position := i;
     if m1.Text <> '' then
     begin
      with q1 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M1.Text;
              Parameters.ParamByName('vano').Value := A1.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m2.Text <> '' then
      begin
      with q2 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M2.Text;
              Parameters.ParamByName('vano').Value := A2.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m3.Text <> '' then
      begin
      with q3 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M3.Text;
              Parameters.ParamByName('vano').Value := A3.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m4.Text <> '' then
      begin
      with q4 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M4.Text;
              Parameters.ParamByName('vano').Value := A4.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m5.Text <> '' then
      begin
             with q5 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M5.Text;
              Parameters.ParamByName('vano').Value := A5.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m6.Text <> '' then
      begin
            with q6 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M6.Text;
              Parameters.ParamByName('vano').Value := A6.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m7.Text <> '' then
      begin
            with q7 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M7.Text;
              Parameters.ParamByName('vano').Value := A7.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m8.Text <> '' then
      begin
          with q8 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M8.Text;
              Parameters.ParamByName('vano').Value := A8.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m9.Text <> '' then
      begin
          with q9 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M9.Text;
              Parameters.ParamByName('vano').Value := A9.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m10.Text <> '' then
      begin
      with q10 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M10.Text;
              Parameters.ParamByName('vano').Value := A10.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m11.Text <> '' then
      begin
      with q11 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M11.Text;
              Parameters.ParamByName('vano').Value := A11.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
      if m12.Text <> '' then
      begin
      with q12 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := M12.Text;
              Parameters.ParamByName('vano').Value := A12.Text;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
              CdsVnd.Append;
              CDSVndCodFor.Value := QForcodigo.AsString;
              CdsVndFor.Value := QForNome.Value;
              CDSVndcod.Value := QProdcodigo.value;
              CDSVndprod.Value := QProdnome.Value;
              CDSVndEstq.Value := CurrToStr(QProdestq.Value);
              CDSVndPreco.Value := CurrToStr(QProdpreco.Value);
              CDSVndv1.Value := CurrToStr(Q1Vnd.Value);
              CDSVNDV2.Value := CurrToStr(Q2Vnd.Value);
              CdsVndV3.Value := CurrToStr(Q3VND.Value);
              CDSVNDV4.Value := CurrToStr(Q4Vnd.Value);
              cdsvndv5.Value := CurrToStr(Q5Vnd.Value);
              cdsvndv6.Value := CurrToStr(q6vnd.Value);
              cdsvndv7.Value := CurrToStr(q7vnd.Value);
              cdsvndv8.Value := CurrToStr(q8vnd.Value);
              cdsvndv9.Value := CurrToStr(q9vnd.Value);
              cdsvndv10.Value := CurrToStr(q10vnd.Value);
              cdsvndv11.Value := CurrToStr(q11vnd.Value);
              cdsvndv12.Value := CurrToStr(q12vnd.Value);
              Cdsvnd.Post;
      QProd.Next;
   end;

     RvProject1.Execute;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qui Mar 03, 2016 8:25 am    Assunto: Responder com Citação

uma das coisas q ajudam a performance sao indices.

qual bd vc ta usando?

se for mysql, vc pode por o comando EXPLAIN antes do SELECT pra ver onde ta o gargalo, assim:

Código:
EXPLAIN SELECT ... INNER JOIN .... WHERE ...


mas exatamente onde ta demorando? de mais detalhes[/code]
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Adsonstm
Novato
Novato


Registrado: Sexta-Feira, 30 de Abril de 2010
Mensagens: 88

MensagemEnviada: Qui Mar 03, 2016 8:36 am    Assunto: Responder com Citação

Estou usando sql server a demora a na busca das vendas dentro do while

o cod atual estar assim

Código:

unit UCompras;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Mask, StdCtrls, Buttons, Grids, DBGrids, DB, DBCtrls, ADODB,
  ComCtrls, RpCon, RpConDS, RpDefine, RpRave, DBClient;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    DBGrid1: TDBGrid;
    BitBtn1: TBitBtn;
    ADOConnection1: TADOConnection;
    QProd: TADOQuery;
    QFor: TADOQuery;
    QForordem: TAutoIncField;
    QForcodigo: TLargeintField;
    QFornome: TStringField;
    DBEdit1: TDBEdit;
    DsFor: TDataSource;
    QProdcodigo: TStringField;
    QProdnome: TStringField;
    QProdpreco: TBCDField;
    QProdestq: TBCDField;
    DsProd: TDataSource;
    Q1: TADOQuery;
    LbP: TLabel;
    LbF: TLabel;
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    M1: TEdit;
    A1: TEdit;
    LabOp: TLabel;
    Q1Vnd: TBCDField;
    RvProject1: TRvProject;
    RvDataSetConnection1: TRvDataSetConnection;
    CDSVnd: TClientDataSet;
    DSVnd: TDataSource;
    CDSVndCodFor: TStringField;
    CDSVndFor: TStringField;
    CDSVndcod: TStringField;
    CDSVndprod: TStringField;
    CDSVndEstq: TStringField;
    CDSVndPreco: TStringField;
    CDSVndv1: TStringField;
    CDSVndv2: TStringField;
    CDSVndv3: TStringField;
    CDSVndv4: TStringField;
    CDSVndv5: TStringField;
    CDSVndv6: TStringField;
    CDSVndv7: TStringField;
    CDSVndv8: TStringField;
    CDSVndv9: TStringField;
    CDSVndv10: TStringField;
    CDSVndv11: TStringField;
    CDSVndv12: TStringField;
    DBGrid2: TDBGrid;
    Q2: TADOQuery;
    Q3: TADOQuery;
    Q4: TADOQuery;
    Q5: TADOQuery;
    Q6: TADOQuery;
    Q7: TADOQuery;
    Q8: TADOQuery;
    Q9: TADOQuery;
    Q10: TADOQuery;
    Q11: TADOQuery;
    Q12: TADOQuery;
    Q2Vnd: TBCDField;
    Q3Vnd: TBCDField;
    Q4Vnd: TBCDField;
    Q5Vnd: TBCDField;
    Q6Vnd: TBCDField;
    Q7Vnd: TBCDField;
    Q8Vnd: TBCDField;
    Q9Vnd: TBCDField;
    Q10Vnd: TBCDField;
    Q11Vnd: TBCDField;
    Q12Vnd: TBCDField;
    DBGrid3: TDBGrid;
    DSData: TDataSource;
    BitBtn2: TBitBtn;
    CDSData: TClientDataSet;
    CDSDatalinha: TIntegerField;
    CDSDataVM: TStringField;
    CDSDataVA: TStringField;
    procedure Edit1Exit(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses DateUtils;

{$R *.dfm}

procedure TForm1.Edit1Exit(Sender: TObject);
begin
   if Edit1.Text <> '' then
   begin
      with QFor do
        begin
            close;
            Parameters[0].Value := Edit1.Text;
            open;
        end;
   end;
   if Edit1.Text = '' then
   begin
       QFor.Close;
   end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var i :Integer;
begin

 with qprod do
  begin
    close;
    sql.Clear;
    sql.Add(' Select p.ordem, p.codigo, p.nome,  p.ordem_fornecedor1, p.ordem_fornecedor2, p.ordem_fornecedor3, p.ordem_fornecedor4, p.ordem_fornecedor5, ');
    sql.Add(' a.ordem_prod_serv, a.ordem_tabela_preco,  a.preco, e.ordem_filial, e.ordem_prod_serv, sum(e.qtde_estoque_atual)estq');
    sql.Add('From prod_serv p inner join Prod_serv_precos a on p.ordem = a.ordem_prod_serv');
    sql.Add('inner join estoque_atual e on p.ordem = e.ordem_prod_serv  ');
    sql.Add(' Where  e.ordem_filial =:vfil and a.ordem_tabela_preco =:vtab and ');
    sql.Add(' (p.ordem_fornecedor1 =:vcod or p.ordem_fornecedor2 =:vcod2 or ');
    sql.Add(' p.ordem_fornecedor3 =:vcod3 or p.ordem_fornecedor4 =:vcod4 or ');
    sql.Add(' p.ordem_fornecedor5 =:vcod5) and a.preco >:vpreco');
    sql.Add(' group by e.ordem_prod_serv , p.nome, p.ordem, p.codigo, p.ordem_fornecedor1,');
    sql.Add(' p.ordem_fornecedor2, p.ordem_fornecedor3,');
    sql.Add(' p.ordem_fornecedor4, p.ordem_fornecedor5, a.ordem_prod_serv, a.ordem_tabela_preco,');
    sql.Add(' a.preco, e.ordem_filial');
    sql.Add('order by p.nome');
    Parameters.ParamByName('vcod').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod2').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod3').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod4').Value := QForOrdem.Value;
    Parameters.ParamByName('vcod5').Value := QForOrdem.Value;
    Parameters.ParamByName('vpreco').Value := QProdpreco.Value;
    Parameters.ParamByName('vfil').Value := LbF.Caption;
    Parameters.ParamByName('vtab').Value := LbP.Caption;
    open;
    end;
   Label1.Caption := IntToStr(qprod.RecordCount);
   i := 0;
   ProgressBar1.Max := QProd.RecordCount;

   while not QProd.Eof do
   begin
      i := i + 1;
      ProgressBar1.Position := i;

     CDSData.First;
     begin
      with q1 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      CDSData.Next;


      with q2 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
            CDSData.Next;
      with q3 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDatavm.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      CDSData.Next;

      with q4 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
         CDSData.Next;

      with q5 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
            CDSData.Next;
      with q6 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
            CDSData.Next;
      with q7 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
         CDSData.Next;
      with q8 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
           CDSData.Next;
      with q9 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
         CDSData.Next;
      with q10 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
              CDSData.Next;
      with q11 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
            CDSData.Next;
      with q12 do
      begin
        close;
              sql.Clear;
              sql.Add('Select codigo, p.nome, ');
              sql.Add(' Sum(S.Quantidade)as Vnd ');
              sql.Add('From Movimento M Inner Join  Movimento_Prod_Serv S on  M.Ordem = S.Ordem_Movimento inner Join Prod_Serv P on P.Ordem = S.Ordem_Prod_Serv');
              sql.Add(' Where p.codigo =:VCod and M.ordem_filial =:vfil and m.tipo_operacao =:vop and ');
              sql.Add('Month(m.data) =:vmes and year(m.data) =:Vano and m.desefetivado_financeiro =:dEf and m.efetivado_financeiro =:Vef and s.linha_excluida =:vlin ');
              sql.Add('Group By p.Nome, p.codigo, m.data');
              SQL.Add('Order By p.Nome');
              Parameters.ParamByName('VCod').Value := QProdcodigo.Value;
              Parameters.ParamByName('vmes').Value := CDSDataVM.Value;
              Parameters.ParamByName('vano').Value := CDSDataVA.Value;
              Parameters.ParamByName('vlin').Value := false;
              Parameters.ParamByName('VEf').Value := true;
              Parameters.ParamByName('def').Value := false;
              Parameters.ParamByName('vop').Value := LabOp.Caption;
              Parameters.ParamByName('vfil').Value := LbF.Caption;
              open;
      end;
      end;
              CdsVnd.Append;
              CDSVndCodFor.Value := QForcodigo.AsString;
              CdsVndFor.Value := QForNome.Value;
              CDSVndcod.Value := QProdcodigo.value;
              CDSVndprod.Value := QProdnome.Value;
              CDSVndEstq.Value := CurrToStr(QProdestq.Value);
              CDSVndPreco.Value := CurrToStr(QProdpreco.Value);
              CDSVndv1.Value := CurrToStr(Q1Vnd.Value);
              CDSVNDV2.Value := CurrToStr(Q2Vnd.Value);
              CdsVndV3.Value := CurrToStr(Q3VND.Value);
              CDSVNDV4.Value := CurrToStr(Q4Vnd.Value);
              cdsvndv5.Value := CurrToStr(Q5Vnd.Value);
              cdsvndv6.Value := CurrToStr(q6vnd.Value);
              cdsvndv7.Value := CurrToStr(q7vnd.Value);
              cdsvndv8.Value := CurrToStr(q8vnd.Value);
              cdsvndv9.Value := CurrToStr(q9vnd.Value);
              cdsvndv10.Value := CurrToStr(q10vnd.Value);
              cdsvndv11.Value := CurrToStr(q11vnd.Value);
              cdsvndv12.Value := CurrToStr(q12vnd.Value);
              Cdsvnd.Post;
      QProd.Next;
   end;

     RvProject1.Execute;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var a :Integer;
begin
a := a+1;
  begin

  CdsData.Append;
  CdsDatalinha.Value := a;
  CdsdataVM.Value := m1.Text;
  CDSDataVA.Value := A1.Text;
  CdsData.post;
  cdsdata.Next;
  end;
     M1.SetFocus;


     end;

end.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB