report mensile che si crea in automatico

Anonimo
2013-10-18T11:33:40+00:00

Ciao a tutti

è possibile creare un report, del tipo foglio dati (VUOTO), che si crei in automatico ogni volta che io seleziono i parametri della query?

Mi spiego...

Ho una tabella TBLALUNNI, una con le Classi .

Vorrei creare un report che abbia l'aspetto come illustrato in figura (che è un foglio excel dove nella cella E2 c'è la formula =DATA(A1;C1;16)

in a1 ho scritto l'anno =2013

in c1 il mese = 10 x ottobre

e 16 è il giorno in cui è iniziata la scuola

Se il report si può creare in questo modo la mia query parametrica dovrebbe chiedermi "quale classe?" e digitando 2FA;  "quale mese?" e digitando 10 vorrei uscisse la figura ...

:-)

Marina

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-10-27T10:31:26+00:00

Ciao Marina,

la query qryProspettoMensile_B estrae le informazioni relative alle assenze con l'espressione:

wG1: IIf(Day([DataAssenza])=1;"A";"")

questo per il giorno 1. Volendo gestire anche il ritardo potresti cambiarla in:

wG1: IIf(Day([DataAssenza])=1;"A";IIf(Day([DataRitardo])=1;"R";""))

ripetendola per i 31 giorni possibili. :-)

Nella maschera frmProspettoMensile_1 dovresti gestire i due differenti valori in input A o R.

Innanzitutto sarebbe opportuno controllare che vengano digitati solo quei due caratteri e non altri.

Quindi nella routine AggiornaGiorno, a secondo del valore digitato devi aggiornare dei campi di tabella

piuttosto che altri.

Ti lascio un po' di divertimento. ( Non preoccuparti sono sempre quì. )

Ciao Mimmo

La risposta è stata utile?

0 commenti Nessun commento

46 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-10-27T13:37:34+00:00

    Ciao,

    prova così:

    Private Function AggiornaGiorno(wGiorno)

        Dim wData As Date

        AggiornaGiorno = True

        DoCmd.SetWarnings False

        Echo False

        wData = Format(wGiorno & "/" & txtMese & "/" & Year(Now()), "mm/dd/yyyy")

        If IsNull(Me("G" & wGiorno).OldValue) Then   ' Se non avevo niente in precedenza

           GoSub Inserisci                           ' Richiamo una routine per non scriverla due volte

        Else                                         ' avevo un vecchio valore nel giorno

           If Me("G" & wGiorno).OldValue = "A" Then  ' se avevo assenza la elimino

              DoCmd.RunSQL ("Delete From tblAssenze Where IDAlunno =" & IDAlunno & " And IDClasse = " & tblCLASSE_ID & " And DataAssenza = #" & wData & "#")

           Else                                      ' se avevo ritardo lo elimono

              DoCmd.RunSQL ("Delete From tblAssenze Where IDAlunno =" & IDAlunno & " And IDClasse = " & tblCLASSE_ID & " And DataRitardo = #" & wData & "#")

           End If

           GoSub Inserisci

        End If

        Echo True

        DoCmd.SetWarnings True

        Exit Function

    Inserisci:

        If Me("G" & wGiorno) = "A" Then           ' ed è stata digitata una A inserisco l'assenza

           DoCmd.RunSQL ("Insert Into tblAssenze (IDAlunno,IDClasse,DataAssenza,Assenza) Values(" & IDAlunno & ", " & tblCLASSE_ID & ", #" & wData & "#, True)")

        Else                                      ' altrimenti inserisco un ritardo

           DoCmd.RunSQL ("Insert Into tblAssenze (IDAlunno,IDClasse,DataRitardo,Ritardo) Values(" & IDAlunno & ", " & tblCLASSE_ID & ", #" & wData & "#, True)")

        End If

        Return

    End Function

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-10-27T11:32:12+00:00

    Qui mi sono persa ...

    >Quindi nella routine AggiornaGiorno, a secondo del valore digitato devi aggiornare dei campi di >tabella piuttosto che altri.

    If IsNull(Me("G" & wGiorno).OldValue) Then

    If IsNull(Me("G" & wGiorno).OldValue = "R") Then

    DoCmd.RunSQL ("Insert Into tblAssenze (IDAlunno,IDClasse,DataRitardo,Ritardo) Values(" & IDAlunno & ", " & tblCLASSE_ID & ", #" & wData & "#, True)")

    Else

    DoCmd.RunSQL ("Delete From tblAssenze Where IDAlunno =" & IDAlunno & " And IDClasse = " & tblCLASSE_ID & " And DataRitardo = #" & wData & "#")

    End If

    End If

    non funziona :'(

    :'(

    :'(

    :'(

    marina

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  4. Anonimo
    2013-10-26T20:15:32+00:00

    :D grz .... vero, ma solo tu mi hai risposto ("su..." e "so.."pportato  finora)

    la domanda su dcount la posto in un post (non sono riuscita a farla funzionare ... rispetto all'alunno)

    ci voglio arrivare da sola ma sono 4 giorni e non ci riesco:-(

    Nella tua maschera volevo mettere non solo una "X" ma anche una "R" ... ma mi credi non ho capito dove inserire il codice? E' una funzione? Ufff

    Se vedi nella mia tabella TBLassenze c'è anche l'informazione relativa ai ritardi o alle note. La tua maschera mi è molto utile (di più di quella che sto usando che implica il selezionare l'alunno, mettere la data ecc..).

    La tua è facile come un foglio excel (che volevo appunto). Ma come in excel c'è la possibilità di contare se ci sono le X oppure la R oppure la N

    è una condizione If c'è una X riempi dataAssenza altrimenti se c'è una R riempi la dataRitardo altrimenti se c'è N riempi con dataNota altrimenti lascia in bianco.

    Marina

    p.s. ;-) ^.^

    La risposta è stata utile?

    0 commenti Nessun commento