Query e Stampa Personale

di
Anonimizzato10561
il
12 risposte

Query e Stampa Personale

Ciao a tutti,

mi presento. Sono un dilettante di access e sto cercando di creare un database per gestire il pesonale dipendente sotto vari aspetti trai quali ci sono le presenze.

Ho una tabella così strutturata:
Dipendete Data Motivazione_assenza Ore_Assenza Ore_Ordinaria

sto cercando di creare una query e un report che mi restituiscano, per un periodo di tempo che desidero, Questo risultato

Dipendete Motivazione assenza 01/01 02/01 03/01
Tizio 8 4
Tizio Permesso 4
Tizio Ferie 8

N.b: nella prima riga ci devono andare le ore ordinarie

La query che sono riuscito a scrivere è questa:

"TRANSFORM Sum(IIf([Ore Ordinarie]>0,[Ore Ordinarie],[Ore Assenza]-[Ore Ordinarie])) AS campo
SELECT Presenze.Dipendente, Presenze.[Ore Assenza], Presenze.Motiv_Assenza, Last(Presenze.[Ore Ordinarie]) AS [UltimoDiOre Ordinarie]
FROM Presenze
GROUP BY Presenze.Dipendente, Presenze.[Ore Assenza], Presenze.Motiv_Assenza
ORDER BY Format([Data],"Short Date")
PIVOT Format([Data],"Short Date");"

Da questa query volevo poi ricavare il report. Purtroppo la query non funziona bene perchè nei giorni in cui le ore di assenza non sono 8 (vedi il 02/01) nella prima riga mi da zero.

Qualcuno può aiutarmi?

grazie

