Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 25
  1. #11
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da optime
    fammi capire. hai due tabelle: in una segni l'evento (con inizio e fine), in un altra (calendario) segni che quel dato giorno si verifica quel certo evento.

    quindi ti inserisci l'evento e poi con un ciclo for...next occupi i giorni.

    se invece sei in modifica, aggiorni l'evento e *prima* di occupare i giorni col ciclo, dovrai cancellare i giorni gia' occupati da quell'evento, altrimenti duplicheresti gli eventi a calendario.
    No. La tabella è una soltanto dove inserisco il tipo di evento, la data inizio e di fine dell'evento:
    DataInizioEvento = 24/08/2005
    DataFineEvento = 26/08/2005

    Nel calendario avrò:

    24/08/2005 = 1 evento
    25/08/2005 = 1 evento
    26/08/2005 = 1 evento
    Il problema è l'aggiornamento dell'evento... quindi se non ho capito male:

    - UPDATE;
    - DELETE;
    - INSERT INTO ????

  2. #12
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    up

  3. #13
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Sono riuscito a pubblicare il calendario in questione su uno spazio web gratuito, affinchè possiate rendervi conto di persona di ciò che avviene (provate a registrare un evento che ha una durata di più giorni e poi provate a modificare il giorno di fine evento--vedrete che il calendario non visualizza la modifica--anche se nel db la modifica viene registrata correttamente):

    Clicca qui (calendario)

    Il problema è questo: http://forum.html.it/forum/showthrea...hreadid=872002

    Se qualcuno è così gentile da farmi capire dove sbaglio...

  4. #14
    mamma mia che chaos...

    allora

    ho visto lo script e l'ho provato

    il sistema che usi non riesco a capirlo.

    quando fai un nuovo evento viene creato un record per ogni singolo giorno in cui l'evento avviene

    se quindi va dal 25/08 al 28/08 vengono creati 3 record...

    avrai i tuoi buoni motivi...

    ---

    quindi quando effettui la modifica puoi gestirla in 2 modi...

    1. controlli se l'evento è stato ALLARGATO o RIMPICCIOLITO... e di conseguenza cancelli o aggiungi record nella tabella
    2. cancelli tutti i record e lo inserisci come se fosse un nuovo evento

    ---

    la soluzione più intelligente in questi casi è comunque un'altra...

    utilizzi UN solo record per evento.
    poi in base al suo RANGE (come diavolo si dice in italiano... uff), insomma alla sua "larghezza" in giorni lo fai apparire nella tabella... e di conseguenza quando apri un giorno fai una query che comprenda tutti i record che hanno la data del giorno compresa fra la data d'inizio e quella di fine...

    ---

    insomma, o metti la pezza (anche se nun me piasa) oppure ristrutturi la semplice applicazione

    a te...
    san imente saluta

    * http://simonecingano.it *

  5. #15
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da imente
    quindi quando effettui la modifica puoi gestirla in 2 modi...

    1. controlli se l'evento è stato ALLARGATO o RIMPICCIOLITO... e di conseguenza cancelli o aggiungi record nella tabella
    2. cancelli tutti i record e lo inserisci come se fosse un nuovo evento
    Grazie, ma queste soluzioni non mi sono sufficientemente chiare, puoi darmi qualche spiegazione in più?

  6. #16
    1. PEZZONA NUMERO 1

    inizio evento 20/08
    fine evento 23/08

    vengono creati 4 record (20, 21, 22, 23)

    avviene una modifica

    inizio evento 20/08
    fine evento 24/08

    ---

    esegui una funzione che controlla se la data di fine è maggiore o minore (idem per la data di inizio)

    se è minore devi fare dei DELETE sui record che avanzano
    se è maggiore devi fare degli INSERT INTO per i record che mancano

    nel nostro caso è maggiore

    23/08 > 24/08

    quindi si aggiunge un record per il 24

    ----

    2. MEGA PEZZONA NUMERO 2

    quando viene effettuata una modifica
    cancelli TUTTI i record relativi a quell'intervallo
    e li ricrei usando LA STESSA FUNZIONE utilizzata per la creazione di nuovi eventi.

    ----

    domanda di rito.
    chi ha scritto quello script?
    tu?
    san imente saluta

    * http://simonecingano.it *

  7. #17
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    No il codice l'ho scaricato da qui Ho soltanto apportao alcune modifiche per esigenze personali ma sono bloccato sulla questioni che conosci bene...

    Le MEGAPEZZONE andrebbero pure bene, ma quello che riesco a fare è questo:
    codice:
    strSQL = "Update TabEventi set DataInizioEvento = #"&strDataInizioEvento&"#, DataFineEvento = #"&strDataFineEvento&"# where ID = " &Request.Form("ID")
    objCONN.execute strSQL
    
    for i = 0 to datediff("d" ,cDate(strDataInizioEvento),cDate(strDat
    aFineEvento)) step 1
      sSql = "INSERT INTO TabEventi (DueDate, DueDate2) values (#"&dataShort(dateadd("d",cDate(strDataInizioEvento),i))&"#, #"&strDataFineEvento&"#)"
      objCONN.execute sSQL
    next
    ma inserisce nel calendario la nuova dataFineEvento, ma raddoppia i records già esistenti per quel periodo...

  8. #18
    prima fai un DELETE dei vecchi record...

    lo scrissi.

    sennò ti rimangono doppioni
    san imente saluta

    * http://simonecingano.it *

  9. #19
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da imente
    prima fai un DELETE dei vecchi record...
    ... è questo che non riesco a fare... l'eliminazione dei vecchi records...

  10. #20
    si chiama DELETE ed è una query SQL

    capisco il problema
    "come faccio ad individuare i record di un CERTO evento?"

    non si può perchè lo script è fatto male

    già l'idea di fare un record per ogni giorno è folle.
    in più crea questo problema.


    ma la soluzione è a un passo (anche se non è perfetta e permette problemi di sorta nel caso di due eventi alla stessa ora)
    quando elimini un RECORD con il tasto del qual'è il codice eseguito...

    strSQL = "Select * from Message where DueDate = #" &dtDate &"# and DueTime = " &strDUEHOUR &" order by DueDate"

    quindi facciamo un bel

    strSQL = "DELETE * from Message where DueDate = #" &dtDate &"# and DueTime = " &strDUEHOUR &"

    dtDate è la data di inizio
    strDUEHOUR... beh... dovresti avere pure quella quando fai l'insert dei "doppioni"...
    san imente saluta

    * http://simonecingano.it *

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.