• 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