Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Query DB Access con Data IN e Data OUT

    Ciao a tutti, vi chiedo gentilmente se potete darmi un aiuto su questa semplice query con un DB Access.


    In pratica ho un form dove passo 2 date (DataIN e DataOUT) la data iniziale e la Data finale e in funzione di questi valori estrarre i relativi articoli dal database.


    Nome Data IN Data OUT
    Articolo 01 - 01/02/2022 - 01/03/2022
    Articolo 02 - 01/02/2022 - 01/03/2022
    Articolo 03 - 01/02/2022 - 01/03/2022
    Articolo 04 - 10/02/2022 - 10/03/2022
    Articolo 05 - 10/02/2022 - 10/03/2022
    Articolo 06 - 20/02/2022 - 20/03/2022
    Articolo 07 - 20/02/2022 - 20/03/2022
    Articolo 08 - 20/02/2022 - 20/03/2022
    Articolo 09 - 01/03/2022 - 01/04/2022
    Articolo 10 - 01/03/2022 - 01/04/2022


    Prima di chiedere il vostro aiuto ne ho provate tante ma non sono riuscito a risolvere il problema ... mi date aiuto ?


    Da premettere che le date sul DB sono state convertite in testo quindi il 01/02/2022 diventa 20220201 .. e quindi se passo dal form DataIN = 01/02/2022 e DataOUT = 01/04/2022 questi valori vengono trasformati in DataIN = 20220201 e DataOUT = 20220401.


    Le query che ho provato:


    select * from PROVA where ID > 0 AND ( DAL >= '20220201' AND AL <= '20220401' ) e con questa query mi fa vedere tutti gli articoli.


    se invece passo questa query: select * from PROVA where ID > 0 AND ( DAL >= '20220210' AND AL <= '20220220' ) non mi trova nulla !!!


    eppure dovrebbe trovarmi almeno questi articoli:
    Articolo 04 - 10/02/2022 - 10/03/2022
    Articolo 05 - 10/02/2022 - 10/03/2022
    Articolo 06 - 20/02/2022 - 20/03/2022
    Articolo 07 - 20/02/2022 - 20/03/2022
    Articolo 08 - 20/02/2022 - 20/03/2022
    Articolo 09 - 01/03/2022 - 01/04/2022
    Articolo 10 - 01/03/2022 - 01/04/2022


    se invece passo questa Query: select * from PROVA where ID > 0 AND ( DAL >= '20220220' AND AL <= '20220320' ) mi trova questi articoli
    Articolo 06 - 20/02/2022 - 20/03/2022
    Articolo 07 - 20/02/2022 - 20/03/2022
    Articolo 08 - 20/02/2022 - 20/03/2022
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    non è che convertendo da data a testo ti sei perso gli zeri non significativi? es: 03 è diventato 3...
    puoi postare i record come sono effettivamente sul db?
    grazie

  3. #3
    ma datain e dataout corrispondono a dal e al? perché se è così, è giusto che ... AL <= '20220220'... non ti restituisca nulla

  4. #4
    Quote Originariamente inviata da optime Visualizza il messaggio
    non è che convertendo da data a testo ti sei perso gli zeri non significativi? es: 03 è diventato 3...
    puoi postare i record come sono effettivamente sul db?
    grazie
    ID Nome N_DAL N_AL DAL AL
    1 Registratore telematico 01 20220201 20220301 20220201 20220301
    2 Registratore telematico 02 20220201 20220301 20220201 20220301
    3 Registratore telematico 03 20220201 20220301 20220201 20220301
    4 Registratore telematico 04 20220210 20220310 20220210 20220310
    5 Registratore telematico 05 20220210 20220310 20220210 20220310
    6 Registratore telematico 06 20220220 20220320 20220220 20220320
    7 Registratore telematico 07 20220220 20220320 20220220 20220320
    8 Registratore telematico 08 20220220 20220320 20220220 20220320
    9 Registratore telematico 09 20220301 20220401 20220301 20220401
    10 Registratore telematico 10 20220301 20220401 20220301 20220401
    Pippo Giacalone
    giacalone@tin.it

  5. #5
    Grazie Optime,

    quella che ti ho incollato è esattamente la tabella di prova ... ci trovi oltre l'ID e il Nome anche N_DAL N_AL che sono campi numerici mentre DAL AL sono campi testo

    Pippo Giacalone
    giacalone@tin.it

  6. #6
    Quote Originariamente inviata da optime Visualizza il messaggio
    ma datain e dataout corrispondono a dal e al? perché se è così, è giusto che ... AL <= '20220220'... non ti restituisca nulla
    allora l'errore lo faccio io, perchè con questa query " select * from PROVA where ID > 0 AND ( DAL >= '20220210' AND AL <= '20220220' )" vorrei trovare gli articoli che stanno in questo range ... quindi tutti gli articoli co una data iniziale (DAL) uguale o superiore a 20220210 e una finale uguale o inferiore a 20220220
    Pippo Giacalone
    giacalone@tin.it

  7. #7
    Avete consigli utili da darmi per arrivare al risultato che vorrei ?
    Pippo Giacalone
    giacalone@tin.it

  8. #8
    visto che interroghi un intervallo con un intervallo, devi selezionare quei record che iniziano NON dopo della fine e che finiscono NON prima dell'inizio, così

    codice:
    select * from PROVA where ID > 0 AND ( DAL <= '20220220' AND AL >= '20220210')
    http://sqlfiddle.com/#!9/ab5e7a/2/0

  9. #9
    Grazie Optime, io da solo non ci sarei arrivato MAI ... e non ti nego che ancora adesso, dopo che ho visto che funziona, devo riuscire a comprendere la logica.

    Ma oggettivamente questo è un mio problema
    Pippo Giacalone
    giacalone@tin.it

  10. #10
    ok, adesso con i miei tempi sono riuscito a capirla
    Pippo Giacalone
    giacalone@tin.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.