Newsgroup: it.comp.appl.access
Titolo: Verifica range Data

Un saluto a tutti.
Vengo al mio problema, ho una maschera principale che ha una casella
di testo che riporta una determinata stagione: esempio "2003/2004";
nella sottomaschera ho una casella di testo dove bisogna inserire una
data. Desidererei controllare l'immissione di questa data, affinché
questa data rientri nel range di tempo della Stagione riportata nella
maschera principale. Premetto che il range di tempo di ogni Stagione
inizia il 1° luglio di ogni anno e termina il 30 giugno dell'anno
successivo. Io ho adoperato questo codice (sembra che funzioni), però
a me sembra un po' empirico, io avrei voluto fare un controllo unico
sul range di tempo della Stagione ma non ci sono riuscito quindi ho
individuato prima l'inizio e poi la fine della Stagione. La domanda è
proprio questa, come avreste fatto voi?
Private Sub DtAcqst_BeforeUpdate(Cancel As Integer)
    Dim msg As String
 
    msg = "DATA NON PREVISTA PER QUESTA STAGIONE"
 
    Select Case Forms![frmAcquirenti]![txtStagSport].Value
        Case Is = "2004/2005"
            Select Case Format(Me!DtAcqst, "dd mm yyyy")
                Case Is < Format(#7/1/2004#, "mm dd yyyy")
                    msgbox msg
                    Cancel = True
                    Me!DtAcqst.Undo
                Case Is > Format(#6/30/2005#, "mm dd yyyy")
                    msgbox msg
                    Cancel = True
                    Me!DtAcqst.Undo
            End Select
    End Select
End Sub

 proprio questa, come avreste fatto voi?
Non così, in quanto ogni anno ti tocca modificare il codice.
Ti butto li un'idea.
Puoi usare la funzione left e right per tirarti fuori l'anno di inizio e di
fine stagione
Poi potresti usare la funzione DateSerial per calcolarti la data di inizio e
di fine da confrontare.
Ciao,
Massimo
-- 
web: 
www.piubelli.net
Vuoi il mio indirizzo? Togli _cut_ per rispondermi


[CUT]
Ciao, io avrei fatto così
-----------------------
Private Sub DtAcqst_BeforeUpdate(Cancel As Integer)
Dim Stagione As String
Dim Anno As Integer
Dim Da As Date
Dim A As Date
Stagione="" & Me.Parent.txtStagSport
Anno = Left(Stagione, 4)
Da = DateSerial(Anno, 7, 1)
A = DateSerial(Anno + 1, 6, 30)
If  Me!DtAcqst >= Da And Me!DtAcqst <= A Then
    Exit Sub
end if
MsgBox "DATA NON PREVISTA PER QUESTA STAGIONE"
Cancel=True
End Sub
---------------------
Ciao Giorgio

 proprio questa, come avreste fatto voi?
Ciao, Rolf.
    Un modo e' anche questo. Posto che la Casella di testo "stagione" si
chiami:
        txtStagione
allora potresti assegnare alla proprieta'
        Valido se
della Casella di testo "data" la seguente espressione:
        Between DateSerial(CInt(Left([txtStagione];4));7;1)
        And DateSerial(CInt(Left([txtStagione];4))+1;6;30)
-- 
    (Facci sapere se ed eventualmente come hai risolto. Grazie.)
Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
 X
--------


Un ringraziamento a tutti per l'interessamento, la celerità e la
competenza dimostrata. Tuttavia faccio presente che ho adottato la
routine di Giorgio (l'ho provata, è perfetta!).
Ho provato anche l'espressione postata da Maurizio, qui
nell'esecuzione ho avuto risposta di errore: "Il valore immesso non
soddisfa la regola di convalida definito per il campo o il controllo",
probabilmente perché la casella [txtStagione] di cui andiamo a
prelevare l'anno fa parte del form principale, mentre noi ci troviamo
dentro la proprietà della casella [Data] che si trova nella
sottomaschera (questa è una mia motivazione!).
Comunque grazie di nuovo a tutti.