relatórios por período de data
Pessoal, fiz um relatório por período de datas que aparentenmente estava fucionando, mas depois analisando percebi um erro e confesso q já estou há algumas horas tentando corrigir, funcionan assim:
1º) dbloocapcombobox eu escolho uma unidade
2º) Depois escolho um período de data
Caso eu queira só uma data por exemplo, 31/01/2011 à 31/01/2011, só aparecem 5 registros (que são os primeiros) num total de 9.
Mas se eu escolher de 30/01/2011 à 01/02/2011, os 9 registro do dia 31 aparecerem, os registros do dia 30 também aparecem, mas os registros do dia 01/02 acontece a mesma coisa, não aparecem todos os registros.
No query está assim:
Na propriedade do paramentro de dta_ini e dta_fim, está assim: ftDateTime...
1º) dbloocapcombobox eu escolho uma unidade
2º) Depois escolho um período de data
Caso eu queira só uma data por exemplo, 31/01/2011 à 31/01/2011, só aparecem 5 registros (que são os primeiros) num total de 9.
Mas se eu escolher de 30/01/2011 à 01/02/2011, os 9 registro do dia 31 aparecerem, os registros do dia 30 também aparecem, mas os registros do dia 01/02 acontece a mesma coisa, não aparecem todos os registros.
procedure Tfrm_EscolhaUnidade.BitBtn1Click(Sender: TObject);
var
Sql, Email, Uf : String;
begin // 1
sql:=ADOQuery_relatoriounidade.AsString; // pego o valor do DBLoockupCombobox
dm.QRY_Email.Close;
dm.QRY_Email.SQL.Clear;
dm.QRY_Email.SQL.Add('SELECT * FROM Email WHERE unidade = '+QuotedStr(sql)+'ORDER BY unidade');
dm.QRY_Email.Open;
Email:=dm.QRY_Emailemail.AsString;
unidade:=DM.QRY_Emailunidade.AsString;
Uf:=DM.QRY_Emailuf.AsString;
if Uf='' then
Begin
dm.QRY_relatorio.Close;
dm.QRY_relatorio.SQL.Clear;
dm.QRY_relatorio.SQL.Add('SELECT * FROM telemedicina WHERE para = :Email' );
dm.QRY_relatorio.SQL.Add(' and data BETWEEN :_dta_ini and :_dta_fim');
dm.QRY_relatorio.SQL.Add(' ORDER BY data');
dm.QRY_relatorio.Parameters.ParamByName('Email').Value := Email;
end
else
Begin
Uf := 'S';
dm.QRY_relatorio.Close;
dm.QRY_relatorio.SQL.Clear;
dm.QRY_relatorio.SQL.Add('SELECT * FROM telemedicina WHERE data >= :_dta_ini and data <= :_dta_fim');
dm.QRY_relatorio.SQL.Add('and UF = :_UF');
dm.QRY_relatorio.SQL.Add(' ORDER BY data');
dm.QRY_relatorio.Parameters.ParamByName('_UF').Value := Uf;
end;
dm.QRY_relatorio.Parameters.ParamByName('_dta_ini').Value := DTP_data1.DateTime;
dm.QRY_relatorio.Parameters.ParamByName('_dta_fim').Value := DTP_data2.DateTime;
dm.QRY_relatorio.Open;
if dm.QRY_relatorio.IsEmpty then
begin
ShowMessage('Não Existe Movimentação para esta Unidade');
exit;
end
else
QR_rel_paciente.QRLabel7.Caption:=unidade;
QR_rel_paciente.QRLabel11.Caption:=unidade;
QR_rel_paciente.Preview;
end; // begin
No query está assim:
SELECT * FROM telemedicina WHERE para = :Email AND data >= :dta_ini AND data <= :dta_fim AND UF=:Uf
Na propriedade do paramentro de dta_ini e dta_fim, está assim: ftDateTime...
Marcos Barbosa
Curtidas 0
Respostas
Emerson Nascimento
03/02/2011
altere a propriedade Time do componente DTP_data1 para 00:00:00 e do componete DTP_data2 para 23:59:59
GOSTEI 0
Marcos Barbosa
03/02/2011
Emerson, já está assim.
Bem eu faço uma importação do outlook e uso esse mesmo componente, lá ñ preciso usar parametro e consegui fazendo dessa forma:
Na importação tá funcionando, mas para o relatório não.
Bem eu faço uma importação do outlook e uso esse mesmo componente, lá ñ preciso usar parametro e consegui fazendo dessa forma:
StrFiltro:='[ReceivedTime] >= ' + QuotedStr(FormatDateTime('dd/MM/yyyy, hh:MM', DtPDtaMsg.DateTime))
+ 'AND [ReceivedTime] <= ' + QuotedStr(FormatDateTime('dd/MM/yyyy, hh:MM', DtPDtaMsg1.DateTime));
Na importação tá funcionando, mas para o relatório não.
GOSTEI 0
José
03/02/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0