Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VBA/ACCESS] Report stile calendario mensile Outlook

    Ciao a tutti,
    nel mio gestionale ho una parte che gestisce degli eventi, più precisamente degli incontri sportivi.
    Ho creato una query che mi prende tutte le tabelle necessarie e mi restituisce tutti gli incontri che mi interessano, corredati con tutti i dati necessari.
    I campi di questa query sono l'ID dell'incontro, la data e l'ora e altri campi quali il luogo, le squadre, ecc.

    Naturalmente possono esserci più incontri per ogni giorno, come possono esserci giorni senza incontri.

    Ora devo creare un report strutturato come un calendario. Tipo quello che stampi con MS Outlook scegliendo lo stile mensile. Una pagina per ogni mese, una griglia in cui ogni casella rappresenta un giorno, con sette colonne (una per giorno della settimana), di modo che nella prima colonna avrò tutti i lunedì, nella seconda i martedì, ecc... e nelle righe le varie settimane.

    Ovviamente, devo poter vedere caselle vuote nei giorni in cui non ci sono partite e più partite nelle caselle in cui è necessario...

    Per ora ho creato una tabella chiamata _giorni che all'apertura del report popolo con l'intervallo di giorni che mi interessa (una riga per ogni giorno), poi faccio un LEFT JOIN tra questa tabella e la mia query. Nei giorni in cui c'è più di una partita però il report mi genera due caselle ovviamente, dato che nella query risultante ci sono due righe. Mi sfasa quindi la corrispondenza dei giorni della settimana incolonnati.

    Qualcuno ha un'idea di come risolvere il problema o addirittura un'approccio diverso al problema?

    Per chi non avesse ben capito come voglio il report, allego uno screenshot di quello generato da Outlook. Io lo vorrei il più simile possibile.

    Grazie in anticipo
    Immagini allegate Immagini allegate
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  2. #2
    up
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  3. #3
    up
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459

    Moderazione

    Originariamente inviato da 8matt5
    up
    Direi che è inutile "uppare" all'infinito: fai una ricerca con Google e cerca di reperire più informazioni o soluzioni già pronte per questa esigenza.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Ho uppato dopo un mese... Non mi sembra di essere stato pressante... Semplicemente speravo di trovare altri utenti che un mese fa non c'erano e portare il problema alla loro attenzione...

    Comunque di solito quando vengo qua a chiedere aiuto ho già fatto qualche ricerca... Sia all'interno del forum che all'esterno. Continuerò le ricerche....



    P.S. Grazie per il link a Google, me l'ero dimenticato....
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,459

    Moderazione

    Originariamente inviato da 8matt5
    Ho uppato dopo un mese... Non mi sembra di essere stato pressante... Semplicemente speravo di trovare altri utenti che un mese fa non c'erano e portare il problema alla loro attenzione...
    Non hai capito il punto: proprio perché è passato un mese, anche tu avresti dovuto già fare qualche passo avanti in questa ricerca, o aver preso delle decisioni in merito, oppure aggiungere altri dettagli per arricchire la richiesta originale.

    In caso contrario, che passi un mese, un anno o un lustro, è irrilevante ai fini di un "up" che non può essere infinito.

    La mia indicazione voleva essere uno stimolo semplicemente ad aggiungere dei dettagli o delle proposte, in modo da rifinire la richiesta d'aiuto, altrimenti la probabilità di trovare qualcuno oggi che nel giro di un mese non ha risposto è piuttosto bassa.

    Originariamente inviato da 8matt5
    Comunque di solito quando vengo qua a chiedere aiuto ho già fatto qualche ricerca... Sia all'interno del forum che all'esterno. Continuerò le ricerche....
    Meglio così. Purtroppo devo specificarlo perché, al contrario di te (in base a quanto dici), tanti altri utenti non lo fanno.

    Se nella tua ricerca hai trovato qualcosa che possa essere utile per aggiungere dettagli al problema, o un qualche esempio che si avvicina ma non soddisfa appieno, postalo così magari qualcuno può trovare uno spunto per capire meglio e aggiungere informazioni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7

    Re: Moderazione

    Originariamente inviato da alka
    avresti dovuto già fare qualche passo avanti in questa ricerca, o aver preso delle decisioni in merito, oppure aggiungere altri dettagli per arricchire la richiesta originale.
    In effetti... no... Mi ero piantato e avevo accantonato la cosa. Ieri l'ho ripresa in mano e l'ho uppata.

    Comunque ho fatto altre ricerche, ma niente.
    Stamattina forse ero ispirato o forse ho svuotato la testa da ciò su cui mi ero bloccato e ho trovato una soluzione, neanche troppo complessa.

    In base al mese di cui ho bisogno trovo il primo lunedì antecedente o uguale al primo del mese e riempo una tabella temporanea con tutti i giorni delle 6 settimane seguenti.

    Creo un report basato su questa tabella temporanea (e solo su questa, non sul LEFT JOIN tra questa e quella degli eventi, come nel primo post), lo imposto orizzontale, 7 colonne.
    Aggiusto le dimensioni del corpo di modo da farci stare 7 colonne per bene e 6 righe (il corpo rappresenta 1 casella che a sua volta rappresenta 1 giorno).
    Nel corpo inserisco:
    In alto un textbox con scritto il giorno del mese (strData)
    un'altra textbox in formato RTF che occupa tutto lo spazio rimanente (strGare)

    Poi all'evento Corpo_Format() un bel ciclo che mi va a cercare gli incontri di quel giorno.
    codice:
    Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
    
        Dim q As String, s As String
        Dim oggi As String, domani As String
        Dim rs As Recordset
    
        oggi = Year(Me.giorno) & "/" & Month(Me.giorno) & "/" & Day(Me.giorno)
        domani = Year(Me.giorno + 1) & "/" & Month(Me.giorno + 1) & "/" & Day(Me.giorno + 1)
        q = "SELECT * FROM Q_calendario WHERE data_ora >= #" & oggi & "# AND data_ora < #" & domani & "# ORDER BY data_ora"
        Set rs = CurrentDb.OpenRecordset(q)
        Do While Not rs.EOF
            s = s & "" & FormatDateTime(rs("data_ora"), 4) & "
    " & rs("s1.nome") & " - " & rs("s2.nome") & "
    "
            rs.MoveNext
        Loop
        Me.strGare = s
        
    End Sub
    Alla fine era abbastanza semplice, l'unica cosa è che per ogni giorno mi fa un'interrogazione SQL, quindi la generazione del report non è immediata... ma questo non è un grossissimo problema.
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.