Pesquisa entre datas
Quero fazer uma pesquisa entre datas via SQL ou qualquer outro jeito. Tenho dois Maskedit’s de modo que especifiquem duas datas para o período da pesquisa.
Quero que no DBGrid apareça todas os registros com datas que estejam neste intervalo.
Como é que eu faço?
Qual a rotina?
Denysk
Quero que no DBGrid apareça todas os registros com datas que estejam neste intervalo.
Como é que eu faço?
Qual a rotina?
Denysk
Denysk
Curtidas 0
Respostas
Rjanuzzi
05/08/2003
Olá Denysk,
Eu já respondi 2 ou 3 perguntas sobre pesquisas com datas, dê uma pesquisada aí nas minhas menssagens q vc encontra.
rjanuzzi
Eu já respondi 2 ou 3 perguntas sobre pesquisas com datas, dê uma pesquisada aí nas minhas menssagens q vc encontra.
rjanuzzi
GOSTEI 0
Denysk
05/08/2003
Tudo bem q vc já tenha respondido, mas poderia responder outra vez? por favor, com detalhes.
GOSTEI 0
Lcarvalhoneto
05/08/2003
Cara, tente o seguinte:
no objeto Query, na propriedade SQL do tipo TStrings digite o seguinte:
select * from TABELA
where CAMPODATA between :DataInicial and :DataFinal
na propriedate Params configure a DataInicial e a Final para:
DataType = ftDate
ParamType = ptInput
no código da aplicação:
procedure .......
begin
Query1.Close;
Query1.ParamByName(´DataInicial´).AsString := mskDataInicial.Text;
Query1.ParamByName(´DataFinal´).AsString := mskDataFinal.Text;
Query1.Open;
end;
se for via ADO, o
Query1.Params.ParamByName(´DataInicial´).AsString := mskDataInicial.Text;
Espero ter ajudado OK?
no objeto Query, na propriedade SQL do tipo TStrings digite o seguinte:
select * from TABELA
where CAMPODATA between :DataInicial and :DataFinal
na propriedate Params configure a DataInicial e a Final para:
DataType = ftDate
ParamType = ptInput
no código da aplicação:
procedure .......
begin
Query1.Close;
Query1.ParamByName(´DataInicial´).AsString := mskDataInicial.Text;
Query1.ParamByName(´DataFinal´).AsString := mskDataFinal.Text;
Query1.Open;
end;
se for via ADO, o
Query1.Params.ParamByName(´DataInicial´).AsString := mskDataInicial.Text;
Espero ter ajudado OK?
GOSTEI 0
Denysk
05/08/2003
Amigo Carvalhoneto valeu pela ajuda.
Só tive uma pequena dificuldade, mas que nao tira o mérito de sua ajuda.
Em vez de .AsString tem que ser .AsDate e mudar o tipo do MaskEdit.
Query1.Close;
Query1.ParamByName(´DataInicial´).AsDate := strtodate(MaskEdit1.text);
Query1.ParamByName(´DataFinal´).AsDate := strtodate(MaskEdit2.text);
Query1.Open;
Valeu mesmo.
A propósito estou com um outro problema se puderes dar uma mão, fico muito agradecido.
Na mesma pesquisa quando clico no botao se o MaskEdit que esta mascarado para o formato data estiver preenchido apenas com o dia e o mês dá erro.
Como posso corrigir isso?
Só tive uma pequena dificuldade, mas que nao tira o mérito de sua ajuda.
Em vez de .AsString tem que ser .AsDate e mudar o tipo do MaskEdit.
Query1.Close;
Query1.ParamByName(´DataInicial´).AsDate := strtodate(MaskEdit1.text);
Query1.ParamByName(´DataFinal´).AsDate := strtodate(MaskEdit2.text);
Query1.Open;
Valeu mesmo.
A propósito estou com um outro problema se puderes dar uma mão, fico muito agradecido.
Na mesma pesquisa quando clico no botao se o MaskEdit que esta mascarado para o formato data estiver preenchido apenas com o dia e o mês dá erro.
Como posso corrigir isso?
GOSTEI 0
Lcarvalhoneto
05/08/2003
Amigo Carvalhoneto valeu pela ajuda.
Só tive uma pequena dificuldade, mas que nao tira o mérito de sua ajuda.
Em vez de .AsString tem que ser .AsDate e mudar o tipo do MaskEdit.
Query1.Close;
Query1.ParamByName(´DataInicial´).AsDate := strtodate(MaskEdit1.text);
Query1.ParamByName(´DataFinal´).AsDate := strtodate(MaskEdit2.text);
Query1.Open;
Valeu mesmo.
A propósito estou com um outro problema se puderes dar uma mão, fico muito agradecido.
Na mesma pesquisa quando clico no botao se o MaskEdit que esta mascarado para o formato data estiver preenchido apenas com o dia e o mês dá erro.
Como posso corrigir isso?
Não necessariamente colega, pois da forma que eu te falei, vc não precisaria converter o seu MaskEdit p/ o tipo Date, OK?
O parametro é do tipo Date, mas nada impede que vc passe ele como .AsString para que não precise converter o MaskEdit. Faça o teste p/ vc ver!
Query1.ParamByName(´DataInicial´).AsString := MaskEdit1.text;
-------------------------------------------------------------------------
OK, agora p/ tratarmos a data, temos várias formas, vou citar 2 delas OK?
1º - Ao invés de utilizar o componente MaskEdit, por que vc não usa o componente TDateTimePicker que fica na paleta Win32.
2º - Trate o erro que o Delphi retorna. Ex:
------------------------------------------------------------
procedure ....
var Data : TDateTime;
begin
try
Data := StrToDateTime(MaskEdit1.Text);
except
ShowMessage(´Data Inválida !!!´)
end;
end;
------------------------------------------------------------
Lembre-se, quando vc estiver rodando o programa pelo Delphi, ele retornará o mesmo erro. Quando vc estiver rodando somente o .exe, aí sim ele deiaxa de dar a msg de erro do Delphi e mostra somente a sua...
Espero ter ajudado!
GOSTEI 0