• User Attivo

    [SQL] asp query SQL su db access problema con date

    ciao a tutti,
    ho questo problema con una query che dovrebbe visualizzare tutte le date di una settimana

    
    "SELECT * FROM eventi WHERE data >=#"&inizio&"# AND data <=#"&inizio+7&"# ORDER BY data ASC"
    
    

    dove inizio=cdate(request.querystring("inizio"))

    ovvero la data da cui la settimana deve partire che è passata come parametro

    ma mi restituisce anche date fuori dalla settimana richiesta.
    secondo voi com'è possibile?!
    grazie,

    Marco


  • User Attivo

    prova a usare DateAdd("d",7, inizio) invece che inizio + 7. Magari ti sbaglia la somma (E' VB lo script vero?)


  • User Attivo

    @sherlock said:

    ciao a tutti,
    ho questo problema con una query che dovrebbe visualizzare tutte le date di una settimana

    >
    "SELECT * FROM eventi WHERE data >=#"&inizio&"# AND data <=#"&inizio+7&"# ORDER BY data ASC"
    
    >```dove inizio=cdate(request.querystring("inizio"))
    
    ovvero la data da cui la settimana deve partire che è passata come parametro
    
    ma mi restituisce anche date fuori dalla settimana richiesta.
    secondo voi com'è possibile?!
    grazie,
    
    Marco
    
    È un problema tipico di Access che non gestisce al meglio le date.
    Per non avere problemi è uso comune NON utilizzare i campi data ma **semplici campi di testo**. Dovrebbe funzionare senza problemi con la medesima query che hai già indicato.
    
    È circa una vita che non uso Access facci sapere come va.
    
    Ciao :ciauz:

  • User Attivo

    funziona benissimo, ma solo se esplicito le date, ma se metto la variabile "inizio" non mi estrapola i dati...
    mah!
    aspetto una illuminazione!
    grazie,

    Marco


  • User Attivo

    Prova così:

     "SELECT * FROM eventi WHERE data >= '"&inizio&"' AND data <= '"&inizio+7&"' ORDER BY data ASC"
    ```Ad ogni modo se non ti funzionasse ancora stampa la query e controlla che le date stiano a posto

  • User Attivo

    Se non risolvi mi mandi la struttura della tabella presa da access e la parte dello script incriminata che la testo?


  • User Attivo

    Probabilmente perchè ste stramaledette date sono sempre in formato americano. E quindi mese/giorno/anno.
    Fatti una funzione che ti inverte i valori che gli passi.
    La tua sintassi va bene

    Puoi usare anche questa:

    "SELECT * FROM eventi WHERE data between #"&inizio&"# and #"&inizio+7&"# ORDER BY data ASC"
    

  • User Attivo

    ce l'ho fatta!!!!grazie ai vostri consigli e ad una sana migrazione a SQL server del database 😉
    ora mi chiedo, dovendo raggruppare gli eventi di un giorno e fare una vista del tipo

    01/07/2007
    evento a
    evento b
    02/07/2007
    evento c
    evento d

    come posso fare? con il group by non me lo fa fare (evidentemente:D)
    tenendo conto che nella tabella i dati sono
    data | evento
    01/07/2007 | evento a
    01/07/2007 | evento b
    02/07/2007 | evento c
    02/07/2007 | evento d

    grazie!!!!

    Marco


  • User Attivo

    In genere io faccio una query ordinata per date, poi mentre visito il risultato della query riga per riga faccio la seguente procedura

    
    while (ci sono ancora dati
     
    if (vecchiadata <> nuovadata)
        'scrivo la nuova data'
        'scrivo l'elemento attuale
        vecchiadata = nuovadata
    else
        'scrivo l'elemento attuale
    end if
     
    
    

    Così ogni volta che cambia la data puoi creare una nuova tabella per raggruppare i nuovi dati.

    Un altra soluzione (+ dispendiosa) è fare una query con il DISTINCT sulle date, fare un ciclo sulle date distinte, ed ad ogni giro prendere tutti gli eventi che hanno quella data e scriverli..

    (ma qui fai m query al db dove m è il numero di date distinte, mentre con l'altro esempio fai una sola query.)


  • User Attivo

    grazie SeraphimFoA!
    è la strada giusta per me!
    e grazie anche a tutti gli altri per i preziosi consigli!!!

    Marco