Newsgroup: it.comp.appl.access
Titolo: Stessa query, tabelle diverse, si può?

Buongiorno (o buonasera, dipende ;-)
vi espongo, spero brevemente e con chiarezza il mio cruccio:
Ho un DB Access 2000, diciamo "database.mdb" con una tabella "Tabella" che
contiene dei record fissi; i dati relativi a questi record (alcuni campi
quindi) variano invece ogni giorno...
ho la necessità di archiviare questa tabella a fine giornata in un file
"archivio.mdb" e ricrearne una nuova, vuota in quei particolari campi, in
"database.mdb". Con pulsanti che attivano semplici macro riesco a salvare in
"archivio.mdb" la Tabella , specificando nella macro come nome della tabella
in cui esport. i dati la funzione =Date(), e ciò mi permette di avere su
archivio.mdb una tabella diversa per ogni giorno,  con nomi ad es.
05/03/2001, 06/03/2001, etc.  Con un'altra macro elimino poi "Tabella" su
"database.mdb"  e la ricreo da una altra tabella "matrice" vuota; e fin qui
tutto OK!  Il mio problema e che vorrei che queste tabelle giornaliere su
"archivio.mdb" fossero consultabili con alcuni report, presenti su archivio!
In pratica, vorrei sapere se è possibile creare delle Query su cui basare i
report che consentano di scegliere, in fase di esecuzione, da quale tabella
prendere i dati.  Sto pensando all'immissione di un parametro, che poi
sarebbe la data, che permetta di consultare i record solo di quella tabella
specifica, che contiene gli eventi di una giornata specifica, senza far
impazzire gli operatori che useranno il programma... dite che è possibile?
Purtroppo sono anche abbastanza scarso in VBA, ho lavorato quasi tutto in
visuale... beh, grazie in ogni caso!
Paolo

 ha scritto nel messaggio
news:981beu$n1e$1...@nreadB.inwind.it...

Forse, x semplificarti la vita, dovresti pensare a memorizzare nel file
Archivio.mdb i dati provenienti dalle varie giornate in un unica tabella,
aggiungendo, se non ancora presente, un campo dove memorizzare la data di
riferimento: in seguito i tuoi report li baserai su delle query che faranno
la selezione dei dati in base a questo campo data.
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 wrote in message 981beu$n1e$1...@nreadB.inwind.it...

La tua soluzione, di solito, viene scelta se il numero di record
giornalierio è superiore ai 50.000-100.000 (in realtà bisognere tener conto
anche della "larghezza" del record).
E' questo il caso tuo?
Se i tuoi dati sono inferiori allora stai percorrendo la strada sbagliata.
Perchè cancelli i record dalla tabella?
Basta avere in Tabella un campo, MIA_DATA, di tipo data, default DATE(),
Richiesto No (Nullable).
(magari con un indice non univoco su questo campo).
Hai una maschera che insiste su Tabella?
Bene invece di farla insistere su Tabella, falla insistere su Tabella_Vista.
Tabella_Vista è una query del tipo
Select * from Tabella Where MIA_DATA = Date()
A questo punto i dati stanno tutti in una tabella.
Vuoi fare un report?
Nessun problema...
Se questa soluzione ti piace e vuoi altri dettagli, riposta.
HTH
Michele Amato
--
{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}
Sulla mia pagina personale
http://utenti.worldonline.it/micheleamato
è possibile trovare del materiale relativo ad Access
scritto da me, sia freeware che shareware
{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}

 wrote in message
7sRo6.89060$Y93.2...@news.infostrada.it...

Bene bene,
stai diventando bravino ;-))
Un saluto
Michele Amato


Questa tua osservazione mi onora...  :-P
Ciao


Nessun problema...
Sì, ho diverse maschere, sui db front-end client, che agiscono su Tabella
che è sul back-end server... stessa cosa per i report... interessante la
questione Tabella_Vista, potresti essere più specifico? dove infilerei la
condizione WHERE? se vuoi riposta qui, oppure vai sul sito
http://spazioweb.inwind.it/dariux/
 dove trovi la mia email in "scrivi
