Fórum EXIBIR SÓ AS VENDAS FEITAS NAQUELE DIA #371984

04/07/2009

0

Boa tarde, Amigos


Estou desenvolvendo um sistema de vendas mas presciso que e fiz um form onde o usuário teria um tela onde será exibido a data e as vendas naquele dia. Mas infelizmente não tenho noção de como poderia proceder.


Fiz uma tabela chamada formpag e nela coloquei além das formas de pagamento um campo data que esta interagindo com outro campo data da tabela venda.


Ai na quando se faz uma venda ele da um StrToDate (now) e grava a data nas respectivas tabelas mas quando vou lá no resumo e abro o dbgrid mostrar todas as vendas e não só daquele dia.


Fabiosus

Fabiosus

Responder

Posts

04/07/2009

Lightshine

Você terá que fazer uma consulta sql para exibir apenas as vendas com a data corrente. No oncreate ou no on Show do formulário de resumo você filtra os dados da tabela.

Query.close;
Query.SQL. Clear;
Query.SQL.Add(´Select * from NomeTabela´);
Query.SQL.Add(´Where DATAPAGTO = :Data´);
Query.SQL.ParamByName(´Data´).asDate := Date();
Query.Open;

E liga o dbgrid a está consulta. (SQLQuery, IBQuery, Query... enfim, ao componente que vc está utilizando).

Assim só será apresentadas as vendas cujo DATAPAGTO for igual a data corrente.

Respodi de forma bem generica essa pergunta, caso ainda reste duvidas, preciso de mais dados para auxiliá-lo. Como:
Qual o banco de dados vc utiliza?
Qual paleta de componentes vc usa para acesso aos dados?
Passa tbm a estrutura da tabela que onde vc salva as vendas.
Só ressaltando, que não estou com o delphi aberto e nem testei o codigo, dei apenas um exemplo de como você deverá fazer, tento que adaptá-lo ao seu projeto.

Lightshine


Responder

Gostei + 0

06/07/2009

Fabiosus

Bom dia tentei fazer aqui em meu formulário mas a 5 linha não esta mostrando a opção: ´Query.SQL.ParamByName(´Data´).asDate := Date(); ´

Pq será que não aparece o ParamByName?

Estou utilizando da paleta ADO o ADOQUERY e o BD é ACCESS.


datamodule1.QData.Close;
datamodule1.QData.SQL.Clear;
datamodule1.QData.SQL.Add(´Select * from data´);
datamodule1.QData.SQL.Add(´Where data =:data´);

datamodule1.QData.SQL.
datamodule1.QData.Close;


Responder

Gostei + 0

06/07/2009

Emerson Nascimento

a linha da passagem de valor para o parâmetro não deve ter o .SQL.

o correto é:

Query.ParamByName(´Data´).asDate := Date();


Responder

Gostei + 0

06/07/2009

Fabiosus

Boa tarde.

Fiz como assim:

datamodule1.QData.Parameters.ParamByName(´data´)


Quando chamei parameters. ai sim veio o ParamByname só que no que coloquei o (´data´) ele não aparece depois o asdate := date();


e da erro undeclared indetifiquer: AsDate.


Responder

Gostei + 0

07/07/2009

Lightshine

Tenta assim:

Query.Parameters.ParamByName(´Data´).Value := Date();

Lightshine


Responder

Gostei + 0

12/07/2009

Fabiosus

Obrigado Lightshine.



Graças a sua ajuda comsegui solucionar esta dúvida.

Bom o código ficou assim para quem precisar:

Eu fiz um form aonde coloquei 4 dbgrid e em cada um deles o nº do cupom e a data assim:

DBGRI1:
CUPOM/ DATA DA VENDA / DINHEIRO
DBGRI2
CUPOM/ DATA DA VENDA / CARTÃO DE DEBITO
DBGRI3
CUPOM/ DATA DA VENDA / CARTÃO DE CRÉDITO
DBGRI4
CUPOM/ DATA DA VENDA / CHEQUE

Ai em onshow Eu coloquei o seguinte código


procedure ResumoVendas.FormShow(Sender: TObject);
begin
datamodule1.Qpaga.Close;
datamodule1.Qpaga.SQL.Clear;
datamodule1.Qpaga.SQL.Add(´Select * from formPagamento´);
datamodule1.Qpaga.SQL.Add(´Where data_venda = :data_venda´);
datamodule1.Qpaga.Parameters.ParamByName(´data_venda´).Value := date ();
datamodule1.Qpaga.Open;
end;


Muito obrigado


Responder

Gostei + 0

12/07/2009

Cruyahoo

Aproveitando o título do tópico segue esta procedure muito útil que desenvolvi para quem for filtrar Tables.

{Filtra no periodo, registros com campo data ,assignados ou nao ou todos no periodo}
{OBS. O único diferenciador é a tupla > para Assig, e < para NaoAssig, em so 2 pontos da funcao}
procedure FiltraDataAssign(Tabela:Tdataset;edInicio,edFim:TDate;DataPeriodo,DataAssign,Situacao:string);
// edInicio e edFim : pode ser um DateTimePicker
// DataPeriodo : Informar a data que o filtro vai enxergar em formato de string
// DataAssignada : Informar a data que estará ou nao preenchida Ex. dia que pagou. Tambem em formato string ´01/02/2009´
// Situação : Informar ´Assig´ p/ data assignada e ´NaoAssig´ p/ data nao assignada. Ou apenas todos os registros no periodo lido por DataIni e DataFim.

var tupla,VedInicio,VedFim : string;
begin
VedInicio:=DateToStr(edInicio);
VedFim:=DateToStr(edFim);
{Seleciona tupla que diferencia situacao em dois pontos da funcao}
If situacao = ´Assig´ then tupla:=´>´;//Assignado é preenchido
If situacao = ´NaoAssig´ then tupla:=´<´;// Não preenchido
// ´TodosNoPeriodo´ = Ver no if relacionado abaixo;

Tabela.Filtered:=False;

{Se estiver preenchido}
if (edInicio <> null) and (edFim <> null) then
//Se for geral do periodo
if situacao=´TodosNoPeriodo´ then
begin
Tabela.Filter:=DataPeriodo+ ´>=´ +QuotedStr(VedInicio)+ ´ and ´ +DataPeriodo+ ´<=´ +QuotedStr(VedFim);
end
else //Se for Assignado ou Nao Assignado
begin
Tabela.Filter:=DataPeriodo+ ´>=´ +QuotedStr(VedInicio)+ ´ and ´ + DataPeriodo+ ´<=´+QuotedStr(VedFim)+´ and ´ +DataAssign+tupla +QuotedStr(´01/01/1990´);//ou data que nao exista na base
end
{Se estiver em branco}
else
Tabela.Filter:=DataAssign+tupla + QuotedStr(´01/01/1990´);

Tabela.filtered:=True;

end;

Esta procedure elimina todo trabalho braçal de ficar compondo filtros,
separados, em caso deste tipo de filtro que abrange um determinado range de datas, e ainda checando se o campo de maior relevancia foi ou
nao assignado.

Espero que seja util


Responder

Gostei + 0

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

Aceitar