12 Risposte

  • Re: Query e Stampa Personale

    Sto cercando di creare una query e un report che mi restituiscano, per un periodo di tempo che desidero, Questo risultato

    Dipendente Motivazione assenza 01/01 02/01 03/01
    Tizio 8 4 (a cosa corrisponde il valore 8?)
    Tizio Permesso 4
    Tizio Ferie 8

    N.b: nella prima riga ci devono andare le ore ordinarie (non ho capito)

    In tutto il discorso non capisco quali sono le colonne della query.
    I tre record con "Tizio" sono in corrispondenza delle 3 date (1-2-3/gennaio)?
  • Re: Query e Stampa Personale

    Ciao,

    scusa ma inviando il messaggio si deve essere spostato qualcosa.

    Si i tre record di Tizio sono in corrispondenza delle tre date.

    Il valore che dovrebbe finire nella prima riga sono le ore di lavoro ordinario (8 se ha lavorato il giorno intero oppure 4 se ha lavorato solo mezza giornata).

    Spero di essermi spiegato.

    Intanto ti ringrazio
  • Re: Query e Stampa Personale

    Scusami di nuovo, comprendo benissimo il problema dell'editor dove scriviamo per scambiarci i messaggi che impedisce di scrivere in maniera correttamente incolonnata. Ma continuo a non capire. Ti chiederei di riscrivere i campi separati da / e anche i corrispondenti valori separati da /.
    Io intanto dico cosa ho capito:

    Tabella avente i seguenti 6 campi:
    Dipendente / Data / MotivazioneAssenza / OreAssenza / OreOrdinaria

    Query avente le seguenti 4 colonne con relativi valori:
    Dipendente / Data / MotivazioneAssenza / OreAssenza
    - Data ce l'ho aggiunto io per coerenza con tutto il resto, quindi deve essere anch'essa una colonna.
    - OreAssenza non lo hai scritto nella tua descrizione query, ma lo immagino io così dal contesto, quindi...
    Tizio / 1 gen / 8 che motivazione assenza è? / 4
    Tizio / 2 gen / Permesso / 4
    Tizio / 3 gen / Ferie / 8

    Le mie domande sono:
    1) Quel 8 al primo record che significa? Oppure si trova nella colonna sbagliata?
    2) "Nella prima riga ci devono andare le ore ordinarie". Che significa? In Access una riga significa record, non un qualcosa di staccato dal resto del contesto: almeno nelle tabelle e query. Al limite su un report puoi creare un rigo a parte, staccato, fuori contesto dove puoi scrivere quello che vuoi.............ma non vorrei andare io completamente fuori strada.

    Scusami se non capisco, sto tentando a tutti i costi di venirti incontro.
  • Re: Query e Stampa Personale

    Ciao,

    non scusarti, anzi sei fin troppo gentile.

    Comuque hai inquadrato bene il discorso.

    Nella mia idea le otto ore di Tizio del giorno 01/01 sono le ore di lavoro ordinario.

    Praticamente a me serve una query e un report nel quale per ogni dipendente ci siano;
    nel primo record le ore ordinarie e dal secondo record in poi un record per ogni motivazione di assenza.
  • Re: Query e Stampa Personale

    Continuano a non tornarmi molte cose.
    A) Se "Nella mia idea le otto ore di Tizio del giorno 01/01 sono le ore di lavoro ordinario" allora il 4 accanto che significato ha?
    B) "Praticamente a me serve una query e un report nel quale per ogni dipendente ci siano;
    nel primo record le ore ordinarie e dal secondo record in poi un record per ogni motivazione di assenza"
    Mi viene il sospetto che tu stia confondendo un foglio dati di una tabella o query di Access con un foglio di Excel. In Access ogni rigo si chiama record e proprio perchè si chiama record deve avere dati omogenei SEMPRE. Da come racconti tu, il primo rigo deve avere dati logicamente diversi da tutto il resto degli altri righi.

    Vorrei che tu confermassi questa mia interpretazione, prima di continuare. Poi, forse avrei idea di come inquadrare meglio il tutto.
  • Re: Query e Stampa Personale

    Ciao,

    si direi che hai inquadrato la situazione.

    Praricamente Tizio il giorno 01/01 ha fatto 8 ore di lavoro ordinario, il giorno 02/01 ha fatto 4 ore di lavoro ordinario e 4 ore di permesso e il giorno 03/01 ha fatto 8 ore di ferie.

    quindi nel primo record ci vanno le ore ordinarie e nei record successivi le varie motivazioni assenze

    grazie
  • Re: Query e Stampa Personale

    Ma il fatto che il giorno 1 gen Tizio abbia fatto 8 ore di lavoro è soltanto un caso.
    Penso che ti possa sempre capitare che un Dipendente Caio o Sempronio possa, il primo giorno di lavoro, cadere nelle caselle successive............aaaahhhhhhh mo forse ho capito.
    Accidenti, la tua descrizione mi aveva totalmente depistato e non capivo, non capivo davvero.
    Quindi se Caio nel 1 gen fa 4 ore lavoro e 4 ore permesso (con motivazione), tu li indichi entrambi.
    Se Caio nel 2 gen fa 8 ore di lavoro tu indichi solo le ore di lavoro
    Se Caio nel 3 gen fa 8 ore di ferie tu indichi soltanto le 8 ore di ferie (con motivazione).
    Giusto???

    Ora, la query "per un periodo di tempo che tu desideri" deve riguardare ogni singolo Dipendente, oppure vuoi avere una idea di tutti quanti?

    Però, bando a quest'ultima domanda, nella query, in ogni caso dovrai mettere tutte le colonne e, caso per caso, vedrai i valori OreLavoro e OreAssenza visualizzati/stampati rispettivamente un po' più a sinistra e un po' più a destra, ma mai incolonnati tutti insieme con valori disomogenei.
  • Re: Query e Stampa Personale

    Esatto,

    direi che hai inquadrato bene la situazione.

    Per quanto riguarda il filtro su dipendente direi chemi piacerebbe avere la possibilità di stampare tutti o solo alcuni dipendenti.
  • Re: Query e Stampa Personale

    Adesso che ho compreso tutto per bene, direi che ti si presentano diversi casi:
    Fermo restando che vuoi sempre un filtro sul periodo, quindi sul campo Data, tu potresti desiderare di vedere/stampare i dati di:
    A) Tutti Dipendenti
    B) Un Dipendente
    C) N Dipendenti a tua scelta.

    Nel caso A non dovremo apporre alcun filtro al campo Dipendenti: OK
    Nel caso B si tratta di filtrare un solo Dipendente: Semplice
    Nel caso C vuoi scegliere Tizio, Caio: forse Semplice

    Se nel caso C ho scritto "forse semplice" è perchè dobbiamo capire insieme se la query da costruire tu la ricostruisci ogni volta che vuoi stampare (nel futuro report), oppure più elegantemente vuoi inserire uno per uno i Dipendenti. In quest'ultimo caso, ci devo riflettere un po'.

    Allora:
    1) Creare query di selezione che chiamerei DipendentiPeriodo nella quale, in visualizzazione struttura importerai la tabella (non mi hai mai detto come si chiama la tabella).
    2) Trascina i campi uno per uno (tutti) nella griglia in basso.
    3) Alla colonna Data, in corrispondenza di Criteri devi scrivere la seguente sintassi
    Between "<data inizio>" And "<data fine>"
    abbi cura di scrivere le due date esattamente nello stesso formato di come hai inserito i dati tu.
    4) Salva la query
    5) Crea un report che poggia sulla query, dovrebbe esistere una procedura guidata.
    Questo è il caso A.

    Per i casi B e C, dovrai modificare la query, andando in visualizzazione struttura query.
    In corrispondenza del campo Dipendente, sempre a Criteri, scrivi la seguente sintassi:
    Like "Tizio"
    se vuoi continuare con altri dipendenti, scrivi nel rigo di sotto
    Like "Caio"
    ecc...
    Fai attenzione che, per ogni Dipendente in più che aggiungi, devi ricordarti di riscrivere la stessa sintassi del filtro Data in corrispondenza del rigo di ogni Dipendente.

    Quello che ti ho scritto è un metodo molto semplice e risponde alle tue domande.
  • Re: Query e Stampa Personale

    Ciao Intanto ti ringrazio.

    La tabella in questione si chiama Presenze e la query e il report che mi hai consigliato andrebbe benissimo ma a me serve un report in cui le date siano visibili in orizzantale e non in verticale.
  • Re: Query e Stampa Personale

    Vorrei mandarti un allegato ma non riesco, sai come devo fare?
  • Re: Query e Stampa Personale

    Temo che ci possa essere qualche problema di incoerenza oppure di non convenienza di spazio, però non ho chiaro questo tuo desiderio.
    Puoi contattarmi direttamente via e-mail:
Devi accedere o registrarti per scrivere nel forum
12 risposte