Newsgroup: it.comp.appl.access
Titolo: reiterare query

quello che mi serve è una successione di tappe perchè non so come 
mettere in piedi il meccanismo.
 
Faccio riferimento al mio post di fine gennaio "totale di controlli 
contenente iif" che grazie a Karl funziona perfettamente. Devo 
implementare una funzione simile ma più complessa.
 
Nello specifico: dato un nominativo in anagrafica, una query seleziona 
una serie di record compresi tra un minimo e un massimo. Una maschera 
utilizza tale query come origine record per eseguire calcoli tra i 
controlli.
Fin qui tutto bene.
 
La nuova funzione prevede che, dato un nominativo in anagrafica, gli 
intervalli definiti da minimo e massimo possano essere più di uno, ma 
in ogni caso dovrò poi raccogliere i dati in una schermata finale.
 
Avrei pensato:
dato un nominativo in anagrafica, una query di accodamento mi domanda 
il limite minimo ed il limite massimo di una serie di record ed 
aggiunge tali dati filtrati in una tabella. Torna ad eseguirsi fino a 
che non le dico basta.
Una maschera utilizza questa tabella come origine record per eseguire 
calcoli sui controlli.
Detta così sembra semplice: ma "se pò ffà" esattamente così o la mia 
ignoranza procede decisamente a tentoni e sbaglia strada?
 
Grazie in anticipo
 
-- 
ciao
Stefano
 
 

 ha scritto nel messaggio 
news:mn.32fa7de3d3...@libero.it...

Prova a fare un esempio pratico con un nominativo, supponendo di fare tutto 
a mano.
 
 
 

 mano.
diciamo che sto già lavorando in questo senso. La mia domanda voleva 
chiedere un parere sulla struttura che sto mettendo in piedi per 
verificarne la correttezza teorica, se è difettiva o sovrabbondante.
Insomma, una cosa del tipo: "come fareste voi?" o, se preferisci 
"noio... vulevon... vulavan... savuar... per andare... dove devo 
andare... per dove devo andare!" :D
 
-- 
ciao
Stefano
 
 


 
Ecco, appunto, poteva mai indicare il vigile Austro-Ungarico la via giusta?
Non ho capito la problematica, cosa vorresti che la procedura facesse nella 
pratica? 
 
 

 pratica?
hai ragione, perdona...
però mi devo dilungare un pò, per cui se hai tempo, bene... sennò 
desisti. ;-)
La problematica è questa:
- ho una tabella A formata da nominativi di cui registro la presenza in 
azienda formata da periodi saltuari;
- ho una tabella B formata elenco di periodi di funzionamento di un 
macchinario.
 
Il macchinario è talvolta non attivo anche a personale presente, ed io 
ho la necessità di incrociare le due tabelle per sapere quanto tempo 
ogni nominativo ha effettivamente passato al controllo del macchinario.
 
Un singolo record della tabella A mi fornisce un minimo ed un massimo 
per filtrare i periodi della tabella B e questo riesco a farlo.
Ora vorrei però selezionare tutti i record della tabella A per quel 
nominativo e questo, di fatto, mi fornisce altri minimi ed altri 
massimi per filtrare la tabella B.
 
Qui mi collegao al mio primo messaggio in questo thread: ho pensato di 
reiterare la selezione per ogni periodo di presenza in azienda mediante 
una query di accodamento che inserisce questi dati in una tabella ed 
usare quest'ultima come origine record per la maschera che conterà i 
giorni effettivi periodo per periodo. Ho idea di rieseguire la query 
mediante un pulsante, ma forse riuscirei anche ad automatizzarla.
Questo è il progetto di massima.
 
Ritornando alla metafora, forse la domanda più pertinente era: 
"scusi... per la Tangenziale vado bene di qua?"
 
-- 
ciao
Stefano
 
 


Ok, in pratica il risultato voluto è l'intersezione tra la presenza del 
nominativo e il contemporaneo funzionamento del macchinario......
Alla fine per ogni nominativo si dovrà sapere tutti gli intervalli di tempo 
passati al controllo del macchinario, giusto?
Problema interessante.
Di primo acchitto penso si possa risolvere appunto eseguendo query su query.
Appena ho idee in merito ti faccio sapere
 
 

> Appena ho idee in merito ti faccio sapere
grazie infinite!
 
-- 
ciao
Stefano
 
 

 ha scritto nel messaggio 
news:mn.5a287de395...@libero.it...

Tentiamo una primo approccio al problema.
Prova ad usare la seguente query:
 
 
 
 
 
SELECT Nominativo, IIf(InizioNom>InizioMac,InizioNom,InizioMac) AS 
InizioPres, IIf(FineNom>FineMac,FineMac,FineNom) AS FinePres
 
FROM TabNom, TabMac
 
WHERE ((FineMac>InizioNom) and (FineNom>InizioMac))
 
Order By Nominativo;
 
 
 
 
 
In questa query ho usato le seguenti 2 tabella con i rispettivi campi:
 
 
 
TabNom:   Nominativo (Testo), InizioNom (Data/Ora), FineNom (Data/Ora)
 
 
 
TabMac:   InizioMac (Dat/Ora), FineMac (Data/Ora)
 
 
 
Il risultato è una serie di record contenenti Nominativo,  inizio 
(InizioPres) e fine (FinePres) della presenza con il macchinario acceso.
 
Ovviamente dovrai sostituire nella query i nome dei campi e i nomi delle 
tabelle che ho messo come esempio con i tuoi
 
La prova l'ho fatto con delle date, nel tuo database nelle presenze del 
personale e nel funzionamento della macchina ci sono sia data che ore?
 
Con la gestione degli orari non ho mai lavorato.
 
La query, nella clausola from, effettua un prodotto cartesiano tra i record 
dei nominativi con i record della macchina ed esclude, mediante la clausola 
Where, gli intervalli che non si intersecano.
 
 
 
Facci sapere
 
Ciao
 
 

 Facci sapere
ussantapace, troppa grazia!
Grazie infinite. Ora sono preso dalla routine (intesa come quotidianità 
rompiscatole ma necessaria) ma domani certamente mi ci metto.
Grazie ancora!
 
-- 
ciao
Stefano