Newsgroup: it.comp.appl.access
Titolo: Controllo date

Ciao a tutti,
al mio DB dovrei aggiungere un tabella contenente :
    IdCantiere
    IdPosatore
    datainiziolavori
    datafinelavori
in modo che possa inserire un elenco di posatori per i vari cantieri con le
date di inizio e fine lavoro.
I risltati che dovrei ottenere sono 2:
1) quando ci sarà un nuovo cantiere, sapere i posatori disponibili, in base
alle date di inizio e fine lavoro  (e qui non c'è problema)
2) dovrei evidenziare o in fase di input o con una elaborazione successiva,
l'accavallamento delle date inizio e fine lavori per lo stesso posatore.
Es: se il posatore 5 ha 2 record
        uno con data inizio lavori 3/1/6 e fine lavori 12/1/6
        l'altro con data inizio lavori 10/1/6 e fine lavori 15/1/6
        in questo caso andrebbe segnalato.....
Pesnavo di memorizzare sulla tabella posatori la data fine lavori e ogni
volta che inserisco un record nuovo verificare che questa data non sia
superiore alla data inizio lavori del nuovo record, ma la caosa non mi
convince molto...
Via spetto con qualche sugerimento.
Grazie a tutti
GS

 GS
Bhè io lo faccio con le ore (appuntamenti)... basta adattarlo :
-----
Campo Data_OraInizio su prima di aggiornare:
If IsNull(Me!Data_OraInizio) Or Me!Data_OraInizio < #7:00:00 AM# Then
        MsgBox "Ora inizio fuori range", vbCritical, "Verifica orario
appuntamento"
        Cancel = True
        Me!Data_OraInizio.Undo
        Exit Sub
End If
-----
Campo Data_OraFine su prima di aggiornare:
If IsNull(Me!Data_OraFine) Or Me!Data_OraFine > #11:59:00 PM# Then
        MsgBox "Ora fine fuori range", vbCritical, "Verifica orario
appuntamento"
        Cancel = True
        Me!Data_OraFine.Undo
        Exit Sub
End If
-----
Form : su prima di aggiornare
If IsNull(Me!Data_OraInizio) Then
    MsgBox "Inserisci ora inizio", vbCritical, _
        "Verifica orario appuntamento"
    Cancel = True
    Me!Data_OraInizio.SetFocus
    Exit Sub
End If
If IsNull(Me!Data_OraFine) Then
    MsgBox "Inserisci ora fine", vbCritical, _
        "Verifica orario appuntamento"
    Cancel = True
    Me!Data_OraFine.SetFocus
    Exit Sub
End If
If Me!Data_OraInizio >= Me!Data_OraFine Then
    MsgBox "Ora inizio minore o uguale ad ora fine", _
        vbCritical, "Verifica orario appuntamento"
    Cancel = True
    Me!Data_OraInizio.SetFocus
    Exit Sub
End If
'******************************************************
'Verifica che il nuovo appuntamento non si accavalli con i precedenti
'******************************************************
If DCount("*", "[Tbl_Agenda]", "User = '" &
[Forms]![Z-Menu]![UtenteCorrente] & "' AND Id <>" & Me!ID & " AND
Data_Giorno =#" & Format(Me!Data_Giorno, "mm/dd/yyyy") & "# AND
Data_OraInizio <#" & Me!Data_OraFine & "# AND Data_OraFine > #" &
Me!Data_OraInizio & "#") > 0 Then
        MsgBox "Periodo già occupato da altro appuntamento", vbCritical,
"Verifica orari appuntamento"
        Cancel = True
        Me!Data_OraInizio.SetFocus
End If
Spero ti possa essere utile.
Fammi sapere. Ciao
-- 
Ciao
Pablitomf (Maurizio Facciuti)
Access : Ver.97 - 2K
----------------------------------
http://www.accessgroup.it/
http://www.sitocomune.com/
----------------------------------
Non mi fido molto delle statistiche, perchè un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:drqcee$b6u$1...@news.newsland.it...

Ciao Maurizio,
grazie dei suggerimenti .
il controllo delle date haimè non funziona bene.....
ti faccio un esempio:
dopo aver inserito questi 3 record
        dt inizio    01/02/06        dt fine    09/02/06
                           11/02/06                        15/02/06
                           20/02/06                        25/02/06
inserendo il 4 così inizio 03/2/6 e fine 07/2/6 la Dcont ....
If DCount("*", "[Cantieriposatori_R]", "idposatore=" & Me!IdPosatore & " AND
IdCantPos <>" & Me!IdCantPos & " AND DataInizioLavori < #" &
Me!DataFineLavori & "# AND DataFineLavori > #" & DataInizioLavori & "#") > 0
Then
    MsgBox "periodo già occupato", vbCritical, "verifica date"
    Cancel = True
    Me!DataInizioLavori.SetFocus
End If
restituisce 0 e quindi non mi blocca.
Se hai qualche altro suggerimento sono qui, altrimenti grazie comunque
ciao
GS