Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    Eventi settimanali che si ripetono

    Nel mio database ho degli eventi che ogni settimana si ripetono. Ora io di giorno in giorno vado a modificare il campo data in modo che oggi, lunedì 13 lo faccio diventarè lunedi 20; cosi per tutti gli altri giorni. Se però gli eventi sono tanti diventa un lavoro complicato.
    Vorrei fare in modo che questo venga fatto automaticamente!
    Pensavo di fare cosi:
    Invece di avere un campo data, dove metto la data, pensavo di mettere il giorno della settimana.
    Ottengo una serie di record che avranno come valori del campo Lunedì, Martedì, ... Domenica.

    Ora come posso creare una funzione che va a leggere il giorno e poi controlla che se il giorno:
    - della settimana è oggi >> mette la data di oggi;
    - della settimana è già passato mette quella della settimana seguente?
    :master:

  2. #2
    Invece del giorno metti il numero corrispondente al giorno (1 = Sunday, 2 = Monday...).

    Dopo di che con la funzione WeekDay ti gestisci un sistema che ti aggiorni automaticamente il tutto, eventualmente tenendo da parte una data che rappresenti l'ultimo aggiornamento di ciascun record.

  3. #3
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    eventualmente tenendo da parte una data che rappresenti l'ultimo aggiornamento di ciascun record
    Intendi la data del giorno corrente?

    Provo a buttare giù un po di codice...

  4. #4
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Allora io ho:

    codice:
    dtmToDay = (Now)
    Dopodichè ho i vari record che mi estraggono il numero del giorno:
    1 = Domenica, 2 = Lunedì...

    Mettiamo che oggi (mercoledì) escono a video i 3 diversi record con 4,6,2 (nel campo giorno).

    Dato che oggi è = dtmToDay (ovvero 15/06/2005)
    Il sistema dovrebbe restituire in automatico:

    AAA , giorno Mercoledì 15 Giugno
    BBB , giorno Venerdì 17 Giugno
    CCC , giorno Lunedì 20 Giugno

    Può essere giusto un ragionamento del genere?

    codice:
    If Weekday(dtmToDay) = rs("giorno") Then
     Response.Write WeekdayName(weekDay(dtmToDay), False) & "" & Weekday(dtmToDay)
     Else
     Weekday(dtmToDay) < rs("giorno") Then
     ...vai alla data più vicina al quel giorno che corrsiponde al numero del giorno (rs("giorno") )...
    End If
    E' corretto? La seconda parte della funzione, ammesia sia giusto, come la eseguo?

  5. #5
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Riguardando il codice mi sono accorto che il ragionamento non funziona molto!

    una cosa che non avevo detto è che ci possono essere divevrsi record che hanno come valore lo stesso giorno (inteso come numero del giorno da 1 a 7).

    Gi eventi legati a questi record si ripetono ogni settiimana in modo identico, quindi io mostro tutti i record della settimana. Ad esempio non voglio che il record che ha come giorno 3 (martedì) venga ripetuto all'infinito a video ogni martedi, ma che compaia di settimana in settimana.

    Tornando al codice come posso dire al sistema ch se il record ha come risposta 5 mi prenda:
    se oggi è 5 -> venerdì
    se oggi è 2 -> venerdì
    se oggi è 6 -> venerdì della settimana che deve ancora iniziare?

  6. #6
    Sarò io ma non ho capito cosa devi fare...
    devi fare una specie di settimanario e in ogni giorno ci sono dentro i record di quel giorno?
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  7. #7
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Allora io ho degli eventi inseriti nel database.
    Ogni singolo evento ha come riferimento il giorno della settimana.
    Ammettiamo di avere tre record inseriti:
    A, giovedì
    B, venerdì
    C, martedì

    Ogni settimana sono sempre gli stessi, ok?

    Quindi devo fare in modo che ai tre eventi venga associata la data della settimana in corso.

    Se li controllo oggi (Sabato 18 Giugno) a video otterrò:
    A, giovedì 23 Giugno
    B, venerdì 24 Giuigno
    C, martedi 22 Giugno

    E' più chiaro ora?

  8. #8
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Ho provato a realizzare un altro codice di questo tipo:
    codice:
    Dim dtmToDay
    dtmToDay = Date()
    
    sql="SELECT * FROM giorni Order by numeri Desc"
                                                 call apridb(sql, rs, conn) 
                                                                 if rs.recordcount>0 then 
                                                                   while not rs.eof 
                                                             %>
                                                           <%
                                                       
            If WeekDay(dtmToDay) = rs("numeri")  Then
           Response.Write(WeekdayName(weekDay(dtmToDay), False) & "" & Day(dtmToDay) & "" & MonthName(Month(dtmToDay))) 
           Else                                                                    
            Response.Write("NO")
        End IF
     
       %>
                                      <% 
                                                                      rs.movenext 
                                                              wend 
                                                               end if 
                                                                   call chiudidb(rs, conn) 
                                                           %>
    Dim dtmToDay
    dtmToDay = Date()


    sql="SELECT * FROM giorni Order by numeri Desc"
    call apridb(sql, rs, conn)
    if rs.recordcount>0 then
    while not rs.eof
    %>
    <%

    If WeekDay(dtmToDay) = rs("numeri") Then
    Response.Write(WeekdayName(weekDay(dtmToDay), False) & "" & Day(dtmToDay) & "" & MonthName(Month(dtmToDay)))
    Else
    Response.Write("NO")
    End IF

    %>
    <%
    rs.movenext
    wend
    end if
    call chiudidb(rs, conn)
    %>
    Dim dtmToDay
    dtmToDay = Date()


    sql="SELECT * FROM giorni Order by numeri Desc"
    call apridb(sql, rs, conn)
    if rs.recordcount>0 then
    while not rs.eof
    %>
    <%

    If WeekDay(dtmToDay) = rs("numeri") Then
    Response.Write(WeekdayName(weekDay(dtmToDay), False) & "" & Day(dtmToDay) & "" & MonthName(Month(dtmToDay)))
    Else
    Response.Write("NO")
    End IF

    %>
    <%
    rs.movenext
    wend
    end if
    call chiudidb(rs, conn)
    %>
    Dove stampo NO, devo eseguire il calcolo sulle date in modo da far stampare il valore della data più vicina.
    Questo codice funziona.
    Mi mostra la data di oggi solo nei due record che hanno 2 nel database (la data è rifrerita al giorno in cui ho fatto la prova).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.