Busca resultado sobre intervalo de datas.
Pessoal, preciso fazer um tipo de busca por datas mais são dois campos diferentes
Os campos
Referencia1
Referencia2
Então no form tenho dois jvDateEdits
Data Inicial e Data Final
E um SQL de busca assim
Mais neste caso ai, só me retorna a busca caso seja exato o valor passado para o parametro. Ou seja se no banco esta gravado assim
E eu fizer por este select a busca de 01/12/2008 a 31/12/2008
Só vai me trazer o resultado assim
Então precisaria que ao digitar no edit a referencia de 01/12/2008 a 31/12/2008, me trazer o resultado assim:
Ou seja tudo que esta no mes 12/2008
Se digitar assim no jvDateEdits 01/12/2008 a 17/12/2008
Se digitar assim no jvDateEdits 01/12/2008 a 23/12/2008
Não sei se entenderam, mais é isso que eu preciso.
Uso o FB 2.0
Os campos
Referencia1
Referencia2
Então no form tenho dois jvDateEdits
Data Inicial e Data Final
E um SQL de busca assim
with dm.ibMovimentos do
begin
DisableControls;
Close;
SelectSQL.Text := ´ select * from movimento ´+
´ where referencia1 = :pref1 ´+
´ and referencia2 = :pref2 ´+
´ and cod_empresa = :pcdempr ´;
ParamByName(´pref1´).asDate := JvDateEdit1.Date;
ParamByName(´pref2´).asDate := JvDateEdit2.Date;
ParamByName(´pcdempr´).asString := dsListEmpresas.DataSet.FieldByName(´cdempresa´).AsString;
Open;
{Traz o resultado no label da quantidade de registros}
FetchAll;
label12.Caption := ´Quantidade de Registros: ´+ IntToStr(RecordCount);
EnableControls;
end;Mais neste caso ai, só me retorna a busca caso seja exato o valor passado para o parametro. Ou seja se no banco esta gravado assim
Referencia1--------Referencia2
01/11/2008--------17/11/2008
15/11/2008--------30/11/2008
01/12/2008--------31/12/2008
01/12/2008--------20/12/2008
05/12/2008--------15/12/2008
E eu fizer por este select a busca de 01/12/2008 a 31/12/2008
Só vai me trazer o resultado assim
Referencia1--------Referencia2
01/12/2008--------31/12/2008
Então precisaria que ao digitar no edit a referencia de 01/12/2008 a 31/12/2008, me trazer o resultado assim:
Referencia1--------Referencia2
01/12/2008--------31/12/2008
01/12/2008--------20/12/2008
05/12/2008--------15/12/2008
Ou seja tudo que esta no mes 12/2008
Se digitar assim no jvDateEdits 01/12/2008 a 17/12/2008
Referencia1--------Referencia2
05/12/2008--------15/12/2008
Se digitar assim no jvDateEdits 01/12/2008 a 23/12/2008
Referencia1--------Referencia2
01/12/2008--------20/12/2008
05/12/2008--------15/12/2008
Não sei se entenderam, mais é isso que eu preciso.
Uso o FB 2.0
Adriano_servitec
Curtidas 0
Respostas
Adriano_servitec
31/12/2008
Estranho que usando o simbolo maior e menor, não esta dando certo, olhem
No aplicativo
Não traz o resultado corretamente
No ibexpert
traz o resultado corretamente
Será que tem algo errado?
No aplicativo
with dm.ibMovimentos do
begin
DisableControls;
Close;
SelectSQL.Text := ´ select * from movimento ´+
´ where referencia1 >= :pref1 ´+
´ and referencia2 <= :pref2 ´+
´ and cod_empresa = :pcdempr ´;
ParamByName(´pref1´).asDate := JvDateEdit1.Date;
ParamByName(´pref2´).asDate := JvDateEdit2.Date;
ParamByName(´pcdempr´).asString := dsListEmpresas.DataSet.FieldByName(´cdempresa´).AsString;
Open;
{Traz o resultado no label da quantidade de registros}
FetchAll;
label12.Caption := ´Quantidade de Registros: ´+ IntToStr(RecordCount);
EnableControls;
end;Não traz o resultado corretamente
No ibexpert
select * from movimento where referencia1 >= :pref1 and referencia2 <= :pref2 and cod_empresa = :pcdempr
traz o resultado corretamente
Será que tem algo errado?
GOSTEI 0
Adriano_servitec
31/12/2008
Engraçado que traz o resultado aqui no label
[b:0c0fa69fed]label12.Caption := ´Quantidade de Registros: ´+ IntToStr(RecordCount); [/b:0c0fa69fed]
Mais não aparece na grid, agora se eu colocar de 01/11/08 a 30/11/08 tenho 5 resultados e na grid apareçe apenas os que estao de 01/11/08 a 30/11/08 que são apenas 2.
O problema aqui que eu vi não é o resultado, e sim é que não esta aparecendo no grid.
[b:0c0fa69fed]label12.Caption := ´Quantidade de Registros: ´+ IntToStr(RecordCount); [/b:0c0fa69fed]
Mais não aparece na grid, agora se eu colocar de 01/11/08 a 30/11/08 tenho 5 resultados e na grid apareçe apenas os que estao de 01/11/08 a 30/11/08 que são apenas 2.
O problema aqui que eu vi não é o resultado, e sim é que não esta aparecendo no grid.
GOSTEI 0
Adriano_servitec
31/12/2008
Pessoal ainda não consegui resolver isso, ja troquei de dbgrid pra ver e nada também, fiz um comando de refresh no grid e nada tambem, fechei e abri a tabela depois da consulta e nada também.
Eu não entendo se no recordcount esta contando certo pq no dbgrid não mostra certo?
A mesma SQL no ibExpert traz certo e no dbgrid insiste em me errado.
Olhem bem
Se tenho na tabela gravado assim
E no componente digitar assim
01/11/2008 a 30/11/2008
Pelo que eu sei deveria me retornar todos que estão ai, não é?
Mais no dbgrid me mostra assim
E no recordcount me traz a contagem de [b:4a632f5d18]05 itens[/b:4a632f5d18].
Se eu digitar no componente assim 01/11/2008 a 20/11/2008
Deveria me trazer assim na grid
Mais não, esta me trazendo assim
E a contagem no recordcont assim [b:4a632f5d18]03 itens[/b:4a632f5d18]
Eu ja não sei mais o que pode ser isso, alguma idéia ai pessoal?
Eu não entendo se no recordcount esta contando certo pq no dbgrid não mostra certo?
A mesma SQL no ibExpert traz certo e no dbgrid insiste em me errado.
Olhem bem
Se tenho na tabela gravado assim
referencia1-------referencia2
01/11/2008-------15/11/2008
01/11/2008-------15/11/2008
01/11/2008-------20/11/2008
01/11/2008-------30/11/2008
01/11/2008-------30/11/2008
E no componente digitar assim
01/11/2008 a 30/11/2008
Pelo que eu sei deveria me retornar todos que estão ai, não é?
Mais no dbgrid me mostra assim
referencia1-------referencia2
01/11/2008-------30/11/2008
01/11/2008-------30/11/2008
E no recordcount me traz a contagem de [b:4a632f5d18]05 itens[/b:4a632f5d18].
Se eu digitar no componente assim 01/11/2008 a 20/11/2008
Deveria me trazer assim na grid
referencia1-------referencia2
01/11/2008-------15/11/2008
01/11/2008-------15/11/2008
01/11/2008-------20/11/2008
Mais não, esta me trazendo assim
referencia1-------referencia2
01/11/2008-------20/11/2008
E a contagem no recordcont assim [b:4a632f5d18]03 itens[/b:4a632f5d18]
Eu ja não sei mais o que pode ser isso, alguma idéia ai pessoal?
GOSTEI 0
Adriano_servitec
31/12/2008
Pessoal, me desculpe, mais agora que eu achei o problema depois que comentei o [b:1da22786aa]DISABLECONTROLS[/b:1da22786aa] pra ver mais devagar o resultado no grid, é que percebi o que estava acontecendo. Pois depois de confirmar automaticamente chamo outro form, e por não ter centralizado o SQL, o que eu fiz foi quando criei o sistema chamar novamente o select neste outro form,e eu não tinha corrigido este outro select no outro form portanto estava como postei no primeiro post ou seja o select estava sem os comandos de maior e menor.
Então aqui no botão confirma esta assim
E ao abrir outro form filtrava de novo assim
Ai como o primeiro form fica embaixo do segundo via na grid apenas o que filtrava no segundo form.
Resumindo, o erro foi por causa do [b:1da22786aa]PDDD (Programador Desatento, Desacordado e Desorientado)[/b:1da22786aa] :oops:
Então aqui no botão confirma esta assim
procedure TfrmCadVar.BtnConfirmaClick(Sender: TObject);
begin
{Primeiro limpo a variavel publica para não ficar gravado ao sair ou mudar de form}
with dm.ibMovimentos do
begin
DisableControls;
Close;
SelectSQL.Text := ´ select * from movimento ´+
´ where referencia1 >= :pref1 ´+
´ and referencia2 <= :pref2 ´+
´ and cod_empresa = :pcdempr ´;
ParamByName(´pref1´).AsDate := (JvDateEdit1.Date);
ParamByName(´pref2´).AsDate := (JvDateEdit2.Date);
ParamByName(´pcdempr´).asString := dsListEmpresas.DataSet.FieldByName(´cdempresa´).AsString;
Open;
{Traz o resultado no label da quantidade de registros}
FetchAll;
label12.Caption := ´Quantidade de Registros: ´+ IntToStr(RecordCount);
DBGrid1.Refresh;
EnableControls;
end;
Application.CreateForm(TfrmLtoMovimentoMes, frmLtoMovimentoMes);
try
frmLtoMovimentoMes.ShowModal;
finally
frmLtoMovimentoMes.Release;
FreeAndNil(frmLtoMovimentoMes);//Para Destruir o Form
end;
end;E ao abrir outro form filtrava de novo assim
with dm.ibMovimentos do
begin
DisableControls;
Close;
SelectSQL.Text := ´ select * from movimento ´+
´ where referencia1 = :pref1 ´+
´ and referencia2 = :pref2 ´+
´ and cod_empresa = :pcdempr ´;
ParamByName(´pref1´).asDate := JvDateEdit1.Date;
ParamByName(´pref2´).asDate := JvDateEdit2.Date;
ParamByName(´pcdempr´).asString := dsListEmpresas.DataSet.FieldByName(´cdempresa´).AsString;
Open;
{Traz o resultado no label da quantidade de registros}
FetchAll;
label12.Caption := ´Quantidade de Registros: ´+ IntToStr(RecordCount);
EnableControls;
end;Ai como o primeiro form fica embaixo do segundo via na grid apenas o que filtrava no segundo form.
Resumindo, o erro foi por causa do [b:1da22786aa]PDDD (Programador Desatento, Desacordado e Desorientado)[/b:1da22786aa] :oops:
GOSTEI 0