Consulta de vendas de um funcionario
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?
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
Curtidas 0
Respostas
Thiago Santana
24/03/2010
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
E informe os campos desejados na consulta... AbraçoO
GOSTEI 0
Thiago Silva
24/03/2010
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)E informe os campos desejados na consulta... AbraçoO
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
GOSTEI 0
Thiago Santana
24/03/2010
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
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
GOSTEI 0
Thiago Santana
24/03/2010
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
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
GOSTEI 0