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

    MS ACCESS - Query per controllo su data nascita

    Ciao a tutti, mediante una query di ricerca, devo estrarre dei dati da un DB di access, relativi ad una data e, più precisamente, solo il giorno ed il mese.
    Mi spiego meglio: devo estrarre tutte le persone che compiono il compleanno in un certo periodo di tempo, prendendo solo il giorno ed il mese della data di nascita (es. 13/01/54 = 13/01).
    Considerando che ho una data completa, nel formato gg/mm/aa, posso utilizzare la clausola "Month" e la clausola "Day", ma come faccio ad unirle in unico controllo? (sempre che si possa fare)
    Qualcuno sa indicarmi la maniera più corretta?
    Grazie mille a tutti

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    select * from tabella where format(campo_data,"dd/mm") = "13/01"


  3. #3
    Ok Nicola, la provo appena possibile e ti faccio sapere.
    Per il momento grazie 1000
    Un desiderio si insegue. Una passione si vive!!

  4. #4
    Ciao Nicola, purtroppo non riesco a mettere in opera il tuo utilissimo consiglio, in quanto mi estrae i dati dell'intero anno. Con il fatto che io i dati di ricerca li passo da una maschera, c'è di sicuro qualcosa di errato, ti allego quindi il codice, in modo tale che tu possa dargli una occhiata.
    Ancora grazie mille ed a presto
    Fabio

    SELECT Clienti.*
    FROM Clienti
    WHERE ((Clienti.Codice_TiCli)=Forms![Anteprima Compleanni]!TiCliCOM) And ((Clienti.Data_Nascita) Is Not Null) And ((Clienti.Data_Nascita) <> #01/01/1900#) And ((Clienti.Spedizione)=-1) And (format(Clienti.Data_Nascita,"dd/mm") Between format(Forms![Anteprima Compleanni]!DataInizioCOM,"dd/mm") And format(Forms![Anteprima Compleanni]!DataFineCOM,"dd/mm"))
    ORDER BY Clienti.Denominazione;

    P.S. = Il controllo sulla data "01/01/1900" è perchè non essendo a conoscenza della reale data di nascita, diversi record sono stati inseriti in quella maniera e non vanno considerati.
    Un desiderio si insegue. Una passione si vive!!

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se ti è possibile carica il file di access con qualche record fittizio che ricalchi fedelmente la tua situazione qui

    http://www.myfreefilehosting.com/

  6. #6
    OK Nicola, l'ho messo in linea con la descrizione "Esempio applicazione per nicola75ss".
    Grazie 1000

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da fabiotes
    OK Nicola, l'ho messo in linea con la descrizione "Esempio applicazione per nicola75ss".
    Grazie 1000

    Fabio
    link?

  8. #8
    Hai ragione scusa, te lo mando subito

    http://myfreefilehosting.com/f/f9425686c2_0.6MB

    Buona giornata

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non mi è chiara la ragione per la quale inserisci 01/01/1900 per gli utenti di cui non conosci la data di nascita anzichè lasciarla nulla.
    Anche il fatto di usare un unico campo denominazione nel quale inserisci nome e cognome va contro le regole di normalizzazione.

    L'unica soluzione che mi viene in mente è quella di assegnare a tutti i nominativi un anno di nascita fittizio, concatenandolo al giorno e al mese (nel mio script ho messo l'anno 2000). In fase di filtro, ai criteri selezionati tramite la maschera, accoderò anche qui lo stesso anno e così potrò trovare le persone nate in quell'intervallo di tempo.

    codice:
    Private Sub AnteprimaCOM_Click()
    On Error GoTo Err_AnteprimaCOM_Click
    
        Dim stDocName As String
        Dim stLinkCriteria As String
        Dim inizio As Date, fine As Date
        
        inizio = CDate(Mid(Me.DataInizioCOM, 3, 2) & "/" & Mid(Me.DataInizioCOM, 1, 2) & "/2000")
        fine = CDate(Mid(Me.DataFineCOM, 3, 2) & "/" & Mid(Me.DataFineCOM, 1, 2) & "/2000")
        
        stLinkCriteria = "cdate(day(data_nascita) & ""/"" & month(data_nascita) & ""/2000"") between #" & inizio & "# and #" & fine & "#"
            
        'accodo al mio criterio di filtro dei record anche la tipologia cliente
        If Me.TiCliCOM <> 0 Or Not IsNull(Me.TiCliCOM) Then
        stLinkCriteria = stLinkCriteria & " and Codice_TiCli =" & Me.TiCliCOM
        End If
    
        stDocName = "Elenco Compleanni Clienti"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
    
    Exit_AnteprimaCOM_Click:
        Exit Sub
    
    Err_AnteprimaCOM_Click:
        MsgBox Err.Description
        Resume Exit_AnteprimaCOM_Click
    
    End Sub
    Nella maschera "Elenco compleanni clienti" rimuovi dall'origine record la query "Anteprima SELECT_COM" e metti invece "Clienti", cioè il nome della tabella.

    P.S. Nel caso l'mdb che hai caricato contenga nominativi reali fai più attenzione in futuro. Per la legge sulla privacy rischi di incorrere in guai.

  10. #10
    Ciao Nicola, ti ringrazio molto per l'aiuto, che proverò subito a mettere in opera.
    Per quanto riguarda i dati, non ti preoccupare, in quanto, essendo a conoscenza della lege sulla privacy, nel DB ho mischiato i dati tra di loro. La scelta dell'anno e del nominativo in quel modo, non è stata una mia scelta, ma solo il fatto che i dati provengono da un DB Paradox, relativi ad una applicazione svilupppata in Delphi 5, che non consentiva di lasciare vuoto il campo data (ed hanno quindi inserito il 01/01/1900 per distinguerli) ed il campo "Denominazione" era unico.
    Ancora grazie mille per l'aiuto che spero un giorno di poter ricambiare.
    Tanti Auguri a te ed ai tuoi familiari

    Fabio
    Un desiderio si insegue. Una passione si vive!!

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.