all'autore"...
Grazie infinite... e complimenti per il sito su Access!
Paolo

 condizione WHERE? se vuoi riposta qui, oppure vai sul sito
Mettiti pure comodo :-) cercerò di trasferirti concetti per me basilari.
Le maschere di Access si dividono in
1. Maschere con dati associati
2. Maschere senza dati associati
Noi stiamo parlando di maschere con dati associati quindi con la proprietà
RecordSource impostata.
Il valore di tale proprietà RecordSource é il nome di una tabella logica.
Cos'è una tabella logica?
Una tabella logica può essere
1. Il nome di una tabella fisica (Tabelle)
2. Il nome di una query di selezione (Query)
3. Uno statement SQL (Query in line)
Se la tabella logica è Updatable, allora una maschera che insiste su di
essa, può "manipolare" (aggiornare , inserire, cancellare) i dati
sottostanti, oltre che visualizzarli.
Quando una tabella logica è Updatable?
Beh è inutile che ti spieghi teoricamente questo, ti farò degli esempi:
Una tabella logica che corrisponde ad una tabella fisica è sempre updatable.
Una query con raggruppamenti non è mai Updatable.
Una query di Union non è mai Updatable.
Altro...
Chiaro il concetto?
Una tabella logica che mostri semplicente un sottoinsieme, non aggregato, di
record di una tabella fisica è sempre Updatable.
Il tuo problema è:
"Io ho una tabella (Tabella appunto) e delle maschere/report che insistono
su di essa".
"Voglio che le mie maschere vedino un sottoinsieme dei record di Tabella".
Allora io ti chiedo: Qual'è la condizione che definisce questo sottoinsieme?
"Voglio vedere solo i record di oggi", vero?
Bene, ti chiedo ancora, hai nella tabella fisica un campo che ti consenta di
realizzare questa condizione?
Probabilmente non ce l'hai.
Rimedio...
Struttura Tabella, Nuovo campo, nome nuovo campo DATA_RECORD, tipo Data/Ora,
valore predefinito DATE(), salva, chiudi.
Visualizza la tabella è carica delle date in questo campo.
Ora sei in grado di definire la tabella logica "Sottoinsieme dei record di
Tabella tale che DATE_RECORD = 'qualcosa'"
Definiamola:
TabellaSoloRecordDiOggi
Nuova Query, Chiudi, Visualizza SQL, scrivi
Select * from Tabella where DATA_RECORD = DATE()
Esegui query.
E' chiaro che nel campo DATA_RECORD deve essere esseri almeno un valore con
la data odierna, altrimenti non salta fuori nulla.
A questo punto le maschere possono insiste su TabellaSoloRecordDiOggi, e
vedranno solo i dati relativi alla data corrente, cose se tutti gli altri
record non fossero presenti.
Se le maschere/report che insistono su Tabella sono tante, hai un'altra
possibilità (per non dover modificare tutte le maschere e tutti i report):
Rinomini Tabella in TabellaTutti
e la TabellaSoloRecordDiOggi in Tabella.
A questo punto il gioco è fatto!
Dopo questi concetti possiamo capire perchè una query e una tabella non
possono avere lo stesso nome ed è l'unico vincolo ai nomi degli oggetti di
Access (tu puoi chiamare una maschera un report e un tabella con lo stesso
nome, ma una query con il nome di una tabella e viceversa, non puoi).
Perchè? Proprio perchè in Access l'insieme delle "Tabelle" e "Query"
realizza il concetto di Tabelle logiche, e non possono esiste due tabelle
logiche non lo stesso nome.
Tieni presente che, con un altro piccolo sforzo, possiamo trasfomare la
tabella logica in maniera tale che mostri tutti i record di un dato
intervallo temporale (da giorno a giorno).
Un saluto
