Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Mistero query con date!!

    Ho necessità di estrarre un record da una tabella in base ad una data.
    Usavo questa query:
    codice:
    SELECT * FROM tabella WHERE datada<=#" & Date() & "# AND dataa>=#" & Date() & "#
    Il record specifico ha come "datada" 30/05/2007 e "dataa" 16/06/2007.
    Fino a ieri ha funzionato perfettamente, oggi non va più! Secondo lui il recordset è vuoto!
    Ho provato anche con
    codice:
    SELECT * FROM tabella WHERE datada<=" & cdate(Date()) & " AND dataa>=" & cdate(Date()) & "
    e con la ancora più complicata
    codice:
    Function FDate(myDate)
       myDate = Left(myDate, 10)
       FDate = Mid(myDate, 7, 4) & "/" & Mid(myDate, 4, 2) & "/" & Mid(myDate, 1, 2)
    End Function
    
    SELECT * FROM tabella WHERE datada<=#" & FDate(Date()) & "# AND dataa>=#" & FDate(Date()) & "#
    Siccome il db è Access, ho provato pure a strutturare la query direttamente lì.
    Lui la scrive così:
    codice:
    SELECT tabella.* FROM tabella WHERE (((tabella.datada)<=Date()) AND ((tabella.dataa)>=Date()));
    e in Access estrae correttamente. L'ho messa in ASP, ma il risultato è sempre lo stesso, Recordset vuoto.....
    Ma cos'è, il BACO del 1° Giugno ????
    :master:
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  2. #2
    Forse mi sto sbagliando ma la funzione Date() che hai inserito nella query ti dovrebbe restituire la data odierna. L'estrazione da db che vuoi fare si basa su delle date riprese da una form o che cosa ?

    Romeo

  3. #3
    Si, infatti è in base alla data odierna.
    Deve estrarre alcuni record (dei quali nella tabella è specificato l'intervallo di "validità") secondo la data odierna.

    Ad esempio:
    L'offerta "VINCI UN SACCO DI SOLDI" è valida dal 25 Maggio al 6 Giugno 2007.
    Fino al 6 Giugno mi mostri l'offerta, dal 7 in poi non la mostri più....

    In Access ho impostato il campo come Tipo Dati "Data/Ora" e come Formato "Data in cifre".

    Non capisco perchè fino a ieri funzionava e oggi invece non va più, l'ho usata altre volte e sempre scritta nello stesso modo...

    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  4. #4
    Sei in locale o remoto ? Date() scritto a schermo cosa ti dà ?

  5. #5
    SELECT * FROM tabella WHERE datada>=#" & Date() & "# AND dataa<=#" & Date() & "#

    Così dovrebbe essere corretta, visto che deve visualizzarti a schermo se la data odierna è maggiore del campo datada e minore del campo dataa.

  6. #6
    No, quello che dici tu l'avevo già provato e comunque non funziona (e poi hai invertito i segni <> ).
    Ho capito qual'è il problema, quando esegue la query scambia il giorno con il mese!!!!!
    Quindi "01/06/2007", nella query diventa "6/1/2007".....

    Alla fine ho risolto così, qualora dovesse servire:
    codice:
    Dim mydate
    mydate=month(date())&"/"&day(date())&"/"&year(date())
    
    SELECT * FROM tabella WHERE datada <= #" & mydate & "# AND dataa >= #" & mydate & "#
    Grazie comunque!
    Sto ancora imparando.... Chiedo comprensione!
    !...Send ME a message...!

  7. #7
    Giusto. Ho cambiato i segni di minore/maggiore perché ho fatto confusione con la logica.

    Buon lavoro.

    Romeo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.