Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

ACCESS Calendario Impegni

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

ACCESS Calendario Impegni

Postdi Francesco53 » 22/02/11 16:47

Buona sera a tutto il Forum,
nella mia fase di apprendimento di Access, ho predisposto una Agenda Impegni,
in cui poter per mezzo di un pulsante, visionare un calendario.
Vorrei però poter vedere evidenziato nel Calendario i giorni in cui è già previsto
un impegno, Esempio il giorno avere un colore differente, e se si clicca sopra,
visualizza l'impegno del giorno. Allego file per rendere comprensibile la mia
richiesta.
http://www.megaupload.com/?d=7WGIY891
Grazie a chi gentilmente può aiutarmi a risolvere la richiesta.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Sponsor
 

Postdi archimede » 22/02/11 23:00

il giorno avere un colore differente
Ad esempio fai una funzione simile a questa
Codice: Seleziona tutto
Private Function get_events(p_date As Date) As Long
    If DCount("*", "impegni", "giorno=#" & p_date & "#") = 0 Then
        get_events = 16711680
    Else
        get_events = RGB(255, 255, 0)
    End If
End Function
e poi al posto della riga
Codice: Seleziona tutto
ctl.ForeColor = 16711680
metti
Codice: Seleziona tutto
ctl.ForeColor = get_events(DateSerial(intYear, intMonth, intJ))
se si clicca sopra, visualizza l'impegno del giorno
Visualizza dove? E se ci sono più impegni nello stesso giorno?

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Calendario Impegni

Postdi Francesco53 » 23/02/11 14:03

Buon giorno Archimede,
grazie per il tuo aiuto stasera lo testo e poi ti faccio sapere.
Per quanto concerne la tua domanda:

se si clicca sopra, visualizza l'impegno del giorno

Visualizza dove? E se ci sono più impegni nello stesso giorno?
Apre una maschera popup dove sono leggibili gli impegni che non dovrebbero superare
il massimo di due, unpo al mattino e l'altro al pomeriggio.
Appena posso ti faccio sapere per la modifica inviatami.
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: ACCESS Calendario Impegni

Postdi Francesco53 » 24/02/11 12:27

Buon giorno Alessandro,
ho inserito nel Form Calendar il codice da te inviato, purtroppo non
si evidenziano nel calendario i giorni in cui è già previsto un impegno.
Probabilmente sono io che ho commesso qualche errore, ti invio link
per dove ho inserito il codice:
http://www.megaupload.com/?d=AWC4E9HP
La prima volta mi ha dato errore non trovava variabile intJ, ho provato
a inserirla, e non mi dava più l'errore, ma non evidenziava ugualmente
i giorni. Io purtroppo non conosco il VBA e quindi vado a tentativi,
ne ho fatti diversi ma il risultato, purtroppo è sempre lo stesso.
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 24/02/11 12:41

Francesco53 ha scritto:La prima volta mi ha dato errore non trovava variabile intJ, ho provato a inserirla, e non mi dava più l'errore, ma non evidenziava ugualmente i giorni.
Quando ho detto al posto della riga intendevo che devi cercare, nel codice già esistente, la riga con l'istruzione ctl.ForeColor = 16711680, cancellarla e mettere al suo posto (cioè nella stessa posizione dentro al codice) quella da me suggerita: ctl.ForeColor = get_events(DateSerial(intYear, intMonth, intJ))

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Calendario Impegni

Postdi Francesco53 » 24/02/11 19:24

Buona sera Alessandro,
ti allego immagine errore dopo inserimento

Private Function get_events(p_date As Date) As Long
If DCount("*", "impegni", "giorno=#" & p_date & "#") = 0 Then
get_events = 16711680
Else
get_events = RGB(255, 255, 0)
End If
End Function[/code]
e sostituzione della riga
ctl.ForeColor = 16711680
con la riga
ctl.ForeColor = get_events(DateSerial(intYear, intMonth, intJ))
questo è l'errore che mi dava:
Immagine
e questo è il codice che ho inserito:
Option Compare Database
Option Explicit

Dim intFirst As Integer, intLast As Integer, intLastDay As Integer
Dim intMonth As Integer, intYear As Integer
Dim intJ As Integer
Dim varDate As Variant

