Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Comparando datas usando ação dinâmica no DatePicker Oracle Apex


Como @ScottWe menciona:você está tentando aplicar a lógica PLSQL em HTML/javascript. O 'When - Condition' é avaliado em tempo de execução e, portanto, você não pode usar PLSQL lá. A aritmética de data é um pouco irritante em javascript, então se você não estiver familiarizado com ela, aqui está uma maneira de realizar sua verificação (ou seja, é a data inserida amanhã ou não).

Tomando minhas pistas destes:
Diferença de data em Javascript (ignorando a hora do dia)
JavaScript como obter a data de amanhã no formato dd-mm-aa

Adicione esta função à seção javascript da página para variáveis ​​e funções globais:
function isTomorrow(pDateItem){  
  function getTomorrow(){ 
    var tomorrow = new Date();
    tomorrow.setDate(tomorrow.getDate() + 1);
    return tomorrow;
  };

  function cutTime(pDate){
    return new Date(pDate.getFullYear(), pDate.getMonth(), pDate.getDate());
  };

  // check if pDateItem leads to a selection
  // check if it is a datepicker
  // check if a date has been selected
  if ( $(pDateItem).length 
       && $(pDateItem).data("datepicker")
       && $(pDateItem).datepicker("getDate") !== null 
     ) 
  {        
    var tomorrow = getTomorrow();
    var check = $(pDateItem).datepicker("getDate");
    var one = cutTime(check);
    var two = cutTime(tomorrow);

    return one.getDate() === two.getDate();
  };
  return false;
}

Em seguida, na condição "Quando" da ação dinâmica, use uma expressão javascript com este código:
isTomorrow(this.triggeringElement)

Em seguida, as ações verdadeiras correspondentes só serão acionadas quando a data for definida para amanhã.