Newsgroup: it.comp.appl.access
Titolo: Riallegare da codice tabella con nome locale diverso da quello remoto

C'avrò mal di testa ma oggi proprio non mi riesce 'sta cosa.
Situazione FE - BE.
Nel FE ho una tabella allegata che, per motivi insormontabili ho dovuto
chiamare in maniera diversa da come si chiama nel BE.
Pertanto
BE: TAB_DATI
FE: TAB_DATI_XXX
Voglio cambiare il path di collegamento al BE, pertanto faccio
path = ricercapath 'ricercapath è la classica funzione che apre la finestra
di dialogo e mi permette di selezionare un file quindi ritorna il suo
percorso
set tbl = currentdb.tabledefs("TAB_DATI_XXX")
tbl.connect = ";DATABASE=" & path
tbl.refreshlink
A questo punto mi si genera un errore che dice che la tabella TAB_DATI_XXX
non esiste nel database remoto.
In effetti è proprio così, però la proprietà SourceTableName della tabella
vale sempre "TAB_DATI" quindi lui dovrebbe considerare quel valore per
cercare la tabella remota, non il nome locale della tabella!!!
Come faccio allora a riallegare la tabella TAB_DATI_XXX alla sua
corrispondente TAB_DATI nel BE ???
Il tuo ovviamente via codice...
Antonio
P.S.
La proprietà SourceTableName è di sola lettura in quanto la tbl è già
contenuta nell'insieme tabledefs. Ci sarebbe quindi la possibilità di
ricreare da codice la tabella allegata con tutti i riferimenti giusti
(quindi anche la SourceTableName) dopo aver cancellato la precedente, però è
una soluzione che mi infastidisce alquanto!!!!

 ha scritto nel messaggio
news:GO0J9.75184$2B1.2...@twister2.libero.it...

