Creazione automatica di query

di il
10 risposte

Creazione automatica di query

Buongiorno a tutti,

premetto che sono nuovo del forum ed un neofita di access che considero un ottimo strumento per la creazione di un gestionale.

Veniamo a noi:

Ho creato 2 tabelle, la prima, denominata “Nominativi”, raccoglie le anagrafiche; la seconda, denominata “Eventi”, raccoglie il nome dell'evento il luogo e la data. 

Ho quindi creato una maschera denominata “Eventi” ed una sottomaschera con i partecipanti relazionata alla tabella “Nominativi” con i campi “Invito” (si/no) e “Partecipo” (si/no). Ho poi creato due query, 1 che mi mostra gli inviti e i partecipo ed un'altra che mi mostra solo i partecipo dalla quale ricavo il report dei partecipanti.

Al primo evento creato, il tutto ha funzionato bene ed ottenuto quello che desideravo.

Ora, se volessi creare un nuovo evento, mi rimangono, nella sottomaschera, i campi invito e partecipo flaggati dal precedente evento e di conseguenza anche le query.

Come potrei risolvere il problema? Ringrazio in anticipo tutti coloro che possano fornirmi indicazioni.

10 Risposte

  • Re: Creazione automatica di query

    Ma i due FLAG “Invito” e “Partecipo” in quale tabella li salvi?

    A mio avviso ti manca una tabella di collegamento fra le due che hai creato: in questa nuova tabella dovrai memorizzare IDEvento (FK), IDNominativo (FK) ed i due FLAG.

    La subform che hai creato dovra' essere associata a questa tabella e linkata alla form principale attraverso  la FK IDEvento, mentre l'IDNominativo lo recuperi da una combo associata alla tabella Nominativi…

    Questo e' cio' che farei io…

  • Re: Creazione automatica di query

    18/01/2024 - Mailman ha scritto:


    Ma i due FLAG “Invito” e “Partecipo” in quale tabella li salvi?

    Ovviamente nella tabella “Nominativi” 

    Grazie Mailman, provo a seguire il tuo suggerimento. Ti aggiorno

  • Re: Creazione automatica di query

    Nel tuo modo, se lo stesso nominativo partecipasse ad un evento e non ad un altro, non terresti traccia dello storico e non potresti risalire a chi ha partecipato ad un evento…

    P.S. Do per scontato che in entrambe le tabelle che hai creato siano gia' presenti gli ID come PK (altrimenti occorre crearli…).

  • Re: Creazione automatica di query

    18/01/2024 - Mailman ha scritto:


    Nel tuo modo, se lo stesso nominativo partecipasse ad un evento e non ad un altro, non terresti traccia dello storico e non potresti risalire a chi ha partecipato ad un evento…

    Infatti è quello il mio problema, per questo chiedevo se c'era un modo per creare query autoamaticamente per ogni singolo evento.

    Credo che il tuo consiglio sia più pratico e, per me, più fattibile

    18/01/2024 - Mailman ha scritto:


    P.S. Do per scontato che in entrambe le tabelle che hai creato siano gia' presenti gli ID come PK (altrimenti occorre crearli…).

    Si, create

  • Re: Creazione automatica di query

    Tabelle:

    • Nominativi
    • Inviti (con flag)
    • Corsi
    • Avanzamenti se non usi flags (invitato, confermato, ecc…)

    Crei il corso e dai un idcordo (o evento)

    Crei la lista dei nominativi

    Crei l'invito cosi': 

    idcorso; idnominativo; idavanzamento (per ovviare al flag altrimenti flag=false che diventa true se conferma)

  • Re: Creazione automatica di query

    18/01/2024 - Mailman ha scritto:


    A mio avviso ti manca una tabella di collegamento fra le due che hai creato: in questa nuova tabella dovrai memorizzare IDEvento (FK), IDNominativo (FK) ed i due FLAG.

    La subform che hai creato dovra' essere associata a questa tabella e linkata alla form principale attraverso  la FK IDEvento, mentre l'IDNominativo lo recuperi da una combo associata alla tabella Nominativi…

    Grazie Mailman,

    ho fatto tutto come consigliato tranne la combo perché, creando la sottomaschera associata ai nominativi, mi basta digitare le iniziali e mi compare il cognome.

    Ora ho un altro problemino: i duplicati.

    Nel campo evidenziato, dopo aggiornamento, ho inserito questo codice:

    If Not IsNull(DLookup("Duplicato", "Nominativi", "Duplicato = " & Chr$(34) & Me!Duplicato & Chr$(34))) Then
    MsgBox Me!Duplicato & "Nominativo già presente", vbOKOnly, "Duplicato"
    Me.Undo

    DoCmd.GoToRecord , , acNewRec
    End If

    Mentre nella maschera di inserimento nominativi, funziona, nella sottomachera no.

    Dove ho sbagliato?

  • Re: Creazione automatica di query

    Crei una query

    select * from nominativi where codicefiscale=[parametro1] and datanascita=[parametro2]

    (abbiamo appurato che mario rossi del 1924 ha lo stesso codice fiscale di mario rossi nato nel 2024)

    esequi la query 

    se recordcount query = 0 oppure se query isEmpty significa che non ci sono duplicati.

    ergo:

    nel beforePost scrivi se not(query.isEmpty) allora canceEdit 

    duplicato=true

    on cancelEdit se duplicato=true Messaggio"bla bla" (eviti il messaggio se canceledit lo fai da utente annullando un inserimento).

    idem per la sub che e' una entità a parte.

  • Re: Creazione automatica di query

    22/01/2024 - Durodicomprendonio ha scritto:


    Ora ho un altro problemino: i duplicati.

    Io il problema dei duplicati lo risolverei a monte… Nella tabella dei nominativi non hai un campo che discrimini eventuali Nomi/Cognomi doppi (perche' potresti avere per es. due Mario Rossi)??… Di solito si utilizza il codice fiscale (indicizzandolo con duplicati non ammessi)… 

    22/01/2024 - sihsandrea ha scritto:


    (abbiamo appurato che mario rossi del 1924 ha lo stesso codice fiscale di mario rossi nato nel 2024)

    Sei sicuro?? Non ti fidare dei generatori di codice online. Agenzia delle Entrate inserisce delle variabili per evitarlo.

    A livello di subform, dovrai inserire il nominativo partendo dal codice fiscale o comunque andrebbe verificato prima dell'inserimento, cosi' non ti sbagli…

    Puoi inoltre inserire un indice univoco multicampo nella tabella Inviti controllando IDnominativo ed IDevento

    Vedi qui:

    https://support.microsoft.com/it-it/office/creare-e-utilizzare-un-indice-per-migliorare-le-prestazioni-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce

    spero di avere inteso il tuo quesito

  • Re: Creazione automatica di query

    18/01/2024 - Durodicomprendonio ha scritto:


    18/01/2024 - Mailman ha scritto:


    Ma i due FLAG “Invito” e “Partecipo” in quale tabella li salvi?

    Ovviamente nella tabella “Nominativi” 

    Grazie Mailman, provo a seguire il tuo suggerimento. Ti aggiorno

    Io dico no.

    Riepilogo a parole mie. Innanzitutto bisogna partire da almeno 3 tabelle:

    Nominativi
    IDNominativo
    Cognome
    Nome
    Indirizzo
    IDCittà
    …altri campi tipicamente anagrafici…

    Eventi
    IDEvento
    DataEvento
    LuogoEvento
    NomeEvento

    PartecipazioniEventi
    IDPE
    IDNominativo
    IDEvento

    Relazioni:
    Nominativi.IDNominativo uno-a-molti PartecipazioniEventi.IDNominativo
    Eventi.IDEvento uno-a-molti PartecipazioniEventi.IDEvento

    Va bene questo punto di partenza?

    C'è qualcosaltro di cui tenere conto/traccia?

    Si parla anche di Inviti. Come vorresti gestire questa cosa? Puoi fare anche un esempio pratico di come devono susseguirsi i vari passaggi?

  • Re: Creazione automatica di query

    22/01/2024 - Mailman ha scritto:


    Sei sicuro??

    Si, un mio conoscente ha dovuto far modificare il cf perché aveva un omonimo nato lo stesso giorno nella stessa città… se n'è accorto per una bolletta non pagata… dell'omonimo! Ovviamente ha passato i guai col recupero crediti…

    Ah, stessa via di abitazione ma civico diverso.

Devi accedere o registrarti per scrivere nel forum
10 risposte