Newsgroup: it.comp.appl.access
Titolo: Archiviazione record con query di accodamento

Vorrei creare una query di accodamento che da una tabella
RegistrazioneCorsi registri in una tabella Archivio tutti i record
che rispetto ad un campo Data risultino più vecchi di tre anni
(a proposito come si fa ad indicare tre anni esatti nei criteri della
query?).
Come posso impedire che ad ogni esecuzione della query
gli stessi record delle esecuzioni precedenti siano registrati
nella tabella Archivio creando perciò record doppi o tripli?
Grazie infinite
--
Fabrizio Domiziani
dom...@tin.it

 Grazie infinite
Se i record hanno un id univoco crescente puoi fare un controllo sull'id
(tipo WHERE ID > UltimoID), altrimenti non e' una cosa immediata.
Ciao, Sib
--
------------------------------------------------------
il sito comune di it.comp.database.access:
http://members.xoom.it/it_db_access
------------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente


INSERT INTO ArchivioCorsi ( Corso, DataCorso )
SELECT TabCorsi.Corso, TabCorsi.DataCorso
FROM TabCorsi
WHERE (((Year([DataCorso])) Between Year(DataSelezione)-3 And
Year(DataSelezione)) AND ((TabCorsi.Trasferito)=False));
o variazioni sul tema
dopo il trasferimento metti a true il valore TabCorsi.trasferito
saluti
GB

che rispetto ad un campo Data risultino più vecchi di tre anni
ah no, guarda, mi dispiace.  da quelle due tabelle non lo so fare.  se
lo avessi chiesto dalla tabella pippo alla tabella pluto ancora
ancora, ma dalla tabella RegistrazioneCorsi no, e' difficile, come si
fa?  e poi verso la tabella Archivio...  nooo, troppo complicato.
senti, facciamo cosi'.  intanto io ti dico come lo farei con due
tabelle generiche, poi magari chi lo sa, tu approfondisci e da cosa
nasce cosa.  magari i nomi delle tabelle non sono importanti e si
tratta di un problema risolvibile con metodi generali della cui
esistenza ti conviene prendere atto, chissa'.
nella parte select della query metterei anche un campo calcolato che
per mezzo della funzione datediff (vedi help) mi calcoli la differenza
in anni tra il campo Data e il campo (che sicuramente sara' presente)
nel quale c'e' la data dal cui inizio calcolare l'anzianita'.
nella parte where imposterei un filtro per prendere solo i record per
cui questo campo calcolato (o la sua espressione) sia maggiore o
uguale a 3.  maggiore o uguale perche' fino a 3 anni e 364 giorni
datediff in anni ti restituisce sempre 3.
per evitare l'accodamento di record multipli tramite l'operatore IN
(di cui si e' parlato qualche mex addietro riguardo l'origine dati di
una combobox) puoi aggiungere un ulteriore filtro utilizzando come
criterio una select sui valori chiave dei record gia' immessi, oppure
puoi gestire la cosa settando i campi chiave nella tabella bersaglio:
se tenti di accodare un campo con la stessa combinazione di campi
chiave l'accodamento non riesce e sei a posto.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 fa?  e poi verso la tabella Archivio...  nooo, troppo complicato.
E questo mi ricorda un episodio di quando frequentavo il primo superiore:
Il mio compagno: "Come ca@#o si fa questa espressione???"
Io: "Ti ricordi ieri quando abbiamo fatto l'altro esercizio?"
Il mio compagno: "Ma che c'entra? Ieri era un esercizio con incognita "a",
quello di oggi e' una espressione in "x"!!!"



Madonna che acido!!
Mica so' così scemo.
Comunque l'operatore IN mi sembra senz'altro un buon suggerimento.
Adesso mi ci metto.
Grazie tante.