Newsgroup: it.comp.appl.access
Titolo: il controllo calendario (controllo activeX)

come si fa a dirgli di presentare da default la data odierna?
 
se valorizzo il campo "origine controllo" e ci metto es. "=now()", si posiziona sulla da odierna  ma non mi permette di cambiarla
 
se valorizzo il campo "Value" e ci metto una data esplicita nella forma gg/mm/aa, mi mostra quella data e mi permette di selezionare poi date differenti, ma non accetta espressioni tipo "=date()" o "now()".
 
Come si fa a dirgli di presentare da default la data odierna, e poi lasciarmela cambiare?
 
grazie !!
 
 
 
 

 
 
Tu usi "origine controllo" ......
usa invece "valore predefinito"
 
.

 usa invece "valore predefinito"
 
premesso che uso A97 con mscal.ocx versione 8:
 
non trovo una proprieta' "valore predefinito" (default value).
 
trovo solo una proprieta' "value", se ci metto un valore esplicito il calentario si punta su questo valore, ma rimane statico, ho dei problemi a gestirlo da codice. 
 
ho provato ad assegnare valori alle proprieta' day, month e year, non da' errore ma non li utilizza.
 
secondo l'help inlinea il calendario semplicemente supporta il medodo "Today" che lo punta alla data odierna senza altre complicazioni. Allora io scrivo:
 
mioCalendario.Today 
miocalendario.Refresh
 
non da' errore, mi capitalizza Today e Refresh segno che li capisce, ma quando apro la maschera c'è sempre la data hardcodata nella proprietà "Value".
 
ciao

 problemi a gestirlo da codice.
 
lascia vuota la proprieta' "value" e lascia a si' la proprieta' 
"valueIsNull"
 
nella maschera, in apertura, inizializza il controllo calendario cosi'
 
Private Sub Form_Open(Cancel As Integer)
     MioCalendario.Object.Value = Date()
 
End Sub
 
 
 
-- 
Per un giacobinismo in salsa padana


Ciao Anacleto,
fai così, ma mi raccomando, non fermarti solo al copia e incolla :-)
 
Maschera Calendario:
 
Private NewData As Date
 
Private Sub CtlActiveX1_Click()
  NewData = Me!CtlActiveX1.Value
  DoCmd.Close acForm, Me.Name
 End Sub
 
Private Sub Form_Close()
  SendKeys IIf(NewData > 0, NewData, Nz(Me.OpenArgs, ""))
End Sub
 
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = 27 Then 'ESC = chiudi
    KeyCode = 0
    DoCmd.Close acForm, Me.Name
  End If
End Sub
 
Maschera dove lanci il calendario (ad esempio) su doppio clik:
 
Private Sub MiaData_DblClick(Cancel As Integer)
    Me.MiaData = Null
    DoCmd.OpenForm "calendario", , , , , , Me.MiaData.SelText
    If IsNull(Me.MiaData) Then
    Forms!calendario!CtlActiveX1.Value = Now
    Else
    Forms!calendario!CtlActiveX1.Value = Me.MiaData
    End If
End Sub
 
Private Sub MiaData_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Me.MiaData.SelStart = 0
    Me.MiaData.SelLength = Len(Me.MiaData.Text)
End Sub
 
Ciao Vladimiro

 
 
ho una piccola pausa e adesso lo provo, per intanto ti ringrazio!
 
 

 fai così, ma mi raccomando, non fermarti solo al copia e incolla :-)
 
Riuscito! un po' barocco ma ha funzionato e ho imparato qualcosa :-)
 
grazie e ciao!

 
Ciao Anacleto,
non credo ci sia nulla di barocco in quanto:
1)Le due opzioni riguardanti l'apertura del calendario servono per determinare se la casella di testo in cui si va ad inserire la data, abbia o meno una data già inserita; in questo caso il calendario parte dalla stessa data, altrimenti, dalla data odierna.
 
2)Il codice sullo spostamento del mouse serve per l'inserimento manuale della data, senza far ricorso al calendario.
Siccome nella "casella di testo/Maschera di input" sono stati inseriti dei numeri per agevolare l'inserimento manuale della data, il suddetto codice fa sì che il cursore si trovi sempre all'inizio della riga evitando così di incorrere facilmente in errore.
 
Grazie comunque per il feedback.
Vladimiro

 all'inizio della riga evitando così di incorrere facilmente > in errore.
 
Ho preso nota di questa ed altre finezze di codifica :-)
 
Ciao