Newsgroup: it.comp.appl.access
Titolo: Come evitare relink tabelle ad ogni aggiornamento prog?

Dispongo di una procedura realizzata con Access 2013 e compilata in mde 
che usa dati presenti su un db server al quale accede via odbc
Uso queste istruzioni:
-----------------
tdf.Connect = "ODBC;DSN=" & nome_database(numero_dsn) & 
";UID=utente;PWD=password"
tdf.Attributes = dbAttachSavePWD
tdf.SourceTableName = nome_tabella
CurrentDb.TableDefs.Append tdf
-----------------
Le tabelle sul db server sono alcune centinaia
Ogni volta che aggiorno una virgola sul programma e lo trasferisco sui 
pc dove verra' usato, devo lanciare la funzione di re-link tabelle per 
fare in modo che il programma veda correttamente i dati
Il re-link tabelle impiega, a seconda del pc, tra i 10 secondi ed i 50 
secondi ed e' particolarmente fastidioso specie durante l'avviamento di 
un nuovo sistema, quando gli aggiornamenti sono piu' frequenti
C'e' modo di evitare di re-linkare le tabelle ad ogni aggiornamento mde?
Ciao e grazie
RobertoA

Linka solo le Tabelle oggetto di Modifica... ;-)
Quella non puoi non farlo.
 
Ovviamente questa riflessione impone che tu lato SERVER abbia GESTIONE Manageriale di Modifiche ed UTENTI, di conseguenza una Tabella di riferimento Modifiche nella quale inserisci quali tabelle vanno aggiornate e quali PC lo hanno già fatto... 
A quel punto all'avvio fai leggere la Tabella in questione e se non vi sono Record SKIP... altrimenti RELINK.
 
@Alex


No, forse non ci siamo capiti
Quando sviluppo, lo faccio sul pc01, che ha in locale un db di test il 
cui percorso sara' ad esempio (come visto dal pc01) c:\programmi\db\pippo.db
Poi quando passo il programma sui pc che lo useranno, il percorso del db 
e' diverso, ad es. \\server_db\dati\pluto.db
E' per questo motivo che ogni volta che passo un aggiornamento dal pc01 
agli altri pc devo re-linkare sempre tutte le tabelle, per fargli 
'capire' dove sono i dati
Non intendevo dopo la modifica struttura db, ma in seguito ad un 
cambiamento della 'posizione' del db
Quindi devo re-linkare ogni volta tutte le tabelle
Pensavo di fornire, oltre all'mde col programma, un secondo mdb/mde al 
solo scopo di mantenere 'memoria' delle tabelle collegate
Il recondo mdb/mde sarebbe collegato al primo, il programa vero e 
proprio, via riferimenti
Non avendo mai fatto una cosa simile mi chiedevo se sia possibile o se 
ci siano alternative migliori
 

Appena ti sei capito prova a rispiegarci... io non ci sono riuscito.
 
@Alex


 
Lo sviluppo avviene sul pc01, dove il db di test e' in C:\database\pippo.db
Completato lo sviluppo, il programma in formato mde viene portato sui pc 
che lo useranno, pc02, pc03, pc04
Questi ultimi vedono il db reale in \\server_db\dati\pluto.db
E' chiaro che per funzionare su pc02, pc03, pc04 il programma deve 
avviare almeno la prima volta un re-link tabelle per trovare i dati
Ecco, questo tempo vorrei evitare
 
 


Ma avviene solo alla 1° Apertura, non tutte le volte... quindi lo reputo non un problema...!
Quello che hai ipotizzato come soluzione è una cavolata bella e buona, ma sei liberissimo.
 
@Alex


Penso di aver capito il tuo problema io l'ho risolto creando un file.ini 
che memorizza i percorsi dove risiedono le tabelle  esempio:
 
[General]
Program=mioprogramma
[ProgramFile]
DbName=F:\database\Manutenzione\M099312\Manut099312.mde
DbBackEnd=t_manut0930.mdb
PathDbBackEnd=C:\Scaroni Consulting\Tabelle Manutenzione\
LinkDbBackEnd=C:\Scaroni Consulting\Tabelle Manutenzione\t_manut0930.mdb
 
 
 
LinkDbBackEnd  percorso delle tabelle
 
all'avvio del Db  se esiste il file.ini nella stessa cartella viene letto il percorso ed effettuato il relink con apposita routine .
 
Gli aggiornamenti del programma possono essere effettuati copiando il db sulle varie postazioni .


Ringrazio per la risposta
Come fai tu faccio anch'io adesso
Quello che vorrei fare e' evitare di "..effettuare il relink con 
apposita routine.." perche' ci impiega un bel po'
 
 
 


E perche' sarebbe una cavolata, che cosa non funzionerebbe?
Esistono alternative?
 

 Ciao e grazie
 
 
La butto lě: dopo aver salvato su una cartella del Server i tuoi programmi 
aggiornati, potresti creare un'applicazione dedicata all'Update dei vari 
clients che:
 
1 - Elimina tutte le definizioni di linked tables presenti sugli .MDE nuovi.
2 - Importa tutte le definizioni di linked tables da una copia dei programmi 
correntemente in uso (quindi correttamenti collegate al Server SQL 
aziendale).
3 - copia automaticamente sui vari Clients le nuove copie degli .MDE.
 
Potrebbe andare, ma probabilmente non vedrebbero eventuali nuovi campi 
aggiunti sul Server SQL.
 
In alternativa:
 
1 - Aggiorni i programmi solo sul computer Server, effettui il relink al 
Database perdendo i tuoi due o tre minuti, quindi distribuisci sui Clients 
tali copie degli .MDE: gli utenti non perderanno altro tempo.
 
Saluti. 
 
 

 Saluti.
 
Si, l'ultima e' una proposta 'papabile'
Pre-linkare sui dati del db definitivo e solo dopo distribuire 
l'aggiornamento