Db access2007 anagrafica ripartire ogni anno dalla tessera 1

di il
12 risposte

Db access2007 anagrafica ripartire ogni anno dalla tessera 1

Ciao a tutti! premetto che sono un vero niubbo ma che ogni tanto riesco a fare diverse cosette applicandomi molto... sto sistemando un db di anagrafica (che ho scopiazzato prendendo da diverse parti) per gestire i tesserati che ogni anno debbono reiscriversi ad una associazione culturale e quindi iniziare di nuovo dalla tessera numero 1. Sinceramente non ho ben chiaro come fare (pensavo al fatto di creare una tabella 'tesserati2014' e poi 'tesserati2015' e così via impostando il programma a mano all'inizio dell'anno sulla nuova tabella, ma ho comunque la necessità di consultare con un 'trova' gli iscritti ed eventualmente anche per anno diverso dall'attuale e mi piacerebbe che fosse tutto automatico e quindi probabilmente sarebbe meglio rimanere ad una sola tabella nella quale ho anche inserito il valore now per la data automatica di registrazione dalla quale posso rilevare l'anno del record nel caso in cui vado a cercare dei tesserati per anno. Inoltre mi piacerebbe, avendo impostato i campi 'paeseNascita' e 'dataNascita', che tali campi si compilassero in automatico quando vado a compilare il campo 'codiceFiscale', così come la 'provincia' dell'abitazione quando vado a compilare la 'città' dell'abitazione (esiste già una tabella dalla quale pesca il form 'codiceFiscale' per poterlo creare dai dati nome nascita ecc. ... mi potete aiutare? P.S. mi sembra di avere postato al punto giusto... altrimenti chiedo venia! dimenticavo di chiedere se c'è un modo per evitare le modifiche non volute... es. se io compilo un nuovo record con i suoi dati vorrei che se cambio record o chiudo la sessione il programma mi chiedesse la conferma per salvare, e così anche per le modifiche di tesserati già inseriti. Mi servirebbe che il db possa essere condiviso in contemporanea nella rete interna tra 3 pc e se uno scrive gli altri due possono solo consultare fare query o report da stampare e/o inviare per mail.

12 Risposte

  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    alex25.01 ha scritto:


    pensavo al fatto di creare una tabella 'tesserati2014' e poi 'tesserati2015' e così via
    Sbagliato.

    alex25.01 ha scritto:


    probabilmente sarebbe meglio rimanere ad una sola tabella nella quale ho anche inserito il valore now per la data automatica di registrazione
    Giusto. Per il valore predefinito "Data odierna" è meglio usare =Date()

    alex25.01 ha scritto:


    data...dalla quale posso rilevare l'anno del record nel caso in cui vado a cercare dei tesserati per anno
    Lo puoi realizzare con un filtro immediato selezionando la porzione di testo relativa all'anno oppure con una query che filtra l'anno che ti interessa.

    alex25.01 ha scritto:


    mi piacerebbe, avendo impostato i campi 'paeseNascita' e 'dataNascita', che tali campi si compilassero in automatico quando vado a compilare il campo 'codiceFiscale'
    Non ti puoi fidare dal Codice Fiscale per fare una cosa del genere. Sebbene il codice fiscale nel 95% dei casi è calcolabile, bisogna ricordare che si tratta pur sempre di un valore assegnato dal ministero e come tale va preso in considerazione.

    alex25.01 ha scritto:


    così come la 'provincia' dell'abitazione quando vado a compilare la 'città'
    Questo è possibile sfruttanto correttamente le relazioni. Se cerchi in giro un documento dell'utente @Alex (Alessandro Baraldi) dal titolo "Caselle combinate a cascata" si parla proprio dello sfruttare le stretta relazione che c'è fra Comuni, Province, Regioni. In un database di esempio costruito da lui, puoi trovare una tabella di tutti i Comuni d'Italia già compilata con i campi CAP, Provincia ecc...

    alex25.01 ha scritto:


    mi sembra di avere postato al punto giusto... altrimenti chiedo venia!
    OK. Benvenuto nel forum.

    alex25.01 ha scritto:


    c'è un modo per evitare le modifiche non volute... es. se io compilo un nuovo record con i suoi dati vorrei che se cambio record o chiudo la sessione il programma mi chiedesse la conferma per salvare, e così anche per le modifiche di tesserati già inseriti
    Non te lo consiglio, altrimenti occorre mettere mano a codici in VBA. Come sei messo su questo argomento? Io non sono in grado di aiutarti.

    alex25.01 ha scritto:


    Mi servirebbe che il db possa essere condiviso in contemporanea nella rete interna tra 3 pc e se uno scrive gli altri due possono solo consultare fare query o report da stampare e/o inviare
    Io non lo so fare.

    Riguardo la numerazione che riparte da 1 a ogni inizio anno...ci hanno provato in molti. La questione non è affatto semplice. Occorre mettere a punto un non semplice codice VBA che faccia questo. Tutto ciò poi però a patto che la tabella rimanga sempre ordinata in un solo e unico modo altrimenti la numerazione salta e ti compromette tutto il lavoro precedente. Prova a leggere vari thread precedenti dal titolo più o meno "contatore relativo". Io personalmente ci ho rinunciato e preferisco numerare a mano.

    Suggerimento: se leggi attentamente il regolamento del forum, si consiglia di postare un argomento semplice alla volta piuttosto che chiedere tante domande tutte insieme, almeno che non si tratti di domande omogenee e pertinenti al titolo principale del thread stesso.
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    OsvaldoLaviosa sono veramente contento che mi hai risposto subito. Prendo atto dell'ultimo suggerimento e poi cercherò di seguire passo-passo... una domanda: perchè dici sia meglio data() invece di now?
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Se devi gestire soltanto la data è più ortodosso =Date(). Se devi gestire Data/Ora è giusto =Now(). Dipende dal Formato che hai scelto tra le proprietà del campo di tipo Data/Ora.
    Sinceramente facevo anch'io come te, poi ho scoperto pignole osservazioni all'interno di questo forum al riguardo, non ricordo bene le modalità. Adesso sono io a girarti questa informazione.
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Ah! ok... ma sai? ho cambiato now() in data() e vedo che mi restituisce sempre data e ora anche se io nella maschera ho impostato per vedere solo data... ma pensavo che in un qualche raro caso particolare (tipo che a posteriori ci fosse un diverbio in merito al momento della registrazione e si debba poterlo verificare!)... comunque allora a questo punto cambio di nuovo in now()... anzi mi correggo perchè lo avevo modificato in Data() e salvato ma poi ora che sono andato in struttura trovo di nuovo Now() e se provo ad impostarlo come Data() e poi salvo mi dice 'errore di sintassi nell'espressione... è possibile che sia stata immessa una virgola non preceduta da un valore o da un identificatore'... non mi dilungo perchè ho capito che la mia necessità è comunque Now()
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Ed ora una domanda: c'è un modo per mantenere sempre la tabella ordinata e quindi bloccata nell'ordinamento secondo il crescere dell'ID chiave primaria?... poi immagino che qualsiasi cosa si faccia tipo un trova o un ordinamento in ordine alfabetico si dovrebbe impostare con una query che tenga presente dell'anno interrogato senza modificare la tabella, cosa ne pensi? Oppure ripensandoci (ma debbo parlare con il mio collaboratore) potrei utilizzare l'ID della chiave primaria (incremento all'infinito) /anno (però non so se la legge permette un formato del genere, nel senso che ogni periodo dovremo stampare i report della nuova lista dei soci da aggiungere da trasmettere al commercialista che poi saranno forati ed inseriti nel libro soci e timbrati)... e quindi avendo un campo nella maschera nella quale imposto l'anno tra quelli disponibili in tabella (questo nel caso in cui interrogo) oppure l'anno attuale per definizione e poi un campo dove mi segnala tramite una query il totale dei tesserati per quell'anno... e così avrei risolto! tipo il 1° gennaio 2015 la prima tessera potrebbe essere 1420/2015. Però debbo sempre andarmi a vedere il fatto di bloccare il record da modifiche non volute inserendo un pulsante per il salvataggio (visto che, anche se raramente, avviene che uno di noi vada a modificare non volendo!).
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    alex25.01 ha scritto:


    c'è un modo per mantenere sempre la tabella ordinata e quindi bloccata nell'ordinamento secondo il crescere dell'ID chiave primaria?
    Proprio bloccare l'ordinamento non saprei. Tu lo ordini per ID chiave primaria e Salva. Se per caso ti scappa di ordinare diversamente, quando chiudi tabella o maschera, Access invia un messaggio per chiederti se vuoi salvare le nuove modifiche e tu rispondi No.

    alex25.01 ha scritto:


    poi immagino che qualsiasi cosa si faccia tipo un trova o un ordinamento in ordine alfabetico si dovrebbe impostare con una query che tenga presente dell'anno interrogato senza modificare la tabella, cosa ne pensi?
    Esatto.

    Tutto il resto, per me, lascia perdere, è solo un gran casino.
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Ma non pensi che se io prendo come numero tessera la chiave primaria ID della tabella possa andare bene? così per ogni anno come ti dicevo potrei continuare la numerazione considerando che appartiene all'anno successivo! scusa se prima non ho specificato facendo l'esempio di un numero tessera tipo 1502/2014 che andrei a scrivere anche sulla tessera dell'associato in questo modo... altrimenti se non fosse possibile neanche questo dovrei dire che access non vale proprio nulla!
    Un suggerimento... come posso fare perchè sul campo che io chiamo ANNO appaia l'anno che è scritto nello stesso record nel campo DataRegistrazione?............... sono ridotto male eh!!!???? beh... piano piano spero di quagliare!
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Un campo chiave primaria serve per dare univocità assoluta a un record. Sul campo chiave primaria devi essere sicuro che i valori non si ripeteranno mai. Un campo contatore te lo garantisce a priori, altri tipi di campo devi essere bravo tu utente a non scrivere i doppioni, se lo fai Access ti invia un messaggio di errore di duplicazione valore. Se usi il campo chiave primaria per il numero tessera, lo puoi fare benissimo, direi che non ti serve più l'anno...ma nessuno ti vieta di scrivere l'anno accanto a scopo decorativo/mnemonico.

    alex2501 ha scritto:


    come posso fare perchè sul campo che io chiamo ANNO appaia l'anno che è scritto nello stesso record nel campo DataRegistrazione?
    Occorre estrapolare l'anno dalla Data attraverso una query con l'espressione Year([NomeCampo])
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Bene fatto! e invece poi debbo impostare un campo [TotaleTessere]dell'anno (quindi deve leggere tutti i record che contengono lo stesso anno del campo che ho messo prima). Forse per questo serve fare una query tipo conta quanti record sono dove year è uguale al campo anno che ho scritto prima?
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Per sapere quanti record ha una tabella o query devi sfruttare DCount con la seguente sintassi:
    DCount("*";"Nome tabella o query")
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    E riferito ai record con presente lo stesso valore nel campo ANNO? ho creato una query di valori duplicati... per esempio nella tabella ho nel campo AnnoTesserati 55 occorrenze 2014 e 2 occorrenze 2015 e quindi la query mi crea due colonne e nella seconda riga mi mette il 2015. Nella maschera Tesserati nel campo TotaleTessere nelle proprietà origine controllo ho scritto questo DCount("*";"mia query") e in questo campo della maschera appare 2 (invece di 55) tenuto conto che AnnoTesserati nel campo della maschera appare 2014.... penso sia ovvio visto che non ho dato nessuna indicazione per dire che a me serve che scriva i valori duplicati del campo AnnoTesserati 2014 che appare ora nella maschera ----->>> come posso fare per dare la giusta istruzione? praticamente dovrei dire alla query di estrarre il solo numero di ricorrenze dell'anno che appare selezionato nella maschera!
  • Re: Db access2007 anagrafica ripartire ogni anno dalla tessera 1

    Hai 2 possibilità.
    1) Metti un filtro nella query sull'anno e avrai 2 record anzichè 55. DCount conterà 2 di conseguenza (soluzione preferibile).
    2) La funzione DCount (leggi bene sulla guida in linea) permetterebbe l'utilizzo di un terzo argomento che funge proprio da filtro. Utilizza correttamente la sua sintassi e DCount conterà i record che essa stessa ha filtrato grazie al terzo argomento. Io non amo usare il terzo argomento e, se dovessi trovare difficoltà, direi che te lo sconsiglio.

    Suggerimento: questa ultima domanda sembra allontanarsi decisamente dal titolo iniziale. Ti consiglio di aprire un nuovo thread ogni qualvolta questo accade.
    Rileggendo...non sono sicuro di aver risposto correttamente alla tua ultima domanda. Se così fosse, apri un nuovo thread e descrivi tutto più dettagliatamente. Possibilmente riscrivi ciò che serve al fine di una chiara lettura per chi lo fa per la prima volta e non ha seguito questo thread.
Devi accedere o registrarti per scrivere nel forum
12 risposte