O que tem de Errado?
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.
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
Curtidas 0
Respostas
Jc_analista
27/09/2006
tenta assim:
adoquery1.SQL.Text := ´SELECT naocobrar, totais, data FROM cracha
WHERE (data between :pinicio and :pfinal) order by data ASC´;
adoquery1.SQL.Text := ´SELECT naocobrar, totais, data FROM cracha
WHERE (data between :pinicio and :pfinal) order by data ASC´;
GOSTEI 0
Macario
27/09/2006
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.
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.
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.
GOSTEI 0
Vinicius/campolina
27/09/2006
Joguei este código e continuou a mesma coisa,
ele não me traz o periodo q quero.
ele não me traz o periodo q quero.
GOSTEI 0
Vinicius/campolina
27/09/2006
Macario,
o banco que eu uso é o access e uso os componentes ado.
o campo é do tipo datetime
o banco que eu uso é o access e uso os componentes ado.
o campo é do tipo datetime
GOSTEI 0
Macario
27/09/2006
[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
tente
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
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
GOSTEI 0