DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Fórum DevMedia


Autor
Mensagem
Marcos Barbosa
 


País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 3/2/2011 12:33:39 PM
 
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.

#Código
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:
#Código
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...

Emerson
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 3/2/2011 02:22:23 PM
 
altere a propriedade Time do componente DTP_data1 para 00:00:00 e do componete DTP_data2 para 23:59:59


Marcos Barbosa
 


País: Brasil
Estado: BA
Cidade: SALVADOR
Mensagens: 89
 Postado em: 3/2/2011 02:53:56 PM
 
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:
#Código
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.


José Ricardo Teixeira
 
 

 


País: Brasil
Estado: SC
Cidade: Imbituba
Mensagens: 909
 Postado em: 16/5/2013 11:19:31 AM
 
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03