DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 12/8/2010 11:24:44 AM
 
Caros

Estou buscando a data por parâmetro.
tenho dois DataTimePickers no form que definem essas data.
Quando consulto a data entre 02/08/2010 e 03/08/2010 (considerando que no dia 2 não tem nada mesmo), exibe os resultados do dia 3, mas se isolo colocando do dia 03/08 ao 03/08, traz o messagebox informando que não há resultados, quando na verdade existe.

Segue o código para entendimento.

Obrigado!

   begin
      Close;
      DataSet.Active;
      DataSet.CommandText := 'SELECT V.CODIGO, V.NOME, V.TEMPO_TURNO, '+
      'L.INI_OPER, L.FIM_OPER, O.INI_PAUSA, O.FIM_PAUSA, '+
      'M.DESCRICAO AS MOTIV_PAUSAS, O.DATA AS DATA_PAUSAS, '+
      'L.DATA AS DATA_INI_OPER '+
      'FROM LIG_CAB L '+
      'INNER JOIN VROPERAD V ON (V.CODIGO = L.OPERADOR) '+
      'LEFT OUTER JOIN OPEPAUSA O ON (O.OPERADOR = L.OPERADOR) '+
      'AND (O.DATA = L.DATA) '+
      'LEFT OUTER JOIN MPAUSA M ON (M.CODIGO = O.MOTIVO) '+
      'WHERE L.DATA BETWEEN :DATAI AND :DATAF AND '+
      'ORDER BY L.DATA, V.NOME ';

      DataSet.Params.ParamByName('DATAI').AsSQLTimeStamp := DateTimeToSQLTimeStamp(dtpDATAI.DateTime);
      DataSet.Params.ParamByName('DATAF').AsSQLTimeStamp := DateTimeToSQLTimeStamp(dtpDATAF.DateTime);

      AbreTabela(False, sdsPausas, 'Login/Logout');

      if DMForm.sdsPausas.IsEmpty then
      begin
        Application.MessageBox('Nenhum registro encontrado!', 'Aviso', MB_OK +
        MB_ICONWARNING);
        Exit;
      end;
ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 12/8/2010 11:40:13 AM
 
begin
      Close;
      DataSet.Active;
      DataSet.CommandText := 'SELECT V.CODIGO, V.NOME, V.TEMPO_TURNO, '+
      'L.INI_OPER, L.FIM_OPER, O.INI_PAUSA, O.FIM_PAUSA, '+
      'M.DESCRICAO AS MOTIV_PAUSAS, O.DATA AS DATA_PAUSAS, '+
      'L.DATA AS DATA_INI_OPER '+
      'FROM LIG_CAB L '+
      'INNER JOIN VROPERAD V ON (V.CODIGO = L.OPERADOR) '+
      'LEFT OUTER JOIN OPEPAUSA O ON (O.OPERADOR = L.OPERADOR) '+
      'AND (O.DATA = L.DATA) '+
      'LEFT OUTER JOIN MPAUSA M ON (M.CODIGO = O.MOTIVO) '+
      'WHERE CAST(L.DATA AS DATE) BETWEEN :DATAI AND :DATAF'+
      ' ORDER BY L.DATA, V.NOME ';

      DataSet.Params.ParamByName('DATAI').AsDateTime := dtpDATAI.Date;
      DataSet.Params.ParamByName('DATAF').AsDateTime := dtpDATAF.Date;

      AbreTabela(False, sdsPausas, 'Login/Logout');

      if DMForm.sdsPausas.IsEmpty then
      begin
        Application.MessageBox('Nenhum registro encontrado!', 'Aviso', MB_OK +
        MB_ICONWARNING);
        Exit;
      end;

 
Atenciosamente
 
Eriley
Emerson
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 12/8/2010 12:48:00 PM
 
talvez o problema esteja acontecendo por que seu campo é do tipo DATETIME.

altere a propriedade Time dos componentes de modo a ficar:

dtpDATAI.Time := '00:00:00'
dtpDATAF.Time := '23:59:59'

e use da forma que você estava usando.

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 12/8/2010 01:16:25 PM
 
Da maneira que o Eriley passou não achou o parâmetro.
Não posso usar time, pois el vai buscar a data do objeto.

Utilizei um objeto chamado TwwDBDataTimePicker e resolveu a questão.

Valeu galera!
Emerson
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 12/8/2010 02:25:22 PM
 
não entendi a afirmação "Não posso usar time, pois el vai buscar a data do objeto."

você testou como eu te sugeri?
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 12/8/2010 02:50:22 PM
 
Emerson

Pelo que entendi sua sugestão é para horas, mas eu estou trabalhado com data DD/MM/AAAA.
Não foi isso?

Obrigado!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03