GARANTIR DESCONTO

Fórum Consulta de vendas de um funcionario #131005

24/03/2010

0

preciso fazer uma consulta entre datas, para saber o que o funcionario vendeu no periodo...   no meu formulario tenho um dbgrid com 2 caixa de texto que serao informadas as datas de inicio e fim.   o campo data vai ser comparada com ela msm...   tenho esse codigo....   procedure Tfuncionario.Button1Click(Sender: TObject);
var
sql:string; begin
sql:='select saidas.vendedor, saidas.codigo, saidas.quantidade, vendas.valor, vendas.data from SAIDAS, VENDAS'+ ' where vendas.data between:pinicial and :pfinal';
    if editfun.Text <> '' then      sql:= sql + ' and funcionario='+QuotedStr(editfun.Text);     dm.cdsfunc.Close;
  dm.cdsfunc.CommandText:=sql;   dm.cdsfunc.Params[0].AsDate:=strtodate(funInicial.Text);
  dm.cdsfunc.Params[1].AsDate:=strtodate(funFinal.text);
  dm.cdsfunc.Open;
end;   esta consulta está travando meu programa, até q eu acabo fechando.       os campos que preciso das tabelas são       tabela vendas   data   valor       tabela saidas   codigo do produto   quantidade   vendedor     alguem poderia me ajudar?  teriao uma sugestao de consulta?  
Thiago Silva

Thiago Silva

Responder

Posts

24/03/2010

Thiago Santana

Chará faça o seguinte! Poste aí a estrutura completa das suas tabelas informando quais são as chaves primárias, para que possamos efetuar tua consulta!
E informe os campos desejados na consulta...   AbraçoO
Responder

Gostei + 0

24/03/2010

Thiago Silva

Chará faça o seguinte! Poste aí a estrutura completa das suas tabelas informando quais são as chaves primárias, para que possamos efetuar tua consulta!
E informe os campos desejados na consulta...   AbraçoO
      Saidas   venda fk(codigo da tabela Vendas)
codigo fk(codigo da tabela produtos)
quantidade
vendedor pk(codigo da tabela funcionário)     Vendas codigo Pk valor
data
quero selecionar   codigo, quantidade, vendedor, valor, data quando o funcionário tal for informado
Responder

Gostei + 0

24/03/2010

Thiago Santana

Chará acho melhor vc renomear melhor os campos das suas tabela, pois futuramente vc poderá se complicar...
Para que um campo seja chave estrangeira ele deverá conter o mesmo nome da chave primária da tabela que será herdada!
Exemplo Tabela Vendas:
CODVENDA (PK)
VALOR_VENDA
DATA_VENDA
CODPRODUTO(FK) TABELA SAIDA
CODVENDA(FK)
QTD_SAIDA
CODVENDEDOR(FK) TABELA VENDEDOR
CODVENDEDOR(PK)
NOME_VENDEDOR
ENDERECO_VENDEDOR TABELA PRODUTOS
CODPRODUTO (PK)
NOME_PRODUTO
VALOR_PRODUTO Aí o seu select para gerar todos os registros será esse aqui abaixo:
select
    saida.codvenda,
    saida.qtd_saida,
    vendas.data_venda,
    produtos.nome_produto,
    produtos.valor_produto,
    vendedor.nome_vendendor
from saida
   inner join vendas on (saida.codvenda = vendas.codvenda)
   inner join produtos on (vendas.codproduto = produtos.codproduto)
   inner join funcionario on (saida.codvendedor = vendedor.codvendedor)   Assim será bem mais fácil de vc fazer oq deseja!
Espero ter ajudado
Responder

Gostei + 0

24/03/2010

Thiago Santana

Aí seu código depois do banco de dados ajustado deve ficar assim:

procedure Tfuncionario.Button1Click(Sender: TObject);
var
sql:string;
begin
sql:='select saida.codvenda, saida.qtd_saida, vendas.data_venda, produtos.nome_produto, produtos.valor_produto, vendedor.nome_vendedor '+ ' where vendas.data_vendas between:pinicial and :pfinal';
 
  if editfun.Text <> '' then
     sql:= sql + ' and vendedor.nome_vendedor  ='+QuotedStr(editfun.Text);
 
dm.cdsfunc.Close;
  dm.cdsfunc.CommandText:=sql;
  dm.cdsfunc.Params[0].AsDate:=strtodate(funInicial.Text);
  dm.cdsfunc.Params[1].AsDate:=strtodate(funFinal.text);
  dm.cdsfunc.Open;
end;
Confere o SQL deste código aqui pq não testei com o SQL certo que te passei no poste passado! Espero ter ajudado!
Qualquer dúvida posta aí...
AbraçoO
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar