Newsgroup: it.comp.appl.access
Titolo: evitare buchi e accavvallamenti di date in tabella date

dovrei definire dei record come segue
01/01/2005    28/02/2005
01/03/2005    30/09/2005
01/10/2005    31/12/2005
in questo modo sono corretti
se invece lascio dei buchi ad esempio mi dovrebbe avvisare che dal 
16/02/2005 al 28/02/2005 c'è un buco non definito
01/01/2005  15/02/2005
01/03/2005    30/09/2005
01/10/2005    31/12/2005
allo stesso modo se accavvallo le date mi dovrebbe avvisare che dal 
16/02/2005 al 28/02/2005 c'è un accavallamento di date
01/01/2005    28/02/2005
16/02/2005    30/09/2005
01/10/2005    31/12/2005
voi come fareste? 


mmmhhhh
io così su 2 piedi, farei contare il n° dell'anno della data di chiusura del 1°
blocco, ad esempio, 16/2 è + o - il 47°.
e lo confronterei con quello della data di apertura del 2° blocco.
farei una sottrazione e se il risultato è diverso da 1...
            Giorno1 = DatePart("y", Data1)
            Giorno2 = DatePart("y", Data2)
            If Data2- Data1<>1 Then
Ciao
Silvia.
--
www.silvietta.it
...everyone's invited!
Kann ein Herz aus Stein sein??

 ha scritto nel messaggio
news:432593e2$0$8496$5fc...@news.tiscali.it...

Io sono dell'avviso che anziché controllare che sia stata digitata
correttamente la data del primo campo la cosa migliore sia quella di non
fare digitare quel dato all'utente finale tranne per il primo record della
tabella; per i successivi record calcolare da VBA la data di tale campo (che
se non ho capito bene è uguale a quella del secondo campo del l'ultimo
record registrato + 1) e bloccare il controllo associato a quel campo in
modo che l'operatore non possa modificare il valore calcolato da codice.
Se i due campi si chiamano DataInizio e DataFine.
Se la tabella che contiene i dati si chiama Tabella1.
A fronte dell'evento "Su apertura" della maschera di immissione dei dati
genera il seguente codice VBA:
Private Sub Form_Open(Cancel As Integer)
    If DCount("*", "Tabella1") = 0 Then
        Me!DataInizio.Enabled = True
        Me!DataInizio.Locked = False
    Else
        Me!DataInizio.Enabled = False
        Me!DataInizio.Locked = True
        Me!DataInizio.DefaultValue = _
        "'" & CDate(DMax("DataFine", "Tabella1")) + 1 & "'"
    End If
End Sub
A fronte dell'evento "Prima di aggiornare" della maschera di immissione dei
dati genera il seguente codice VBA:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me!DataInizio) Or IsNull(Me!DataFine) Then
    MsgBox "Non hai digitato una o ambedue le date"
    Cancel = True
End If
End Sub
A fronte dell'evento su "Dopo aggiornamento" della casella di testo
associata al campo DataInizio genera il seguente codice VBA:
Private Sub DataInizio_AfterUpdate()
Me!DataFine.SetFocus
Me!DataInizio.Enabled = False
Me!DataInizio.Locked = True
End Sub
Infine a fronte dell'evento su "Dopo aggiornamento" della casella di testo
associata al campo DataFine genera il seguente codice VBA:
Private Sub DataFine_AfterUpdate()
Me!DataInizio.DefaultValue = "'" & Me!DataFine.Value + 1 & "'"
End Sub
Così facendo l'utente potrà digitare DataInizio solo per il primo record da
inserire in tabella, per gli altri record la casella di testo associata a
tale campo risulterà disabilita e bloccata ed il suo valore sarà determinato
automaticamente da Access che lo calcolerà aggiungebdo 1 all'ultima data
inserita nel campo DataFine.
Se poi vuoi comunque una risposta al tuo quesito solo per scopi didattici,
allora rifatti vivo e vedremo come verificare che non vengono lasciati buchi
e non vengono create sovrapposizioni di periodi.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

La soluzione di roberto di far inserire automaticamente la datainizio uguale 
a datafine del record precedente + 1 mi sembra ottima in questo modo devo 
inserire solo data fine manualmente e controllare ovviamente che datafine 
sia maggiore di datainizio dello stesso record
credo che cosi sia impossibile creare buchi e anche sovrapposizioni o 
sbaglio?
Grazie.

 Grazie.
Prego


 A mio avviso non dovrebbe essere possibile.
Dalla maschera così impostata teoricamente non si può, ma c'è sempre in
agguato dietro l'angolo l'utente che va a smanettare direttamente sulle
tabelle....
Consiglio quindi anche di nascondere da Strumenti/Avvio la finestra
database, menù/barre superflue e tasti speciali. Non è molto, ma sempre
meglio che niente.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 namor at inwind punto it
si quello è già risolto non do l'accesso diretto alle tabelle. grazie a 
entrambi 

 namor at inwind punto it
-- 
