Page 1 of 1

check of date for upgrade

Posted: Wed Oct 23, 2024 7:47 pm
by Silvio.Falconi
I have to check to see if an archive is updated or not, I take the date from the archive and compare it with today's date keeping in mind that the archive is updated only 4 times a week on Tuesday, Thursday, Friday and Saturday after 8.30 pm

Code: Select all | Expand

Function CheckEstrazione()
   local oDbf
   local dDataEstrazione
   local lold:=.t.
   local oTimer

   local nMartedi:= 2
   Local nGiovedi:= 4
   local nVenerdi:= 5
   local nSabato := 6
   local nDayarchive,nDaytoday

   oDbf := TArchivioLotto():New()
   oDbf:SetOrder(1 )
   oDbf:goBottom()
   dDataEstrazione:= oDbf:data
   oDbf:close()

   //determino numero giorno
   nDayarchive:= dow(dDataEstrazione)  //estrazione salvata
   nDaytoday:= dow(date())   //oggi

     
    
   IF nDaytoday = nMartedi
      IF nDayarchive < nDayToday
          lOld:=.f.
      Endif
   Endif

    IF nDaytoday = nGiovedi
       IF nDayarchive < nDayToday
          lOld:=.f.
      Endif
    Endif

 IF nDaytoday = nVenerdi
       IF nDayarchive < nDayToday
          lOld:=.f.
      Endif
    Endif

      IF nDaytoday = nSabato
       IF nDayarchive < nDayToday
          lOld:=.f.
      Endif
    Endif

       return lOld

Image

But If I made dow(date()) give me 4 and not 3 ( 23.10.2024) see the picture how I must correct the function ?

Re: check od date for upgrade

Posted: Wed Oct 23, 2024 8:05 pm
by Silvio.Falconi
chat AI corrected the function now run ok

Code: Select all | Expand

FUNCTION IsArchivioAggiornato( dUltimaDataAggiornamento )
   LOCAL dDataCorrente := Date()              // Data corrente
   LOCAL cOraCorrente := Time()               // Ora corrente
   LOCAL cGiornoSettimana := Dow(dDataCorrente)  // Giorno della settimana (1=DOM, 2=LUN, ..., 7=SAB)
   LOCAL cOraLimite := "20:30:00"             // Ora limite per l'aggiornamento

   // Se il giorno corrente è martedì (3), giovedì (5), venerdì (6) o sabato (7)
   IF cGiornoSettimana == 3 .OR. cGiornoSettimana == 5 .OR. cGiornoSettimana == 6 .OR. cGiornoSettimana == 7
      // Se è già passata l'ora dell'aggiornamento
      IF cOraCorrente > cOraLimite
         RETURN dUltimaDataAggiornamento == dDataCorrente
      ELSE
         // L'aggiornamento è valido dal giorno precedente
         RETURN dUltimaDataAggiornamento == dDataCorrente - 1
      ENDIF
   ELSE
      // Se oggi è lunedì o mercoledì (giorni senza aggiornamento)
      IF cGiornoSettimana == 1 // Se è domenica
         RETURN dUltimaDataAggiornamento == dDataCorrente - 1  // Sabato è stato l'ultimo giorno utile
      ELSEIF cGiornoSettimana == 2 // Se è lunedì
         RETURN dUltimaDataAggiornamento == dDataCorrente - 3  // Sabato è l'ultimo aggiornamento
      ELSEIF cGiornoSettimana == 4 // Se è mercoledì
         RETURN dUltimaDataAggiornamento == dDataCorrente - 1  // Martedì è stato l'ultimo giorno utile
      ENDIF
   ENDIF

   RETURN .F.  // Se nessuna condizione è soddisfatta, l'archivio non è aggiornato

 

Re: check of date for upgrade

Posted: Thu Oct 24, 2024 9:04 am
by Antonio Linares
very good! :-)