Fórum O que tem de Errado? #330153

27/09/2006

0

Estou fazendo uma consulta entre datas coloco as datas que quero em dois edits, quando mando buscar
ele não consulta exatamente o periodo que desejo q aparece no dbgrid, ele consulta apenas os dias.
por exemplo:

Se peço um periodo entre 01/10/2006 a 10/10/2006 e na tabela tiverem registros de dias que começam com 01 e 10 ele mostra no dbgrid, como 01/08/2006 02/08/2006,
mas não me mostra o periodo real que quero.

Alguem sabe me dizer o que tem de errado?

procedure Tfrmcracha.BitBtn6Click(Sender: TObject);
var
Inicio : string;
Final : string;
soma : extended;
begin
Soma := 0;


Inicio := edit7.Text ;
Final := edit8.text;



adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Text := ´SELECT naocobrar, totais, data FROM cracha WHERE data >= :pinicio and data <= :pfinal order by data ASC´;
adoquery1.Parameters.ParamByName(´pinicio´).Value := StrToDate(Inicio);
adoquery1.Parameters.ParamByName(´pfinal´).Value := StrToDate(final);
adoquery1.Open;

if not adoquery1.isempty then begin
adoquery1.first;
while not adoquery1.eof do begin
Soma := Soma + adoquery1.fieldbyname(´totais´).asfloat;
adoquery1.next;
edit4.Text := floattostr(soma);
end;
end;
soma := 0;
if not adoquery1.isempty then begin
adoquery1.first;
while not adoquery1.eof do begin
Soma := Soma + adoquery1.fieldbyname(´naocobrar´).asfloat;
adoquery1.next;
edit3.Text := floattostr(soma);
end;
end;
end;
end.


Vinicius/campolina

Vinicius/campolina

Responder

Posts

27/09/2006

Jc_analista

tenta assim:

adoquery1.SQL.Text := ´SELECT naocobrar, totais, data FROM cracha
WHERE (data between :pinicio and :pfinal) order by data ASC´;


Responder

Gostei + 0

27/09/2006

Macario

Ola.

Se o que voce necessita e apenas a soma dos campos [b:30297cfedc]NAOCOBRA[/b:30297cfedc]R e [b:30297cfedc]TOTAIS[/b:30297cfedc] faca o seguinte.


select sum(NAOCOBRAR) as NAOCOBRAR, sum(TOTAIS) as TOTAIS from CRACHA
where DATA between :DATAINICIAL and :DATAFINAL




Agora atente ao tipo do campo ele e date? datetime? timestamp?

Qual SGBDR voce esta usando?
Qual driver de acesso?


Ps.: Para ordenacao nao ha necessidade de se indicar ASC, pois ja se trata de opcao default.


Responder

Gostei + 0

27/09/2006

Vinicius/campolina

Joguei este código e continuou a mesma coisa,
ele não me traz o periodo q quero.


Responder

Gostei + 0

27/09/2006

Vinicius/campolina

Macario,
o banco que eu uso é o access e uso os componentes ado.

o campo é do tipo datetime


Responder

Gostei + 0

27/09/2006

Macario

[quote:c585279ee6=´vinicius/campolina´]Macario,
o banco que eu uso é o access e uso os componentes ado.

o campo é do tipo datetime[/quote:c585279ee6]

Ola.

Nao tenho experiencia com ACCES mas vamos ver.


ao inves de passar


adoquery1.Parameters.ParamByName(´pinicio´).Value := StrToDate(Inicio);
adoquery1.Parameters.ParamByName(´pfinal´).Value := StrToDate(final); 


tente

adoquery1.Parameters.ParamByName(´pinicio´).asDatetime := StrToDatetime(Inicio);
adoquery1.Parameters.ParamByName(´pfinal´).asDatetime := StrToDatetime(final); 




Verifique na propriedade PARAMS, do ADOQuery o datatype dos parametros, veja se estao para ftDatetime

Outro ponto, qual formato de data usado: dd/mm/yyyy ou mm/dd/yyyy,
dd/mm/yy ou mm/dd/yy.


[]´s


Responder

Gostei + 0

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

Aceitar