Newsgroup: it.comp.appl.access
Titolo: ricerca record in un determinato intervallo temporale (data)

Ho un piccolo problema da risolvere....
 
1)ho creato un database che gestisce aziende. dipendenti e visite 626
2) aziende, dipendenti e visite sono tre tabelle separate ma in 
   relazione tra loro e fin qui tutto ok funziona regolarmente
 
ora mi č sorto un problema poichč devo estrapolare dal db
in un intervallo temporale tutti i dipendenti che non hanno effettuato
la visita programmata.
 
Ho creato una query che con between mi va a cercare nell'inervallo di
data quelli che hanno effettuato le visite, ma come posso ottenere il
contrario?
 
Come faccio a trovare i dipendenti che nell'arco temporale da me
richiesto non hanno ancora effettuato la visita?
 
Grazie

 richiesto non hanno ancora effettuato la visita?
 
Puoi p.e. creare una seconda query con la tabella di dipendenti
e la tua prima query dove usi il metodo descritto qui:
http://www.donkarl.com/it?FAQ3.16
.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 


Grazie Karl, ma non ho avuto successo
 
Io ho una relazione uno a molti tra aziende e lavoratori, poi ho una
relazione uno a molti tra lavoratori e visite, quindi ho creato una
query Scadenze che mi cerca nell'intervallo di ricerca between con
date i lavoratori da sottoporre a visita in un dato periodo e fin qui
tutto ok semplice query, ma nel momento in cui uno di questi che io
convoco non si presenta io non ho struimenti (allerto altro) che mi
avvisa che questi non si è presentato a fare la visita.
 
Come posso ovviare? e come trovare chi non ha ancora effettuato la
visita?
 
la tabella e maschera visite hanno un campo o controllo DataVisita che
stabilisce i giorno in cui è stata eseguita la visita, inoltre hanno
un campo DataProsssVisita che in base alla scelta in una combobox mi
viene valorizzata la data della visita successiva.
 
Non ho elementi per trovare una soluzione al problema.
 
grazie

 ...non ho avuto successo...
 
Hai provato cosa ho scritto?
Se sí: Cosa non ha funzionato?
Se no: Perché?
 
Nel prossimo messaggio incolla la stringa SQL della tua
prima query e la stringa della query che non funziona.



Questa è la query con cui cerco i lavoratori da chiamare a visita:
 
SELECT TblAnagraficaAziende.RagSociale, TblLavoratori.Cognome,
TblLavoratori.Nome, TblVisiteGiudizio.DataProssVisita,
TblAnagraficaAziende.CessataCollab, TblLavoratori.Licenziato
FROM (TblAnagraficaAziende INNER JOIN TblLavoratori ON
TblAnagraficaAziende.PIVA = TblLavoratori.PIVA) INNER JOIN
TblVisiteGiudizio ON TblLavoratori.IDLavoratore =
TblVisiteGiudizio.CFDipendente
WHERE (((TblVisiteGiudizio.DataProssVisita) Between [Inserisci data
inizio gg/mm/aaaa] And [Inserisci data fine gg/mm/aaaa]) AND
((TblAnagraficaAziende.CessataCollab) Like "NO") AND
((TblLavoratori.Licenziato) Like "NO"))
ORDER BY TblAnagraficaAziende.RagSociale,
TblVisiteGiudizio.DataProssVisita;
 
Questa è la query con la tua modifica.
 
SELECT TblAnagraficaAziende.RagSociale, TblLavoratori.Cognome,
TblLavoratori.Nome, TblLavoratori.Licenziato
FROM TblAnagraficaAziende INNER JOIN (TblLavoratori LEFT JOIN
TblVisiteGiudizio ON TblLavoratori.IDLavoratore =
TblVisiteGiudizio.CFDipendente) ON TblAnagraficaAziende.PIVA =
TblLavoratori.PIVA
WHERE (((TblVisiteGiudizio.IDVisita) Is Null));
 
Il problema è che non ottengo quello che voglio, in particolare:
 
la query va alla ricerca di idvisita nulli che a me non interessa per
risolvere il problema, in quanto io devo trovare i lavoratori che alla
data prevista (DataProssVisita) non si sono presentati.
Quindi vorrei estrapolare i lavoratori che in un dato intervallo
temporale (between) non si sono presentati a visita periodica.
 
Riflettendo credo che con una semplice query non ne esco, quindi ho
pensato in questo modo:
 
i dati in mio possesso sono :
 
DataVIsita
DataProssVisita
 
che sono due campi data/ora ... da qui devo riuscire ad estrapolare i
dati.se
 io in DataVisita do il criterio >#01/01/2011# e in
DataProssVisita >#01/01/2011# ottengo tutti quei lavoratori che sono
stati visitati, come faccio a vedere chi non ha fatto le visite ?
 
Che faccio ?
 
Grazie Karl del tuo aiuto.
 
 
 
 
 
 
 
 
 

 ...
 
Non è quello che ho descritto. Un esempio per cosa intendevo:.
 
Query1
 
SELECT TblLavoratori.IDLavoratore, TblVisiteGiudizio.DataProssVisita
FROM TblLavoratori  INNER JOIN TblVisiteGiudizio
ON TblLavoratori.IDLavoratore = TblVisiteGiudizio.CFDipendente
WHERE TblVisiteGiudizio.DataProssVisita Between
[Inserisci data inizio gg/mm/aaaa] And [Inserisci data fine gg/mm/aaaa]
 
Query2
 
SELECT
TblAnagraficaAziende.RagSociale, TblLavoratori.Cognome,
TblLavoratori.Nome, Query1.DataProssVisita,
TblAnagraficaAziende.CessataCollab, TblLavoratori.Licenziato
FROM
(TblAnagraficaAziende INNER JOIN TblLavoratori
  ON TblAnagraficaAziende.PIVA = TblLavoratori.PIVA)
LEFT JOIN Query1
  ON TblLavoratori.IDLavoratore = Query1.IDLavoratore
WHERE
Query1.IDLavoratore Is Null AND
((TblAnagraficaAziende.CessataCollab) Like "NO") AND
((TblLavoratori.Licenziato) Like "NO"))
ORDER BY
TblAnagraficaAziende.RagSociale,
TblVisiteGiudizio.DataProssVisita
 
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 
 
 



Grazie Karl, ma purtroppo mi restituisce tutti i lavoratori anche
quelli antecedenti al 2011, mentre io vorrei estrrapolare solo dal
range di data dichiarato..
C'è possibilità? 

 C'è possibilità?
 
Puo darsi, ma sembra che non capisco cosa vuoi ottenere.
Speriamo che si trovi qualcuno chi ti capisce meglio.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it