Ancora sulle turnazioni

di il
33 risposte

33 Risposte - Pagina 2

  • Re: Ancora sulle turnazioni

    mazda91 ha scritto:


    Nella tabella creata (non quella collegata) cosi fatta vorrei fare in modo di trovare i turni presi dal file txt e ovviamente ad ora così non è. Come ottengo questo "collegamento". Relaziono ID_Turno (della tabella creata) con Turni della tabella importata ?
    Grazie

    Io ho spiegato che la tabella TURNI è quella che contiene i dati importati dal TXT.
    Ti ho anche indicato in modo chiaro le strutture delle varie tabelle con Nomi, tipo di dato e dimensione.

    Tu parli di:
    Tabella creata? (QUALE?)
    Tabella collegata? (QUALE?)
    Campo ID_Turno? (Da dove salta fuori?) e comunque usare l'underscore è una pratica sconsigliata e deprecata, oltre che assolutamente inutile.

    Francamente fatico a seguirti, forse è un mio limite.
  • Re: Ancora sulle turnazioni

    mazda91 ha scritto:


    - il campo turno (tipo testo) assume 6 valori ai quali corrispondono 6 turni che identificano 6 situazioni diverse (mattino feriale, mattino prefestivo, mattino festivo, ecc.) e che sono contraddistinti essenzialmente da diversi orari di inizio e fine;
    ............................

    lunedi 18/1/16, ROSSI Paolo, Turno1, 8:00-12:00, centralino
    lunedi 18/1/16, ROSSI Paolo, Turno1, 12:00-14:00, reception
    lunedi 18/1/16, ROSSI Paolo, Turno1, 14:00-16:00, centralino
    lunedi 18/1/16, BIANCHI Mario, Turno1, 8:00-12:00, cucina
    lunedi 18/1/16, BIANCHI Mario, Turno1, 12:00-16:00, autista
    Io leggo una contraddizione in questo testo. Se hai 6 Turni, perchè questo recordset mostra TimeInizio - Time Fine diversi, ma sempre Turno1?

    Il recordset che hai mostrato (che tu dichiari partire da FileTxt (anche senza TipoMansione) e che esporti in quella che tu chiami TabellaCollegata), anche se lo vogliamo aggiustare, non può essere un recordset di una tabella, ma al massimo di una query basata su più tabelle...forse quelle indicate da gibra...ma io avrei da dire altro...
    Io non ho capito se tu vuoi "automatizzare" qualcosa che parte da FileTxt (non normalizzato) per poi entrare "normalizzato" in Access. Non è una cosa che si fa tanto a "schiocco di dita".
    Parlo secondo le mie conoscenze: una volta messe in piedi le 3-4 tabelle ben relazionate--->normalizzate, devi:
    1. Aprire il FileTxt
    2. Leggere i dati con i tuoi umani occhi e interpretarli secondo la nuova logica normalizzata
    3. Inserirli nel nuovo organico di tabelle normalizzate
    4. Predisponi una query su più tabelle che ti mostri nuovamente il recordset che hai illustrato
  • Re: Ancora sulle turnazioni

    Ciao Gibra e Osvaldo,
    evidentemente devo aver capito male alcuni suggerimenti. Il primo è relativo alla tabella Turni nella quale ho messo ID_Turno (qui utilizzo l'underscore per una questione visiva, per prima e meglio riconoscere le cose, non sapevo fosse da evitare) che mi hai indicato tu Gibra. Però siccome nella tabella che importo da txt e che quindi essendo collegata non è possibile modificare, non posso aggiungerci nulla, ho creduto volessi dire di creane una ex novo. Per rispondere a Osvaldo, il recordset indicato è stato buttato lì per praticità, per non mettere qualcosa di lunghissimo e quindi indica pochi dati. Infine per chiarire al meglio l'obiettivo, quello che vorrei realizzare è preso il ile txt nel quale ci sono già i turni, importare questi dati in tabella access e poi far sì che possa mettere assieme i turni con le mansioni. Ecco perché ho creato quel recordset, quello dovrebbe essere (schematizzato) il risultato voluto. Infine per non commettere altri errori, Gibra quando dici IDMansione (PK) Long intendi che il campo è un contatore (?) e altrettanto per i campi IDTurno (PK) e IDTipoMansione (PK) - Long. Grazie e saluti a tutti.
  • Re: Ancora sulle turnazioni

    Vuol dre che confermi il comportamento dell'utente

    OsvaldoLaviosa ha scritto:


    1. Aprire il FileTxt
    2. Leggere i dati con i tuoi umani occhi e interpretarli secondo la nuova logica normalizzata
    3. Inserirli nel nuovo organico di tabelle normalizzate
    4. Predisponi una query su più tabelle che ti mostri nuovamente il recordset che hai illustrato
    abbandoni l'idea della fantomatica TabellaCollegata e che hai bisogno solo di strutturare correttamente tutte le tabelle.
    Vado avanti a mia ruota libera. Secondo me la struttura tabelle in ACCESS deve essere la seguente (userò nomi di tabelle appropriati):

    Dipendenti
    IDDipendente (numerazione automatica, chiave primaria)
    Cognome
    Nome
    NumeroBadge

    Turni (questa tabella avrà 6 record come hai detto tu)
    IDTurno (numerazione automatica, chiave primaria)
    Turno
    TimeInizio
    TimeFine

    TipiMansioni
    IDTipoMansione (numerazione automatica, chiave primaria)
    TipoMansione

    AssegnazioniTurni
    IDAT (numerazione automatica, chiave primaria)
    DataAssegnazione
    IDTurno (numerico)
    IDDipendente (numerico)
    IDTipoMansione (numerico)

    Relazioni:
    Dipendenti.IDDipendente uno-a-molti AssegnazioniTurni.IDDipendente
    Turni.IDTurno uno-a-molti AssegnazioniTurni.IDTurno
    TipiMansioni.IDTipoMansione uno-a-molti AssegnazioniTurni.IDTipoMansione

    Quando crei le relazioni nella finestra Relazioni abbi cura di mettere sempre la spunta su "Applica integrità referenziale", se vuoi anche la spunta sugli altri 2.
    Ripeto, se vuoi vedere un recordset simile a quello che hai mostrato, devi impostare una query MOLTO DOPO che avrai inserito un bel po' di dati significativi.
  • Re: Ancora sulle turnazioni

    Ciao Osvaldo e buonagiornata,
    perdona la mia cocciutaggine (leggasi ignoranza, di chi non sa !!!) ma così facendo dove prendo i dati d'origine, cioè a dire se non collego la tabella come faccio a sapere che tizio oggi fa il turno3 o altro ?
  • Re: Ancora sulle turnazioni

    Non hai letto/capito il COMPORTAMENTO DELL'UTENTE che ho suggerito. Il FileTxt è un misero "rettangolo" con un testo che non sapremo mai quanto ben formattato sarà (questa è la mia opinione/punto di vista). Io non me la sento di fidarmi di darlo in pasto a un codice VBA (non se ne è mai parlato finora) che dovrebbe automatizzare un qualcosa che non hai mai chiarito, nessuno vuole chiarire ecc...

    Non devi collegare nessuna tabella. La "cosiddetta tabella" di FileTxt è buona solo per essere guardata con gli occhi umani. Poi sei TU che devi DIGITARE i valori nelle tabelle di Access. Se le tabelle di Access ti sembrano ancora brutte/scarne/poco intuitive, allora usi le maschere con tutti i controlli che piacciono a te per rendere Input e Lettura più gradevoli.
    Direi che i primi input base li fai nelle tabelle Dipendenti, Turni e TipiMansioni. Queste tabelle (Dipendenti non tanto) al 90% non cambieranno mai i loro dati. La tabella dove andrai a inserire davvero i dati (quasi quotidianamente o settimanalmente...) è AssegnazioniTurni. Ovviamente sfrutterai opportune caselle combinate per renderti l'input più facile...ma questo è tutto un altro discorso.

    mazda91 ha scritto:


    come faccio a sapere che tizio oggi fa il turno3 o altro ?
    Prima inserisci i dati in AssegnazioniTurni.
    Poi predispondi la query "multitabelle" con tutti i campi che desideri vedere.
    Poi, se ti piace, te la stampi in grande e la esponi all'ingresso dell'ufficio in modo che sia visibile da tutti.
  • Re: Ancora sulle turnazioni

    Osvaldo, ti ringrazio delle spiegazioni. Il fatto è che abbandonando la tabella con i dati (txt) per me vorrebbe dire avere una mole di dati troppo grande da inserire. E' questo il motivo per cui vorrei usare quei dati. Il redordset per una settimana (vera) mi da circa 500 record. Capisci che invece che organizzare meglio le cose se faccio così vuol dire lavorare ancor di più. Grazie
  • Re: Ancora sulle turnazioni

    Hai detto che il FileTxt (o anche html) è l'output di un altro software che non conosciamo.
    Il SoftwareX non sappiamo se potrebbe ottimizzare alla fonte un meccanismo/gioco tabelle simile alla logica relazionale di Access. Se sì il gioco è fatto a monte da SoftwareX.
    Se no, vuol dire che SoftwareX ha una serie di limiti che la logica relazionale di Access può migliorare/completare in molti modi. Ma Access pretende un input dati "corretto"/"normalizzato"...ecc...
    Secondo me non puoi pretendere dal forum un lavoro ad hoc in base a quello che hai descritto finora.
  • Re: Ancora sulle turnazioni

    Ciao Osvaldo,
    purtroppo quello che ho è solo quello che indicavo al forum, l'unica cosa che è possibile esportare è quel file.
    Ad ogni modo grazie del tempo dedicato e delle vostre competenze.
    Alle prossime
  • Re: Ancora sulle turnazioni

    mazda91 ha scritto:


    evidentemente devo aver capito male alcuni suggerimenti. Il primo è relativo alla tabella Turni nella quale ho messo ID_Turno (qui utilizzo l'underscore per una questione visiva, per prima e meglio riconoscere le cose, non sapevo fosse da evitare) che mi hai indicato tu Gibra. Però siccome nella tabella che importo da txt e che quindi essendo collegata non è possibile modificare, non posso aggiungerci nulla, ho creduto volessi dire di creane una ex novo.
    Infatti è proprio così.
    Scusa, ma non devi 'collegare' un file TXT al tuo database, è un rischio enorme, perché
    1) se quelli del software esterno modificano qualcosa (nome file, percorso, altro...) perdi tutto!!!
    2) poi, mi spieghi come fai a collegare 'univocamente' 3 orari in una sola riga di turno?
    I dati vanno importati, di volta in volta, accodandoli alla tabella TURNI (di cui ti ho già fatto la struttura) utilizzando una banale query INSERT INTO ....
    Dovesse accadere anche ciò che ho indicato al punto 1, non riuscirai ad importare i nuovi dati, ma quelli presenti restano intatti.


    mazda91 ha scritto:


    . Infine per non commettere altri errori, Gibra quando dici IDMansione (PK) Long intendi che il campo è un contatore (?) e altrettanto per i campi IDTurno (PK) e IDTipoMansione (PK) - Long.
    Confermo, tutte le PK che ti ho indicato nelle tabelle vanno impostate come campo Contatore.
  • Re: Ancora sulle turnazioni

    Osvaldo e Gibra, vi ringrazio ancora della vostra disponibilità, devo 'insistere' sulla strada del legare (passatemi il termine) il file txt al db perché altrimenti mi sarebbe impossibile gestire una massa così grande di dati. Può essere che la cosa non sia fattibile o può essere che lo sia magari su altri sistemi (il bello è che ci capisco poco in access e ancor meno altrove). Vi chiedo un ultimo parere su questa soluzione pensata in serata:
    1) da txt collego tabella;
    2) da questa con una query di creazione tabella, creo una tabella (TServizi) e vi aggiungo un campo (ID);
    3) creo una tabella mansioni (TMansioni);
    4) relaziono le due tabelle (una-a-molti) campi Addetto in TServizi e TMansioni;
    5) creo una maschera MServizi con sottomaschera (foglio dat) SMMansioni.
    Che ne dite ? Nel pomeriggio mi ci proverò. Non sono sicuro della relazione. Anche qui, che ne dite ? E' corretta, impostata così ?
    Grazie
  • Re: Ancora sulle turnazioni

    mazda91 ha scritto:


    1) da txt collego tabella
    Hai provato a leggere questo?
    https://support.office.com/it-it/article/Importare-o-collegare-dati-di-un-file-di-testo-d6973101-9547-4315-a8f8-02911b549306
    È vero che si parla della possibilità di sia IMPORTARE sia COLLEGARE, ma il sito stesso evidenzia tutte le possibili problematiche riguardanti formattazioni di campo, riconoscimento di virgole ecc...
    Sul discorso COLLEGARE...poi dice che in Access non è possibile modificare i dati nelle tabelle sperando che questi si riperquotano sul txt originale.

    Io ho poi perso il filo della normalizzazione con tutti questi nomi tabelle sempre diversi.
    Se non ricordo male, importando una qualsivoglia tabella in Access, se questa non è normalizzata...prova a leggere anche questo
    https://support.office.com/it-it/article/Normalizzare-i-dati-con-Analizzatore-tabelle-8edbb763-5bab-4fbc-b62d-c17b1a40bbe2

    A me però non convince affatto l'eventuale ping-pong di dati che dovrebbe far dialogare FileTxt con l'ensemble di tabelle normalizzate di Access. Io vagamente intuisco che (ammesso che sia corretto)

    mazda91 ha scritto:


    1) da txt collego tabella;
    2) da questa con una query di creazione tabella, creo una tabella (TServizi) e vi aggiungo un campo (ID);
    3) creo una tabella mansioni (TMansioni);
    4) relaziono le due tabelle (una-a-molti) campi Addetto in TServizi e TMansioni;
    5) creo una maschera MServizi con sottomaschera (foglio dat) SMMansioni.
    stai cercando di minimizzare i danni perchè i dati sono molti.
    Riepilogando, ogni volta che ti arriva il nuovo FileTxt, tu vuoi ripetere ogni volta tutte queste operazioni. Se sì e ne sei consapevole...evidentemente ci metti meno tempo di stare a digitare tutto a mano...hai raggiunto il tuo scopo.
    Un lavoro fatto così ci può stare...a me interessava focalizzare l'attenzione sulla corretta normalizzazione delle tabelle di Access...perchè penso che poi vorrai lavorare in Access nella maniera più comoda ed efficiente possibile...ma devi anche conoscere e sottostare alle sue regole...bla bla bla...poi non so...
  • Re: Ancora sulle turnazioni

    mazda91 ha scritto:


    devo 'insistere' sulla strada del legare (passatemi il termine) il file txt al db perché altrimenti mi sarebbe impossibile gestire una massa così grande di dati.
    Invece è vero il contrario.
    Il collegamento non fa altro che 'caricare' tutti i dati in una tabella, ed ogni volta devi fare il Refresh sulle tabelle collegate per ottenere i dati aggiornati (equivale a ri-collegare la tabella), e questo avviene sempre su TUTTI i dati.
    Lo chiami ottimizzazione, questa?

    l'importazione, al contrario, importerà solo le righe non presenti dal file TXT nella tabella locale.

    A parte questo, voglio poi vedere come fai a gestire una mole di dati (sempre più grande) in una tabella collegata dove non esistono né chiavi primarie né indici.

    Francamente credo che il limite sia solo nella tua mente. Altri problemi non ne esistono.
    Per cui sei TU che devi scegliere se approfittare di questa occasione per migliorare le tue conoscenze.

    Se intendi proseguire sulla strada che ti stiamo consigliando, allora oltre al link che ti ha fornito Osvaldo ti suggerisco caldamente di guardare anche questo, che a mio avviso è determinante:

    Schema.ini File (Text File Driver)
  • Re: Ancora sulle turnazioni

    Ho fatto delle prove e questo è il risultato, uno positivo e uno negativo:
    importati i dati da txt e fattili confluire in tabella con il meccanismo descritto tutto funziona, anche l'abbinamento con le mansioni in sottomaschera il problema nasce dal fatto che questa procedura va bene se non carico ulteriori dati perché il nuovo txt da importare va a ricreare la tabella sulla quale lavoro e ciò non è possibile perché questa è relazionata. Per cui cosciente che il limite è mio (altrimenti non avrei chiesto alcun aiuto) e vista la mole di dati che nell'altra soluzione dovrei immettere (manualmente) credo che la cosa sia da abbandonare. Ho verificato che in un mese il txt contiene poco meno di 500 record immaginate se il lavoro mi si estende su più mesi cosa mi va a significare. Vi ringrazio dell'opportunità di crescita che mi date (Gibra ti segnalo che il link suggerito restituisce pagina non trovata) ma oltre non riesco ad andare. Il tentativo è quello di velocizzare un lavoro ma se come ho capito devo fare l'immissione dati a mano .... tocca rinunciare. Grazie
  • Re: Ancora sulle turnazioni

    Che tu hai bisogno di crescere e cogliere meglio valore e potenzialità di Access: ciò resta.
    Io vorrei provare a salvare quel po' di "male minore" che si potrebbe cavare dalla tua richiesta iniziale, cioè dalle tue txt.

    mazda91 ha scritto:


    importati i dati da txt e fattili confluire in tabella con il meccanismo descritto tutto funziona, anche l'abbinamento con le mansioni in sottomaschera il problema nasce dal fatto che questa procedura va bene se non carico ulteriori dati perché il nuovo txt da importare va a ricreare la tabella sulla quale lavoro e ciò non è possibile perché questa è relazionata
    1. Usa una tabella di appoggio per ogni volta che fai l'importazione da FileTxt in TabellaAppoggioInizio
    2. Normalizzi TabellaAppoggioInizio in più TabellaAppoggio1, TabellaAppoggio2, TabellaAppoggio3...
    3. Accodi i valori di ogni TabellaAppoggioN nelle tabelle corrispondenti
    4. Quando vedi che tutti i dati sono confluiti correttamente in tutte le tabelle (quelle vere), cancelli i dati da TabellaAppoggioInizio, TabellaAppoggio1, TabellaAppoggio2, TabellaAppoggio3...
Devi accedere o registrarti per scrivere nel forum
33 risposte