Newsgroup: it.comp.lang.visual-basic
Titolo: Sottoinsiemi di orari... come li becco?

Ciao a tutti, ho già cercato con Google, sul sito comune e in MSDN, quindi
posto qui visto che non ho trovato nulla in merito.
Ho degli orari di inizio e fine per vari eventi. Come posso trovare la
contemporaneità? Anzi, mi spiego meglio: se un evento inizia alle 0:00:01
e finisce alle 0:00:10 e un altro inizia alle 0:00:05 e finisce alle
0:01:00, c'è una funzione già fatta che mi trova il periodo
0:00:05-0:00:10 oppure in alternativa il periodo 0:00:01-0:01:00?
In mente ho già tutta la mia funzione, solo che di scriverla se esiste già
una funzione uguale mi scoccerebbe :-)
Grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 una funzione uguale mi scoccerebbe :-)
Tempo fa ho avuto lo stesso problema ...
purtroppo non ho trovato nulla .. non so se ti potrà interessare ma ...
il mio problema era quello di capire se l'intervallo di data-ora si
intersecava con almeno un intervallo memorizzato in una tab direttamente con
una qry.
Il problema è che 2 intervalli possono essere intersecanti anche quando uno
è completamente interno all'altro.
Dato l'intervallo : dalle 5 alle 8 .. questi sono orari intersecanti :
- dalle 4 alle 6
- dalle 7 alle 9
- dalle 6 alle 7
- dalle 4 alle 9
la clausola where risulta un vero macello di AND ed OR
Per semplificarla potresti creare la condizione in modo che il risultato sia
la ricerca di orari certamente non intersecanti, quindi neghi (not) tale
condizione ed ottieni il risultato sperato ...
ma è solo un modo per scrivere una clausola WHERE più breve.
Se ti serve posso passarti del codice
Saluti

 Se ti serve posso passarti del codice
Se vuoi/puoi potresti postarlo qui sul NG... anch'io ho avuto a che vedere
con problemi simili... ho rinunciato all'idea della query ed ho fatto la
cosa programmaticamente...

Due eventi ( A e B) sono temporalmente intersecanti quando:
1) l'evento  B inizia all'interno di A-iniz e A-fine;
2) l'evento B finisce all'interno di A-iniz e A-fine;
3) l'evento B inizia prima di A-iniz e finisce dopo A-fine;
da li :
1) select * from eventiA where a-iniz <= B-iniz and A-fine>= B-iniz
2) select * from eventiA where a-iniz <= B-fine and A-fine>= B-fine
3) select * from eventiA where a-iniz >= B-iniz and A-fine<= B-fine
IMHO
Ciao.
Antonino.

 3) l'evento B inizia prima di A-iniz e finisce dopo A-fine;
manca
l'evento B inizia e finisce tra A-iniz e A-fine
Saluti

 ha scritto nel messaggio
news:bjn9r5$lc4oc$1...@ID-169051.news.uni-berlin.de...

No, è compreso nel punto uno;
Il punto 1 devi leggerlo
1) l'evento  B inizia all'interno di A-iniz e A-fine e finisce quando vuole
:))

Integrandolo sarebbe:
select * from eventiA where (a-iniz <= B-iniz and A-fine>= B-iniz) or
(a-iniz <= B-fine and A-fine>= B-fine) or (a-iniz >= B-iniz and A-fine<=
B-fine);
Ciao.

 ha scritto nel messaggio
news:bjnad0$kpmon$1...@ID-109207.news.uni-berlin.de...

Se hai fatto caso non ho scritto il corrispettivo SQL perchè ovviamente
inutile ...
ho voluto evidenziare i 4 casi possibili di intersezione per completezza di
discorso ..
rispondo al tuo ultimo post ora :)

 ha scritto nel messaggio
news:bjnagu$lajup$1...@ID-109207.news.uni-berlin.de...

in alternativa si potrebbero cercare gli intervalli sicuramente non
intersecanti :
WHERE (D2<=T1) or (D1=>T2)
quindi negare la condizione
NOT (D2<=T1 Or D1=>T2)
purtroppo questa sintassi non è possibilie utilizzarla con ADO nei metodi
Find e Filter (quest'ultimo pare non accetti il NOT come condizione di primo
livello).
Avevo acceso un thread apposito sull'argomento Filter NOT ma senza cavarne
un ragno dal foro !
Saluti