Query di accodamento

di il
30 risposte

Query di accodamento

Ciao a tutti, riprendo una discussione da:
https://www.iprogrammatori.it/forum-programmazione/progettazione-database/database-per-organizzare-lavoro-equipe-t23383.html

per esporre il mio problema.
In un db usato per organizzare il lavoro giornaliero/settimanale di 20 dipendenti mi trovo con questo problema. Molti addetti fanno molti lavori quindi succede che a volte capita che Addetto1 il giorno XXX faccia il lavoro XXX e altri lavori, come posso fare in modo da automatizzare l'azione DuplicaRecord senza dover tutte le volte selezionare un singolo record in tabella Lavori e duplicarlo ? L'ideale sarebbe (per esempio) che potessi per Addetto2 duplicare quello che fa in un certo giorno o intervallo di giorni in altri giorni/intervalli da un comando InputUtente.
Es. Seleziona Addetto ... > Copia lavori del giorno ... > Copia nel giorno ... o dal ... al ...

Ciao e grazie a tutti

30 Risposte

  • Re: Query di accodamento

    Forse ti serve una "query di accodamento con parametri". Tale query deve contenere dei filtri "parametro" ad es.:
    Like [Digita l'Addetto]
    Like [Digita DataInizio]
    Like [Digita DataFine]
    ...ho scritto 2-3 cose alla svelta (poi si tratterebbe di entrare più nei dettagli tecnici di campi e tabelle).
    Tale query, quando la esegui, ti chiederà di digitare i 3 parametri (uno alla volta) che ti ho esposto. Dopo di che effettuerà l'accodamento previsto.
  • Re: Query di accodamento

    Allora ho strutturato così la tabella:
    ID:contatore + Data: data/ora + Turno: numerico + Dalle ore: data/ora + Alle ore: data/ora + Servizio: numerico + Addetto: testo (valori multipli) perché a volte un lavoro viene fatto in 2 o più addetti + note: memo.
    La query dovrebbe fare questo:
    dato il record XXX (criterio 1/2/3 ecc.) accoda XXX volte.
    Domanda da 1 milione di dollari di paperopoli: come faccio ?
  • Re: Query di accodamento

    Un aggiornamento. In tabella ho un campo (Addetto) che è multivalore e questo (credo) crei problemi. Nella maschera creata dalla tabella ho inserito il pulsante DuplicaRecord (creazione guidata access) e quando lo clicco succede che mi crea un nuovo record i cui campi però sono vuoti (??). Circa la query di accodamento non mi è chiaro questo:
    - creo la query selezionando tutti i campi della tabella poi la faccio diventare da selezione a accodamento e metto gli input in criteri .... questo farà si che selezioni quello che cerco ma come fare a farli incrementare di X volte ?
    vale a dire ... se lunedi 10 aprile ho un lavoro che voglio ripetere per l'addetto1 da martedì a giovedì come faccio ?
    Grazie a tutti
  • Re: Query di accodamento

    La query è passata - per ora - in secondo piano perché devo risolvere la questione del campo multivalore (Addetto) che però mi è necessario sia presente in questo modo. Come pensate possa risolverla ?
  • Re: Query di accodamento

    Perchè pensi che il campo multivalore ti stia dando problemi?
    Sono noti i problemi su questo tipo di campo...eppure mi sembra che l'applicazione nel tuo caso sia quanto mai appropriata. Io non direi.

    Riguardo l'applicazione della query di accodamento N volte, io predisporrei una piccola maschera con un testo di domanda "Vuoi accodare più volte questo turno di lavoro. Quante?" e accanto una casella di testo in cui ci scrivi tale valore. Un codice VBA appropriato (con un ciclo Do...Loop o For...Next) può stabilire di accodare quelle N volte.
  • Re: Query di accodamento

    Dalla tabella creata con procedura guidata access ho fatto creare una maschera nella quale ho inserito un pulsante DuplicaRecord ... ebbene al clic sul pulsante viene creato un nuovo record ma vuoto. Nelle varie prove che ho fatto ho notato che se il campo Addetto non è multivalore tutto funziona regolarmente.
  • Re: Query di accodamento

    In un turno di lavoro quanti Addetti al massimo sono previsti? Se davvero 2 o 3 (per più di 4 non oserei)...potresti prevedere i campi IDAddetto1, IDAddetto2, IDAddetto3, IDAddetto4. Comprendi bene che si tratta di una soluzione pratica ma non normalizzata o, come la chiamo io, pezza a colori.
    Se invece vuoi fare le cose per bene, devi prevedere la relazione Addetti molti-a-molti Lavori attraverso una tabella di congiunzione che chiamerei Assegnazioni.
  • Re: Query di accodamento

    Ciao Osvaldo,
    la soluzione cosiddetta "ci metto una pezza" mi era balenata da subito poi mi sono detto ... chiedo aiuto per una cosa così sul forum e mi ritroverò linciato. A parte gli scherzi, non capita che gli addetti ad un lavoro siano più di 4, però mi sarebbe piaciuto cavarmela in maniera elegante. Ho provato con ulteriori prove e l'unica cosà - per ora - riuscita è in tabella è selezionare il/i record Copiare e Incollare e poi eventualmente andare a fare qualche modifica. Ancora però così non va. Devo trovare qualcosa di meglio.
  • Re: Query di accodamento

    Il "Copia/Incolla e Modifica poi" è una maniera arcaica (l'ho fatto anch'io moltissime volte) di dire la stessa cosa di "query di accodamento".
    Vorrei osservare i Pro e Contro della soluzione "pezza a colori":
    Pro: non devi prevedere una ulteriore tabella di congiunzione e la query di accodamento lavorerebbe direttamente sul Turno.
    Contro: non è elegante almeno sotto 2 punti di vista:
    1. non è normalizzata (teoria)
    2. considera tutti quei turni che non prevedono fino a 4 Addetti. Avresti molti record vuoti nei campi IDAddetto4, IDAddetto3 ecc...a ritroso.

    Vorrei altresì osservare che se domani desideri "qualificare" il lavoro di ogni singolo Addetto (es. capo, mansioneX, mansioneY), sarai costretto a cedere il passo alla relazione molti-a-molti.
  • Re: Query di accodamento

    Ciao Osvaldo,
    per cui come mi consigli di procedere ? Considera che (se possibile) vorrei tenere il campo Addetto su multivalore.
  • Re: Query di accodamento

    Considera me un utente della vecchia guardia. Giro ancora preferibilmente con Access 2003 sul mio PC e ho (per forza di cose) Access 2007 (ma lo uso raramente) su un altro PC. Non so che dirti. Prova a leggere questa discussione
    http://forum.masterdrive.it/access-79/campo-multivalore-85748/
    che proprio io ho proposto, in quanto avevo un problema simile. Tutti me lo hanno sconsigliato. Di conseguenza io propendo per la relazione molti-a-molti.
  • Re: Query di accodamento

    Ciao Osvaldo,
    pensandoci potrei fare anche così:
    faccio diventare il campo Addetto non più multivalore (e così risolvo un primo problema), quando dovesse capitare che un lavoro lo fa anche un altro addetto Duplico il record relativo e ... pace.
    Mi rimane da risolvere quindi la query di accodamento. Penso che potrebbe capitare che organizzato il lavoro di n Addetti per n giorni poi lo si voglia Duplicare con un meccanismo del tipo Duplica i record dei giorni dal ... al ... relativo agli Addetti.... per i giorni che vanno dal ... al ....
    Ciao e grazie.
  • Re: Query di accodamento

    mazda91 ha scritto:


    faccio diventare il campo Addetto non più multivalore (e così risolvo un primo problema)
    Ricordo di aver fatto la stessa cosa anch'io in un mio database. Nel mio caso è importante tenerne traccia, ma non è indispensabile sapere notizie di ogni singola Persona, ossia non mi serve indicizzare singolarmente. Se vuoi percorrere questa strada, ti consiglio almeno di mantenere una certa coerenza "digitativa manuale"...ad esempio nel mio caso, scrivo sempre in ordine alfabetico di Cognome, stessa spaziature delle virgole. Perchè capisci bene che scrivere:
    Rossi Mario, Verdi Giuseppe, Bianchi Antonio
    Bianchi Antonio, Verdi Giuseppe, Rossi Mario
    Bianchi Antonio, Rossi Mario, Verdi Giuseppe
    per te significano la stessa cosa, per Access no. Nel caso dell'esempio scrivi sempre come nel 3° rigo.

    mazda91 ha scritto:


    Mi rimane da risolvere quindi la query di accodamento. Penso che potrebbe capitare che organizzato il lavoro di n Addetti per n giorni poi lo si voglia Duplicare con un meccanismo del tipo Duplica i record dei giorni dal ... al ... relativo agli Addetti.... per i giorni che vanno dal ... al ....
    Credo di aver già risposto. Io, al posto tuo, mi limiterei a filtrare solo i Turni che ti interessano e accodarli N volte. Ma non includerei le date DalGiorno e AlGiorno. Ciò implicherebbe espressioni troppo elaborate...devi tenere conto anche dei giorni festivi...per me non ne vale la pena. Morale: questi ultimi digitali a mano.
  • Re: Query di accodamento

    Intanto una precisazione. Continuo a trovare errori nella Duplicazione. Access mi da Errore di incolonnamento. Mi viene creata una tabella con i dati parzialmente duplicati. I campi vuoti sono Data + DalleOre + AlleOre (???).

    Grazie
Devi accedere o registrarti per scrivere nel forum
30 risposte