Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta Sql Com Periodo De Data


Guest - henrique -

Pergunta

Guest - henrique -

 
procedure Tfrmconsulta3.Button1Click(Sender: TObject);
var
  RECEBE,data1,data2:string;
begin
  recebe:= DBLookupComboBox1.Keyvalue;
  data1:= edit1.Text;
  data2:= edit2.Text;
   MessageDlg(data1, mtError, [mbOK], 0);
  with Query1 do
    begin
      close;
      with sql do
        begin
        clear;
        add('SELECT * FROM notas_fiscais where vendedor = '+ recebe +' and datanf datanf BETWEEN :dataini and :datafin;');
        end;
      Active:=True;
        ParamByName('dataini').AsDate := StrToDate(Data1);
  ParamByName('datafin').AsDate := StrToDate(Data2);
      open;
    end;
    end;

sou novo ainda em delphi e para a faculdade eu preciso de entregar um trabalho onde tenha uma consulta SQL

"quantidade vendida por um determinado vendedor num determinado periodo de datas"

help galera...

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
"quantidade vendida por um determinado vendedor num determinado periodo de datas"
O SQL ficaria com esta cara:

SELECT COUNT(vendedor) QTD_VENDAS_VENDEDOR

FROM notas_fiscais

WHERE vendedor = :vendedor AND datanf BETWEEN :dataini AND :datafin

*se vendedor for numérico, é mais conveniente definí-lo como parâmetro também

se fosse utilizar num relatório que liste todos os vendedores com a quantidade vendida, aí você deveria modificar um pouco, depende do que você irá querer. Talvez assim:

SELECT vendedor, COUNT(vendedor) QTD_VENDAS_VENDEDOR

FROM notas_fiscais

WHERE datanf BETWEEN :dataini AND :datafin

GROUP BY vendedor

* observe que sempre que você utilizar funções de agregação (COUNT, SUM, AVERAGE,...) na cláusula SELECT e houverem outros campos nela (neste exemple, vendedor), você deverá utilizar a cláusula GROUP BY com todos os campos da cláusula SELECT, exceto as funções de agregação (neste exemplo, COUNT(vendedor))

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

porque você usou o QTD_VENDAS_VENDEDOR???

não entendi

vendedor = :vendedor

estou usando o RECEBE, que pega o codvendedor

dai queria usar 2 edits para entrar com a data desejada para pesquisa...

precisoh de jogar essa consulta num DBGrid... e nada

Link para o comentário
Compartilhar em outros sites

  • 0
porque você usou o QTD_VENDAS_VENDEDOR???

não entendi

significa que o nome da coluna retornada pela query será QTD_VENDAS_VENDEDOR, apenas para ficar mais claro. Assim você depois utilizar Query1.FieldByName('QTD_VENDAS_VENDEDOR').Value se precisar manipular o resultado retornado, ou ainda, se você adicionar o field ao seu Query1, poderá utilizar o campo Query1QTD_VENDAS_VENDEDOR.Value o que é muito mais legível que aquele gerado ("aleatório") pelo SQL.

vendedor = :vendedor

estou usando o RECEBE, que pega o codvendedor

tudo bem, é só trocar :vendedor por RECEBE o importante é que passe o parâmetro corretamente:

ParamByName('vendedor').AsString:= recebe;

ou se você alterar o nome do parâmetro (tipo: vendedor = :RECEBE)

ParamByName('RECEBE').AsString := recebe;

economizando declaração de variáveis temporárias, poderia ser:

ParamByName('vendedor').Value := DBLookupComboBox1.Keyvalue;

no final, o importante são os dados passados corretamente, o nome que você dá pouco importa. Entretando, quanto mais significativo for, melhor.

Link para o comentário
Compartilhar em outros sites

  • 0

Ops...

Você quer contar quantas vendas o vendedor fez ou totalizar as quantidades vendidas por ele???

Se você quer contar quantas vezes ele vendeu, use a função Count.

Se deseja totalizar as quantidades (de cada NF, p.e.), use a funçao Sum.

Veja a diferença:

Na tabela de notas fiscais, o vendedor de código 1 tem estas vendas:

Vendedor/Quantidade/Valor

1/100/85

1/155/180

1/21/34

1/44/44

1/123/677

1/412/562

Agora veja:

select sum(quantidade) qtdetotal, sum(valor) valortotal, vendedor

from 'vendas.dbf'

group by vendedor

Produzirá:

qtdetotal/valortotal/vendedor

855/1582/1

select count(quantidade) quantasvendas, sum(valor) valortotal, vendedor

from 'vendas.dbf'

group by vendedor

Produzirá:

quantasvendas/valortotal/vendedor

1/1582/1

Ok?

Só mais uma dica!

Use o dbExplorer para experimentar estas queryes!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...