Fórum Busca resultado sobre intervalo de datas. #60393
31/12/2008
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
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
Adriano_servitec
Curtir tópico
+ 0Posts
31/12/2008
Adriano_servitec
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
31/12/2008
Adriano_servitec
[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
02/01/2009
Adriano_servitec
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?
Gostei + 0
02/01/2009
Adriano_servitec
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
Clique aqui para fazer login e interagir na Comunidade :)