Newsgroup: it.comp.appl.access
Titolo: contare in un periodo

ciao,
forse avrete già risolto problemi simili, ma dando un'occhiata ai post
precedenti non ho trovato nulla di adeguato alla mia situazione.
in sintesi:
ho una tbl assistiti e la solita relazione 1-M con la tbl ricoveri e con le
due date, ammissione e dimissione.
come da schema sotto le situazioni possono essere varie ed ho bisogno quindi
di sapere quanti giorni di permanenza ha avuto ogni paziente (A,B,C,D) nel
periodo T1-T2
spero di essere stato chiaro.
grazie a tutti.
           T1                 T2
A    ----|-------          |
B    ----|--------------|-----
C          |    --------     |
D          |            ------|-----
--- = permanenza

 ha scritto nel messaggio 
news:48922960$0$1092$4faf...@reader1.news.tin.it...

Io farei una query semplicissima e ti crei all'interrno della stessa un 
campo calcolato cosi:
=[dimissione]-[ammissione]    risultato un numero fixed decimali 0 ed il 
gioco è fatto.
é la prima risposta fammi sapere se ok 


Puoi usare la funzione "DateDiff" espressa in giorni; in un query crei
un campo calcolato inserendo:
permanenza: DateDiff("g";[T1];[T2])
Fammi sapere.
Ciao Vladimiro.

 - Mostra testo citato -
Naturalmente la stessa espressione la puoi inserire nelle maschere e
nei reports senza passare per le query :-)
Di nuovo Vladimiro.

 che diventerà <=
e
< che diventerà >=
si ottiene così Ammissione<=T2 AND Dimissione>=T1
Ok, i conti tornano, è la stessa cosa che avevo scritto sopra con la sola 
differenza nell'ordine dei termini.
Ora bisogna calcolare il numero di giorni considerando che: se Ammissione è 
minore di T1 bisogna considerare T1 altrimenti Ammissione ovvero
----
IIf(Ammissione<T1,T1,Ammissione)
----
e se Dimissione è maggiore di T2 bisogna considerare T2 altrimenti 
Dimissione ovvero
----
Iif(Dimissione>T2,T2,Dimissione)
----
poi facciamo la sommatoria della differenza in giorni dei valori ottenuti.
Quindi data una tabella di nome Ricoveri con i Campo IdAssistito,Ammissione 
e Dimissione di cui si vuole sapere la permanenza in giorni degli assistiti 
dal 10/07/2008 al 20/07/2008 possiamo scrivere la seguente query
----
SELECT IdAssistito,
   SUM(Datediff('D',IIf(Ammissione<T1,T1,Ammissione),
             Iif(Dimissione>T2,T2,Dimissione))) AS Giorni
FROM Ricoveri,
    (SELECT TOP 1 #07/10/08# AS T1,
          #07/20/08# AS T2
    FROM Ricoveri) AS Periodo
WHERE Dimissione>=Periodo.T1 AND  Ammissione<=Periodo.T2
GROUP BY IdAssistito
----
ps.. la tabella derivata
----
    (SELECT TOP 1 #07/10/08# AS T1,
          #07/20/08# AS T2
    FROM Ricoveri) AS Periodo
----
l'ho scritta solo per la comodità di avere T1 e T2 nelle varie espressioni, 
ovviamente puoi toglierla e sistituire tutti i T1 e T2 con le date del 
periodo da prendere in considerazione, le date sono scritte con la notazione 
anglosassone perchè il linguaggio SQL lo richiede, comunque dall'interfaccia 
grafica della query puoi mettere le date nella notazione Italiana.
Ciao
Giorgio

 ha scritto nel
messaggio news:48923857$0$26154$5fc...@news.tiscali.it...

grazie infinite a tutti!
sono già all'opera, appena concludo qualcosa vi farò sapere!
di nuovo grazie!

wow, non ho parole!
funziona alla grande!!!
ho solo aggiunto un +1 sul calcolo dei giorni in quanto per me il giorno
della dimissione va comunque computato.
grazie 1000 Giorgio e grazie anche a roby e vladileon