COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

di il
22 risposte

22 Risposte - Pagina 2

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    28/12/2023 - sihsandrea ha scritto:


    pensa alle scatole cinesi o alla matriosca…

    si ragiona per insiemi, si quelli studiati a scuola.

    un insieme ha un identificativo che in informatica chiamiamo chiave primaria.

    il contenuto di questa scatola (matriosca o insieme) viene identificato da una chiave che per la scatola contenitore si chiama FK (chiave secondaria) e per il contenuto si chiama PK (chiave primaria).

    se hai la necessità che più pratiche siano nello stesso contenitore hai bisogno di un contenitore superiore (due oggetti non possono occupare lo stesso spazio, vale anche in informatica).

    Questo ragionamento mi sembra “ortodosso”.

    28/12/2023 - sihsandrea ha scritto:


    quindi hai bisogno di un collegamento molti a molti.

    Qua a me sfugge qualcosa.

    Ripensando tutto il progetto…le scatole cinesi mi illuminano in questo senso:

    Monster88 vuole che ogni Pratica “abbia a che fare con altre pratiche”. Molte Pratiche quindi devono essere “inglobate/riassunte” in un UNICO DISCORSO. Io chiamerei la tabella più superiore (mi si passi la denominazione non proprio ortodossa) Discorsi. I campi non saprei, ma minimizzando li vedrei così:

    Discorsi
    IDDiscorso (PK)
    NPraticaCapo (qua si potrebbe scrivere IDPratica di numero inferiore, nell'esempio 100. È vero che rischia di essere una inutile ridondanza, ma può tornare utile per “ricordare” all'utente da dove si è partiti)
    …altri campi che non saprei

    Pratiche
    IDPratica (PK)
    …tutti i suoi campi…
    IDDiscorso (FK)

    Documenti
    IDDocumento (PK)
    TipoDocumento
    Descrizione
    …altri campi…
    IDPratica (FK)

    Relazioni:
    Discorsi.IDDiscorso uno-a-molti Pratiche.IDDiscorso
    Pratiche.IDPratica uno-a-molti Documenti.IDPratica

    Quest'ultima mia soluzione, sebbene logicamente somigliante alla precedente, credo sia più semplice/leggibile rispetto alle tabelle con 2 relazioni che rischia di confondere le idee.

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    27/12/2023 - Monster88 ha scritto:


    Buongiorno,

    sto cercando di creare un database per la gestione dei documenti cartacei di varie pratiche.

    Il problema che ho da risolvere è il seguente, pongo un esempio.

    Ho la pratica n. X che è stata aperta il 18/01/2023, nell'arco dell'anno si sono aggiunte integrazioni, mail e altri documenti con numerazioni differenti che fanno riferimento alla pratica n. X. 

    I documenti successivi potrebbero fare riferimento ad altre pratiche oltre che alla pratica n. X. 

    Ad un certo punto mi viene chiesto di trovare alcuni o tutti i documenti collegati a questa pratica n. X. 

    E' possibile collegate tramite IDpratica 2 o più record della stessa tabella?

    L'idea era creare un database di registro di questo tipo:

    IDpratica

    Data apertura

    Data scadenza (se prevista)

    Codice_del_documento

    Tipo di documento

    Descrizione

    Percorso (creo una cartella per evitare di appesantire il database e inserisco il link)

    Soggetto

    Pratrica/e collegate

    Attendo un Vostro consiglio o suggerimento.

    Grazie mille

    Questo è uno dei casi limite, dove la miglior soluzione è violare le leggi di normalizzazione e dove forse, le famigerate combobox a selezione multipla possono ritornare utili.

    Gestire le istanze circolari che fanno riferimento alla stessa tabella, non è semplice.

    La via più semplice, sia logica che grafica è appunto di usare le combobox a scelta multipla.

    Queste ci evitano di creare tabelle di appoggio, relazioni molti a molti inutili, oppure query di tipo SELECT DISTINCT.

    Queste combo archiviano più dati nello stesso campo. I dati vengono separati tra di loro, solitamente con un punto e virgola ed i campi di destinazione possono essere anche far parte della stessa tabella che funge da fonte dati.

    Quando poi si dovranno recuperare i singoli dati, bisognerà andare a separarli trami qualche funzione di manipolazione delle stringhe che vada a selezionare i dati singolarmente.

    E questo mi sembra proprio il caso perfetto per questo genere di approccio.

    La soluzione è quindi semplice ed indolore.

    mi riferisco ad una soluzione di questo tipo:

    La combo riferimenti ha come fonte dati il campo numero pratica della stessa tabella dove sono archiviate le pratiche.

    Nella tabella in questione, avremo i dati archiviati in questo modo:

    Per abilitare questo genere di combo in modo semplice bisogna andare a modificare il campo che useremo come riferrimenti in struttura tabella, usando la “ricerca guidata”.

    In questo modo

    Seguendo poi le istruzioni.

    Access creerà automaticamente un nuova tabella clone e le relative relazioni, visibile solo nella pagina delle relazioni

    Come detto, una volta che i dati sono stati archiviati nel campo, per la visualizzazione singola dei documenti, basterà recuperare l'ìntero contenuto del campo, separare i vari numeri di protocollo dei documenti e poi darli in pasto ad una query per visualizzare e stampare i singoli documenti che fanno da riferimento.

    Spero di esserti stato di aiuto.

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    Provo a spiegare meglio…

    A te serve sapere che pratica 100 ha dati delle pratiche 101, 200 e 202

    Pratica 200 ha dati della pratica 100 e 400

    La pratica 400 ha dati della 200 e 201

    Il risultato può essere

    Nrpratica, campo2,…,Camporelazioni

    100.           Xxxx.           101;200;202

    200.           Yyyy.            100;400

    400.           Zzz.              200;201

    Camporelazioni, che sia la combo multiselect di fratac o un campo testo che attinge da una tabella a multiselezione o ad una list box multiselezione, devi sempre estrapolare i singoli id facendo riferimento al carattere speciale “;” ma qui ci si perde già nel capire il tipo di relazioni, non oso pensare all'arduo lavoro di estrapolazione, passaggio come parametro ad una query per visualizzare dati delle pratiche 101, 200 e 202 che dovrebbe avere già a disposizione solo per il fatto di avere in visualizzazione la pratica 100.

    Dovrebbe ritrovarsi nella situazione:

    Pratica. Campo.  Ecc…

    100.       Xxxx.      Bla bla

    E in dettaglio

    Praticamaster.  Praticadetail

    100.                      101

    100.                      200

    100.                      202

    Edin sub

    Pratica.  Campo.  Ecc..

    101.         Blabla.    Blabla

    Allo scorrere della tabella intermedia visualizzi il contenuto delle pratiche collegate.

    Ergo, una molti a molti dove il contenitore (insieme) superiore, ossia la scatola cinese che contiene i due insiemi è la tabella intermedia.

    Non ti massacri con multiselect, normalizzi e sedevi aggiungere o inserire altre n pratiche puoi farlo come (query di insert delete o update o da selezione lista pratiche con tasti inserisci, modifica ed elimina) e quando vuoi (basta eliminare o aggiungere e non devi modificare il campo testo 100;101;ecc…) 

    Considera che se devi eliminare una pratica collegata dovresti estrapolare l'id su una stringa che va da 1 a n caratteri; aprire la pratica per vederne il contenuto; eventualmente eliminarla e riscrivere la stringa…

    Normalizza…

    Aaggiungo: questo è ciò che hai chiesto ma, a mio parere, è un approccio errato. Tuttavia non conosco il contenuto dei dati e lo do per giusto.

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    29/12/2023 - sihsandrea ha scritto:


    Aaggiungo: questo è ciò che hai chiesto ma, a mio parere, è un approccio errato. Tuttavia non conosco il contenuto dei dati e lo do per giusto.

    Secondo me il problema è molto più complesso ed articolato di quello presentato, o comunque la richiesta fatta è solo l'ultimo passaggio di una procedura più lunga.

    Quello che sinceramente mi chiedo è un'altra cosa.

    L'operatore, come fa a collegare i vari documenti alle varie pratiche?

    Mi spiego.
    Se ha 1000 pratiche aperte, con 10 documenti l'una, e quindi 10000 mila documenti, quale metodo usa per fare la ricerca e quindi collegare i vari documenti alle rispettive pratiche?

    Se li ricorda a memoria? Usa una ricerca usando alti dati, tipo nome, cognome, codice fiscale, partita iva o tipologia di pratica?

    Da qui si dovrebbe partire per capire come sviluppare il database, perchè  lo sviluppo potrebbe prendere direzioni diverse in base alla modalità di immissione dei dati ed il problema potrebbe già risolversi impostando in modo diverso la creazione del database.

    Come al solito, sicuramente è un progetto che proviene da excel e si cerca di seguire la logica di excel trasponendola ad access.

    In tutti gli scenari che mi vengono in mente, a monte delle pratiche e dei documenti, c'è sempre un elemento superiore che fa da unione a tutti i documenti.

    Quindi si dovrebbe partire dal livello superiore e non dalla pratica o dai documenti allegati.

    Mi spiego.

    Se tizio nuova casa vuole costruirsi una nuova casa, deve presentare domanda al comune.

    Il comune richiede vari documenti. Ad esempio: Il disegno ed una perizia geologica e la ditta costruttrice Muratori incalcinati

    La ditta costruttrice deve a sua volta presentare la scia ed il durc che vanno a collegarsi alla pratica di Tizio nuova casa.

    Se dopo un certo periodo di tempo, Tizio nuova casa vuole ampliare l'edificio, secondo il ragionamento esposto, non dovrebbe presentare la perizia geologica, perchè è valida quella precedente, e se la ditta è la stessa, da ditta non dovrebbe presentare il durc, perchè valido quello precedente.

    Se nello stesso periodo, Caio vecchia casa, vuole restaurare la sua abitazione e si affida alla ditta Muratori incalcinati, la ditta non deve presentare il durc, perchè è valido quello  già presentato per Tizio nuova casa.

    Ora la pubblica amministrazione, taglia la testa al toro, perchè fa ripresentare ogni volta tutte le documentazioni richieste, anche se la fotocopiatrice le ha imparate a memoria.
    Quindi è da capire, come ora, fisicamente viene gestito il tutto, soprattutto per ricercare tutti i documenti già presentati e come vengono collegati tra di loro.

    Se è come presumo, cioè che ogni volta vengono fatte ricerche, in base al richiedente, andando a verificare i documenti presenti, spulciando tutte le pratiche, la situazione non si risolve con una semplice tabella uno a molti o molti a molti e non si risolve con una combo box multivalore, ma va sviluppato un sistema articolato che permetta di automatizzare tutto il processo di ricerca, immissione e visualizzazione, perchè se l'operatore deve fare manualmente tutte le ricerche, segnarseli da qualche parte, magari su un foglio di carta, e poi creare manualmente le relazioni tra i vari documenti, conviene veramente usare gli schedari cartacei.

    Quindi secondo me la richiesta fatta, si basa solo su come replicare l'effetto visivo finale e non su come replicare ed automatizzare tutti i passaggi che portano al risultato finale.

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    29/12/2023 - fratac ha scritto:


    la ditta non deve presentare il durc, perchè è valido quello  già presentato per Tizio nuova casa.

    Purtroppo il durc (dichiarazione di regolarità contributiva) scade il 17 del mese successivo…

    I contributi ai lavoratori vanno versati entro il 16 del mese successivo a quello di competenza della busta paga. Ovviamente l'inps o la gestione separata impiega 3 mesi per impostare il semaforo a rosso. Prima manda la nota di rettifica entro 2 mesi portando il semaforo a giallo, poi scatta il rosso. (Fine ot)

    Da come la vedo io si tratta di un citypass. Le condizioni sono (sarebbero)

    • Revisione e documenti veicolo
    • veicolo euro x (da associare 1 a m con nominativo)
    • Disabilità documentata
    • Eventuale residenza nella zona ztl
    • Ecc…

    Basta la relazione per capire se i documenti ci sono e non sono scaduti.

    Per la pratica, considerando le combo box, dovrebbe venire fuori una tabella “documentipratica” con l'elenco dei documenti necessari (un promemoria che magari attinge alla tabella documenti del nominativo e li accorpa se non scaduti (revisione, disabilità, residenza)

    Poi un tasto duplica che prende l'ultima pratica e precompila la nuova al netto dei documenti scaduti.

    E così via… ma excell, come hai supposto, è sempre nel dna del neofita.

    Quanto alla ridondanza, alimenti solo una molti a molti dove prima c'era la pratica 100 associata alla 20 e 50 adesso hai la 700 associata alla 100 (che in cascata ti fa risalire alle pratiche 20 e 50) ma sempre concettualmente sbagliato.

    Suppongo che le pratiche da associare vengano filtrate per nominativo o targa… boh!

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    27/12/2023 - Monster88 ha scritto:


    Ho la pratica n. X che è stata aperta il 18/01/2023, nell'arco dell'anno si sono aggiunte integrazioni, mail e altri documenti con numerazioni differenti che fanno riferimento alla pratica n. X. 

    Fermo restando quanto ti è stato suggerito per normalizzare il db, basta che nella tabella molti collegata al nominativo, aggiungi il record con il nuovo documento. Se il nuovo documento si riferisce ad un nuovo tipo di autorizzazione, lo aggiungi alla tabella dei documenti necessari alla pratica (quella che ho chiamato “promemoria”).

    Come vedi non hai la necessità di creare collegamenti a nuove pratiche ma inserire 1 a molti i documenti non scaduti che hai nelle varie tabelle (sia del nominativo che dei vari, chiamiamoli, uffici).

    …e scordati di excell! non si chiamano tabelle ma fogli di calcolo.

    ti aveva già risposto OsvaldoLaviosa su come normalizzare il db.

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    Con un PDM o il per me il fantastico LOTUS NOTES con il drag and drop ti costruisci tutte le strutture che vuoi con 2 tabelle

    DOCUMENTO

    PARENT_CHILD 

    L'importante è avere il controllo anti recursione cioè nella PARENT_CHILD  un PADRE non deve avere se stesso come  FIGLIO

    Se può esser utile la struttura delle tabelle SQL del mio PDM le posso postare insieme ad alcuni script che utilizzo per implementare la PARENT_CHILD cercando i cosiddetti FIGLI “orfani”

  • Re: COLLEGARE 2 O PIU' RECORD DELLA STESSA TABELLA ACCESS

    Se vuoi curiosare per 30gg ti funziona come TRIAL

    https://reservedarea.mechworks.com/get-a-trial/

    Se non ti serve l'integrazione CAD scarica la StandAlone

    Con pochi dati lavora con Acces poi puoi convertire il DB in SQL o da SQL ritornare a Acces

Devi accedere o registrarti per scrivere nel forum
22 risposte