Newsgroup: it.comp.appl.access
Titolo: Come 'leggere' le tabelle dati usate da una form?

Sto cercando di velocizzare il passaggio da un db ad un altro del 
classico gestionale generico
Archivi diversi per ditta1, ditta2, ditta3, ecc..
Se voglio usare dati ditta1 devo collegarmi a quel db, se ditta2 e' un 
altro, stessa struttura ma fisicamente due db diversi
L'esecuzione di un relink tabelle completo porta via decine di secondi, 
e' il sistema attualmente usato, ma lento e quindi sto cercando di 
migliorare
Ho pensato, se ho appena cambiato ditta 'ricollego al volo solo le 
tabelle necessarie nelle form che sto avviando, una specie di relink 
dinamico'
Tanto anche se sono una decina di tabelle diverse usate da quella form, 
al primo avvio ci mettera' un secondo o due ma praticamente nessuno se 
ne accorgera', dal secondo avvio in poi saranno gia' collegate e quindi 
anche il breve ritardo introdotto al primo avvio form, non ci sara'
Il problema sta nel riconoscere quali tabelle dati sono necessarie su 
una form, perche' tra recordset principali, tra combo, listbox, e codice 
che viaggia a dlookup e openrecordset, non e' immediato realizzare una 
funzione che sfrugugliando dentro la form mi restituisca tutte le 
tabelle che e' necessario ricollegare prima di far partire la form stessa
 
E quindi la domanda e':  come realizzare una funzione che, dando come 
parametro in ingresso il nome di una form qualsiasi, ti rerstituisca 
tutte le tabelle utilizzate da form, subform, e codice entrocontenuto?
 
 


Ma lascia perdere sto ufficio complicazione affari semplici: se per gli utenti è un problema il tempo di riconnessione, sdoppia i programmi facendo in modo che ogni copia sia collegata a una diversa ditta.
 
Saluti


Veramente una soluzione elegante sembrerebbe esserci
Si tratta di collegare le tabelle gestionale usando un file dsn 
contenente le informazioni relative al db al quale connettersi
Poi, spegnendo gestionale, cambiando contenuto del file dsn, e 
riavviando gestionale sembra che possa pescare i dati dal nuovo db anche 
senza ricollegare tutto
Dico 'sembra' perche' un utente che dispone di Microsoft365 dice e 
mostra un video che si possa fare
Provo io col mio Access 2013 e non funziona, nel senso che le 
informazioni relative al db rimagono quelle lette dal primo file dsn 
proposto
E quindi nel caso servisse a qualcuno, quella sopra e' LA soluzione al 
problema posto, ma da Office365 in avanti
 

 problema posto, ma da Office365 in avanti
 
Vabbè, sarà ... comunque la soluzione che hai ipotizzato non va: per leggere i nomi Tabella nei Dlookup (e RecordSource/Rowsource assegnati dinamicamente) nel Codice VBA, dovresti aprire la Form/Report in vista Design e sfrugugliarci. Impossibile con files Mde/AccDe che senz'altro utilizzi.
 
Saluti


Forse non hai letto bene quel che ho scritto
Dentro un file peppe_dsn.dsn (che e' esterno al programma Access) ci 
metti le informazioni da usare per la connessione al db1
Usi quel file, da vba interno al programma, per collegarti alle tabelle 
di cui hai bisogno
A questo punto, il programma Access e' a posto, che sia mdb o accdb o 
accde non cambia, e' gia' configurato per usare i dati contenuti nelle 
tabelle collegate
A questo punto se cambi il contenuto del file  peppe_dsn.dsn  indicando 
db2 al quale collegarsi, allora avviando il programma di prima, verranno 
usati i dati come presenti su db2
Con db1 e db2 qualsiasi db server accessibile via odbc
Ovviamente la struttura dei dati contenuti in db1 e db2 deve essere identica
La possibilita' e' geniale a mio parere
L'unica limitazione sta nella struttura db1, db2, ...dbN, che deve 
essere esattamente la stessa
 

 Forse non hai letto bene quel che ho scritto 
 
ho letto benissimo:
 
"E quindi la domanda e': come realizzare una funzione che, dando come
parametro in ingresso il nome di una form qualsiasi, ti rerstituisca
tutte le tabelle utilizzate da form, subform, e codice entrocontenuto?"
 
E a quello si riferiva la mia risposta.
 
Saluti