Fórum Pesquisa com Datas e query,qreport #224422
05/04/2004
0
Tipo eu to com um probleminha
Eu tenho uma tabela clientes com os seguintes campos
Codigo
Nome
Convenio
Data
E eu quero que num form o cara digite duas datas( em dois edits diferentes) e ai eu mostre o relatorio com todos os dados qeu tem entre as datas qeu o usuario colocou
So que o problema esta aqui:
Eu to usando ado pq to usando acess, E to usando Qreport tb pq eh oque eu sei.
E o problema esta em associa os QRDBText aos campos da tabela.
Pq como to usando uma query nao tem como eu faze isso entende?
E to fazendo assim:
procedure TFrmRelatorio.QuickRep1AfterPreview(Sender: TObject); begin with ADOQuery1 do begin close; SQL.Clear; SQL.Add(´SELECT Clientes.Codigo,Clientes.Nome,Clientes.Convenio,Clientes.Data FROM Clientes WHERE Data > :PL AND Data < :PA´); Parameters.ParamByName(´PL´).Value := FrmPesq.Edit1.text; Parameters.ParamByName(´PA´).Value := FrmPesq.Edit2.text; Open; end; QRDBText1.DataField := ADOQuery1.Fields[0].FieldName; QRDBText2.DataField := ADOQuery1.Fields[1].FieldName; QRDBText3.DataField := ADOQuery1.Fields[2].FieldName; QRDBText4.DataField := ADOQuery1.Fields[3].FieldName; end;
Pra ve se funcionava mais nao aparece nada nem erro nem registros
E ai alguem sabe uma solucao pra isso?
Snipa
Curtir tópico
+ 0Posts
05/04/2004
Luis Neto
Não sou um expert em SQL mas tive um probela parecido com o seu em um dos meus projeto então solucionei da sequinte maneira (não sei se é a mais adquada, porém funcionou):
Exemplo
Dados
[b:2d57c16112]Data Inicial (25/04/2004)[/b:2d57c16112] • [b:2d57c16112]Data Final (30/12/2004)[/b:2d57c16112], SQL reconhece o formato de data mm/dd/aaaa, então vc precisa converter as datas de [b:2d57c16112]dd/mm/aaaa[/b:2d57c16112] para [b:2d57c16112]mm/dd/aaaa[/b:2d57c16112]
procedure Tfrom.Button1Click...
Var
DiaI, MesI, AnoI, DataI: string; // ira receber o valor da Data Inicial
DiaF, MesF, AnoF, DataF: string; // ira receber o valor da Data Final
begin
DiaI:= FormatDate(´dd´,Data Inical);
MesI:= FormatDate(´mm´, DataInicial);
AnoI:= FormatDate(´yyyy´, DataInicial);
DataI:= MesI + ´/´ + DiaI + ´/´ + AnoI; // data incial ficou: 04/25/2004
DiaF:= FormatDate(´dd´,Data Final);
MesF:= FormatDate(´mm´, Data Final);
AnoF:= FormatDate(´yyyy´, DataFinal);
DataF:= MesF + ´/´ + DiaF + ´/´ + AnoF; // datafinal ficou : 12/30/2004
with QyEntreDatas.SQL do
begin
Clear;
QyEntreDatas.Close;
Add(´Select * From Clientes´);
add(´Where (Data >= ´ + ´´´´ + Data IniciaL + ´´´´ + ´)´);
Add(´ And (Data <= ´ + ´´´´ + DataFinal + ´´´´ + ´)´);
QyEntreDatas.Open;
end;
end;
Esse exemplo está no evento OnClick de um Button.
Obs.: os campos data inicial e data final podem ser Edits.
Qualque coisa estamos por aqui.
Luis Neto
Gostei + 0
05/04/2004
Luis Neto
Falha Nossa (altere a linha SQL)
with QyEntreDatas.SQL do
begin
Clear;
QyEntreDatas.Close;
Add(´Select * From Clientes´);
add(´Where (Data >= ´ + ´´´´ + DataI + ´´´´ + ´)´);
Add(´ And (Data <= ´ + ´´´´ + DataF + ´´´´ + ´)´);
QyEntreDatas.Open;
end;
end;
Os Campos Data tem que receber os valores das variaveis...
[/quote:c65f0a29a6]
Gostei + 0
05/04/2004
Snipa
Bom eu pus como voce falo
so que o problema agora eh que ele tah dando erro nessa linha
DiaI:= FormatDate(´dd´,FrmPesq.Edit1.Text);
tah dando esse erro:
[Error] FrmRela.pas(51): Undeclared identifier: ´FormatDate´
E ae sabe oque pode ser?
Gostei + 0
05/04/2004
Everton
DiaI:= FormatDate(´dd´,FrmPesq.Edit1.Text);
a função FormatDateTime tem como parâmetros (uma String, um TDateTime). Qualquer coisa deixe o cursor sobre a palavra FormatDateTime e aperte F1.
altere a linha com erro por:
DiaI := [color=blue:38fdf57d81]FormatDateTime[/color:38fdf57d81](´dd´,StrToDate(FrmPesq.Edit1.Text));
Gostei + 0
05/04/2004
Snipa
Mais o meu problema ainda tah ocorrendo
Nao tah aparecendo nenhum registro nem dando msg de erro
Oxe sera que ninguem nunca fez algo assim pra me ajuda?
Gostei + 0
07/04/2004
Snipa
preciso disso so pra termina um esquema que to fazendo
por favor pessoal da uma ajuda ae
:)
Gostei + 0
09/04/2004
Everton
observando o código que vc apresentou
Ao invés de colocar no AfterPreview experimente colocar no BeforePreview.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)