Così al volo...
nel codice che ti riallega le tabelle potresti inserire un If..
If InStr(1, tdf.Name, "TAB_DATI_XXX ") then
tdf.Connect = ";DATABASE=" ......
Però non credo funzioni.
Altra ipotesi è quella di rinominare la tabella prima di riallegare le
tabelle (non so se per te è possibile, cioè se non hai già una tabella con
lo stesso nome dell'originale) e poi riallegare le tabelle e rinominare
ancora una volta la tabella del FE.
Ciao, Carlo

 non esiste nel database remoto.
cut
Ma cosa vale path nel momento in cui ti genera l'errore?
Sib

 ancora una volta la tabella del FE.
Il problema è proprio quello, ecco perchè mi serviva di chiamarla con XXX.
A quel punto è come cancellare la tabella allegata e riallegarla, non è
comunque una soluzione immediata come mi aspettavo si potesse fare...
Antonio

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:271J9.65102$qF1.2...@news2.tin.it...

path è giusto, è il percorso del db remoto a cui mi collego. Non è lì il
problema, la procedura è la solita che uso per il rtiallegamento automatico
delle tabelle.
Ripeto, il problema è che lui usa il nome locale della tabella e non quello
contenuto in SourceTableName
Antonio

 ...
Qual'è l'errore esatto che di dà - con numero?
2 cose:
1.
Con un tale codice prima di debbe dare un
3420 Object invalid or no longer set
Questo perché definisce un Tabledef in una righa con Currentdb.
--> Non esiste più una righa dopo. Invece debbi usare una variabile
per il database:
Set db = CurrentDb
Set tbl = db.TableDefs("TAB_DATI_XXX")
2.
Non importa se il nome della tabella nel FE non è uguale a
questo nel BE. Una volta allegato l'informazione sul
SourceTableName è già salvato nella tabella del FE.
Il tuo problema debb'avere un altra raggione. Forse il 1.
-- 
cu
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 SourceTableName è già salvato nella tabella del FE.
Ma è quello che pensavo anch'io!!!!!
E invece non va!!!
Antonio

 contenuto in SourceTableName
hai ragione, e' molto strano.
penso che tu abbia gia' provato a visualizzare tutti i parametri
dell'oggetto tabledef nel punto in cui ti da l'errore, quindi mi sembra
probabile che sia un problema di mdb.
Prova con i vari metodi di recupero.
Ciao
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:X5kJ9.124$ab2....@news1.tin.it...

Tu hai provato a realizzare una cosa del genere?
I db non danno segni di corruzione, pare tutto ok...
Antonio
P.S.
Dai uno sguardo anche all'altro thread?

...
Ma questo si riferisce alla tabella nel FE.
Vuol dire che non trova "TAB_DATI_XXX".
Sei sicuro di avere scritto il nome corretamente?
Invece se non trova la tabella nel BE ti debbe dare l'errore 3011.


 Set tbl = db.TableDefs("TAB_DATI_XXX")
cut
Non ho capito bene.
Perche' e' scorretta l'altra sintassi?
Sib

 Perche' e' scorretta l'altra sintassi?
Forse è spiegato più chiaro qui:
ACC2000: "Object Invalid or No Longer Set" Error with CurrentDb
http://support.microsoft.com/default.aspx?scid=kb;en-us;200592


 
http://support.microsoft.com/default.aspx?scid=kb;en-us;200592
Grazie,
non lo sapevo,
in effetti non mi era capitato perche' di solito uso:
     for each tdf in currentdb.tabledefs
e quindi l'errore nonsi verifica.
buono a sapersi.
Ciao
Sib

 e quindi l'errore nonsi verifica.
Ogni call (apello? in italiano) a CurrentDB crea una nuova copia del
oggetto nella memoria. Per questo non è molto efficace di usare
Currentdb tante volte in un ciclo. È meglio assegnarlo a una variable
che solo viene creato una volta.


 ha scritto nel messaggio
news:at4j50$uljh7$1...@ID-46617.news.dfncis.de...

Ok, hai ragione, nel ricreare l'errore avevo dimenticato di ristabilire una
parte di codice.
Allora l'errore è effettivamente il 3011, con descrizione:
Il modulo di gestione di database Microsoft Jet non è riuscito a trovare
l'oggetto 'TAB_DATI'. Assicurarsi che l'oggetto esista e che il nome e il
percorso siano digitati correttamente.
Antonio

 che solo viene creato una volta.
Molto giusto.
molte volte tendo a sottovalutare il funzionamento del codice a basso
livello senza considerare che operazioni corrette dal punto di vista della
sintassi possono mettere in crisi il sistema a basso livello.
Ciao
Sib

 il nome e il percorso siano digitati correttamente.
Beh, 'TAB_DATI' è il nome coretto della tabella nel BE o no?
Per una prova vedi che ti dà un ciclo dei TableDefs.Name con
Opendatabase ecc. per il BE.


 Opendatabase ecc. per il BE.
Opppsssss...... ma cazzz....
Senti... ehmmmmm... cioè....
uhmmm...
Ti ho già detto che ieri avevo un fortissimo mal di testa, vero?
firulì.... firulà....
Bella giornata vero?
ehmmmm....
E' quasi natale....
Uhmmm.....
Ti avevo anche detto che il mio db aveva tre BE diversi?
ehmmmm....
A casa tutto a posto? Er pupo sta bene, sì?
firulì... ehmmm....
che nella finestra di dialogo per scegliere il BE c'era il BE SBAGLIATO te
l'avevo detto??!?
Uhmm.....
Firulì... firulà...
Ciao...
Antonio
P.S.
Provi a vedere quell'altro problema postato nel thread "Problema di append
ecc." ?

 append ecc." ?
No, basta per oggi! Per di più ti posso solo rimandare a
http://www.donkarl.com/faqfaq/
punto X3 Bezahlter Support (support a pagamento)
-- 
;-)



ROTFL!!!
Antonio
Antonio