Forms

3.30 Usare il controllo calendario per inserire una data in una casella di testo.
  Roberto
(D)
Come si può scrivere in una casella di testo, associata ad un campo di tipo Data/ora, selezionando una data tramite il controllo ActiveX Controllo calendario 8.0?

(R)
Il controllo ActiveX Controllo calendario 8.0 viene distribuito insieme ad Access97, va installato espressamente usando il programma di installazione di Access.
Ipotizziamo che, nella tabella che è origine record della maschera, ci sia un campo di tipo Data/ora chiamato Data1; fare in modo che, nella maschera, la casella di testo associata a tale campo si chiami txtData1.
Aprire la maschera in visualizzazione Struttura.
Inserire nella maschera, a destra del controllo txtData1, un piccolo pulsante di comando e chiamarlo ApriChiudi.
Dal menu Inserisci seleziona il comando Controllo ActiveX… ; dalla lista che compare selezionare Controllo calendario 8.0 e premere il pulsante OK.
Nel disegno della maschera comparirà il controllo Calendario: con il mouse ridimensionarlo a proprio piacimento e spostarlo sotto i controlli txtData1 e ApriChiudi (non preoccuparsi se coprirà altri controlli).
Al controllo Calendario assegnare le seguenti Proprietà:
 1) Nome elemento: acxCalendario
 2) Seleziona con tabulazione: No (consigliato)
 3) Visibile: No
 4) Origine controllo: Data1
 5) ShowTitle: No (consigliato)
Per questo controllo ActiveX, Access non genera la proprietà evento AfterUpdate; poiché a noi serve detta proprietà evento per rendere il controllo Calendario non visibile dopo aver impostato con il mouse la data, generarlo come segue:
 1) Aprire il modulo della maschera pigiando il pulsante Codice dalla barra dei comandi. Comparirà la finestra Class Module
 2) Dalla casella a discesa posta in alto a sinistra della finestra selezionare acxCalendario.
 3) Dalla casella a discesa posta in alto a destra della finestra selezionare AfterUpdate.
 4) Ora nella Private Sub acxCalendario_AfterUpdate() scrivere il seguente codice VBA:
Private Sub acxCalendario_AfterUpdate()
   Me!txtData1.SetFocus
   Me!acxCalendario.Visible = False
End Sub
 5) Chiudere la finestra Class Module.
A fronte dell’evento Su corrente della maschera generare il codice VBA:
Private Sub Form_Current()
   Me!acxCalendario.Visible = False
End Sub
Si consiglia di settare la Proprietà Seleziona con tabulazione del pulsante ApriChiudi a No.
A fronte dell’evento Su clic del pulsante ApriChiudi generare il seguente codice VBA:
Private Sub ApriChiudi_Click()
   If Me!acxCalendario.Visible = False Then
      Me!acxCalendario.Visible = True
      If IsNull(Me!Data1) Then
         Me!acxCalendario.Year = Year(Date)
         Me!acxCalendario.Month = Month(Date)
         Me!acxCalendario.Value = Date
      End If
   Else
      Me!acxCalendario.Visible = False
   End If
End Sub
Quando si apre la maschera, tutte le volte che si vuole rendere visibile il controllo Calendario, pigiare il pulsante di comando ApriChiudi: selezionare prima il mese, poi l’anno e solo alla fine il giorno.
Se si vuole rendere non visibile il controllo Calendario mentre è visibile, pigiare il pulsante ApriChiudi.

NB.
E’ necessario, per evitare possibili malfunzionamenti, che il campo Data/ora, la casella di tetsto ad esso associata ed il controllo Calendario abbiano nomi diversi.

Download:
 
  ProvaCalendario.zip (13Kb) MSAccess97 database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.