Moderatori: Anthony47, Flash30005
Che tipo di campi sono Data; OraInizio; OraFine; AltroTurno? Lo stesso dipendente può avere più di un record in questa tabella per lo stesso giorno? Supponiamo il caso di un dipendente assunto il 25/1/2008: puoi illustrare cosa troveremmo scritto nella tabella Orario di lavoro per questo dipendente nel mese di gennaio 2008 e cosa vorresti ottenere da tali dati?pino61 ha scritto:La tabella Orario di lavoro: IdOrarioDiLavoro;IdDipendenti; Data; OraInizio; OraFine; AltroTurno.
Purtroppo non riesco ancora a inquadrare completamente il problema, per cui sono costretto a ripetermi:pino61 ha scritto:l'aiuto che chiedo è per riuscire a calcolare le ore settimanalmente dal lunedì alla domenica, e non dall'1 al 7, sapendo che il dipendente deve effettuare 36 ore settimanali alla scadenza, questo può capitare in qualsiasi giorno della settimana, vorrei inserire un messaggio che mi avvisa di dargli un riposo.
Alessandroarchimede ha scritto:Supponiamo il caso di un dipendente assunto il 21/1/2008: puoi illustrare cosa troveremmo scritto nella tabella Orario di lavoro per questo dipendente nel mese di gennaio 2008 e cosa vorresti ottenere da tali dati?
SELECT IdOrarioDiLavoro, IdDipendenti, Data, OraInizio, OraFine, DateDiff('h',[OraInizio],[OraFine]) AS Ore, DatePart("ww",data) AS Settimana
FROM Orariodilavoro;
SELECT IdDipendenti, Settimana, SUM(Ore) AS OreTotali
FROM OreLavorate GROUP BY IdDipendenti, Settimana;
Probabilmente questo perché i nomi dei campi nella query non corrispondono ai nomi dei campi della tabella: OraInizio oppure Ora_Inizio?pino61 ha scritto:La query all'apertura mi chiede di inserire l'ora d'inizio e l'ora di fine.
Come dicevo, per gestire anni diversi le query andranno un po' modificate.pino61 ha scritto:In questa maschera ho creato una casella dove all'interno ho inserito 2 caselle combinate chiamate rispettivamente: elenco anni e elenco mesi. Nella prima appaiono a tendina gli anni fino al 2020 e nell'altra tutti i mesi dell'anno.
Sempre dentro questa tabella inoltre ho inserito 6 caselle di testo chiamate: 1^ settimana, 2^ settimana, 3^ settimana 4^ settimana, 5^ settimana e ore di straordinario. Questo per permettere all'operatore di vedere subito, selezionando l'anno ed il mese le ore lavorate nelle rispettive settimane e in quella dello straordinario la somma delle ore eccedenti le 36 di ogni settimana.
Puoi dirmi come procedere?
SELECT IdOrarioDiLavoro, IdDipendenti, Data, OraInizio, OraFine,
DateDiff('h',[OraInizio],[OraFine]) AS Ore,
DatePart("ww",data) AS Settimana,
Month(data) AS MeseComp,
Year(data) AS AnnoComp
FROM Orariodilavoro;
SELECT IdDipendenti, Settimana, AnnoComp, MeseComp, SUM(Ore) AS OreTotali
FROM OreLavorate GROUP BY IdDipendenti, Settimana, AnnoComp, MeseComp;
SELECT IdDipendenti, AnnoComp, MeseComp, SUM(Ore) AS OreTotali
FROM OreLavorate GROUP BY IdDipendenti, AnnoComp, MeseComp;
SELECT IdDipendenti, Settimana, AnnoComp, SUM(Ore) AS OreTotali
FROM OreLavorate GROUP BY IdDipendenti, Settimana, AnnoComp;
SELECT IdDipendenti, AnnoComp, SUM(Ore) AS OreTotali
FROM OreLavorate GROUP BY IdDipendenti, AnnoComp;
Supponendo che tu abbia salvato le query di cui sopra in Access, potrai leggerne i dati come fossero normali tabelle:pino61 ha scritto:Però se cambia l'anno appaiono tutti i precedenti, come bisogna fare per filtrarli.
SELECT * FROM nomeQuery WHERE AnnoComp = 2008;
Ormai da anni non lavoro più con Access, per cui su Maschere e Reports temo di poter essere di scarso aiuto. Comunque, come dicevo sopra, se sai visualizzare in una form i dati di una tabella, puoi usare lo stesso metodo per i dati di una query.pino61 ha scritto:Ti avevo posto il quesito sulle maschere, forse non sono stato chiaro?
SELECT IdDipendenti, Settimana, AnnoComp, MeseComp, SUM(Ore) AS OreTotali,
DMax(SUM(Ore) - 36, 0) AS OreStraord
FROM OreLavorate GROUP BY IdDipendenti, Settimana, AnnoComp, MeseComp;
SELECT IdDipendenti, Settimana, AnnoComp, MeseComp, SUM(Ore) AS OreTotali,
IIf(SUM(Ore) > 36, SUM(Ore) - 36, 0) AS OreStraord
FROM OreLavorate GROUP BY IdDipendenti, Settimana, AnnoComp, MeseComp;
Non ho capito: l'ultima query che ti ho dato dovrebbe calcolare il totale di ciascuna settimana per ogni mese (ogni settimana identificata da un numero progressivo all'interno dell'anno). Se faipino61 ha scritto:il mio problema ora è dividere le settimane nel mese. Come devo fare a portarle in evidenzia nella maschera?
SELECT FROM NomeVista WHERE AnnoComp=2008 AND MeseComp=4 ORDER BY Settimana;
Anche questa non l'ho capita: nel db i campi data ovviamente supportano le 24 ore: forse il tuo problema è il formato con cui le visualizzi o quello usato per inserire i dati.pino61 ha scritto:Inoltre mi sono accorto che access non mi accetta ore 24,00 forse devo fare qualche modifica alle proprietà.
Torna a Applicazioni Office Windows
Access 2003: creare maschera per inserire dati su più tabell Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 1 |
Access 2003: funzione per contare dati Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 1 |
Access 2003: contatore maschera sballato Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 1 |
Condizioni IIF nelle Query di Access Autore: GelriccaSud |
Forum: Applicazioni Office Windows Risposte: 2 |
Visitano il forum: Nessuno e 22 ospiti