Private Function get_events(p_date As Date) As Long
If DCount("*", "impegni", "giorno=#" & p_date & "#") = 0 Then
get_events = 16711680
Else
get_events = RGB(255, 255, 0)
End If
End Function


Sub ResettaColore(CodToggleButton As String)

Dim i As ToggleButton

For Each i In Me.optCalendar.Controls

If Right(i.Name, 2) = CodToggleButton Then
Else
If i.ForeColor = 255 Then 'Rosso
ctl.ForeColor = get_events(DateSerial(intYear, intMonth, intJ)) 'i.ForeColor = 16711680 'Blu
End If
End If
Next i
End Sub
In rosso ho aggiunto, non mi da errore ma non evidenzia le date con impegni
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 25/02/11 09:34

Rileggi con più attenzione quello che ho scritto: hai modificato la riga sbagliata.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Calendario Impegni

Postdi Francesco53 » 25/02/11 16:23

Ciao Alessandro,
ho cercato con più attenzione la riga che mi avevi detto di sostituire,
e una volta trovata quella giusta, sostituita col tuo codice è andato tutto bene.
Mi dispiace averti fatto perdere ulteriore tempo nel spiegarmi il mio errore, scusa.
Se vuoi darmi un aiuto, per la richiesta fatta di poter con un click (sopra le
caselle evidenziate con impegni), aprire una maschera popup che faccia vedere
gli impegni relativa alla data, ti sarei grato.
Grazie per il tuo aiuto, e nuovamente scusa la kia ignoranza in materia.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 25/02/11 18:18

Invece di una popup è forse più semplice (ed altrettanto efficace) una subform.

Crei una form tipo Foglio dati basata sulla tabella Impegni e che contiene solo il campo riunione (supponiamo di chiamarla Impegni).

Trascini la form sotto al calendario (dopo aver ridimensionato opportunamente il corpo della form frmCalendar).

Modifichi la ResettaColore così:
Codice: Seleziona tutto
Sub ResettaColore(CodToggleButton As String)
'CodToggleButton sono le ultime due lettere del nome del ToggleButton in Me.optCalendar.
'Resetta al colore blu tutti i ToggleButton rossi in in Me.optCalendar (eccetto quello che lancia la sub).

Dim i As ToggleButton

For Each i In Me.optCalendar.Controls
    If Right(i.Name, 2) = CodToggleButton Then
        Me!Impegni.Form.RecordSource = "select riunione from impegni where giorno=#" & DateSerial(Me!cmbYear, Me!cmbMonth, i.Caption) & "#"
        Me!Impegni.Form.Requery
    Else
        If i.ForeColor = 255 Then           'Rosso
            i.ForeColor = 16711680          'Blu
        End If
    End If
Next i

End Sub
HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi archimede » 25/02/11 18:35

Picola rettifica, scusa:
Codice: Seleziona tutto
'CodToggleButton sono le ultime due lettere del nome del ToggleButton in Me.optCalendar.
'Resetta al colore blu tutti i ToggleButton rossi in in Me.optCalendar (eccetto quello che lancia la sub).

Dim i As ToggleButton

For Each i In Me.optCalendar.Controls
    If Right(i.Name, 2) = CodToggleButton Then
        Me!Impegni.Form.RecordSource = "select riunione from impegni where giorno=#" & DateSerial(Me!cmbYear, Me!cmbMonth, i.Caption) & "#"
        Me!Impegni.Form.Requery
    Else
        If i.ForeColor = 255 Then 'Rosso
            i.ForeColor = get_events(DateSerial(Me!cmbYear, Me!cmbMonth, i.Caption)) 'Blu
        End If
    End If
Next i

End Sub
Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi archimede » 25/02/11 18:37

Cavolo, ho dimenticato la prima riga:

Sub ResettaColore(CodToggleButton As String)

Davvero scomodo non poter modificare i messaggi. :(

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Calendario Impegni

Postdi Francesco53 » 25/02/11 19:29

Grazie Alessandro,
ho fatto come mi hai suggerino ed il risultato è ottimo.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45


Torna a Applicazioni Office Windows


Topic correlati a "ACCESS Calendario Impegni":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti