Newsgroup: it.comp.appl.access
Titolo: Strano problema con insieme TableDefs

Voglio usare del codice VBA per ricavare il nome del file in cui risiede una
tabella collegata, ma se uso l'insieme TableDefs (che ho già usato varie
altre volte con successo) mi da un errore, ecco il codice:
Dim Tdf As TableDef
Set Tdf = CurrentDb.TableDefs![Vendite - Nuovi dati dai negozi]
Debug.Print Tdf.Connect
Ho provato anche con
Set Tdf = CurrentDb.TableDefs("Vendite - Nuovi dati dai negozi")
Ma quando provo ad accedere una qualunque proprietà di Tdf mi da un errore
3420 "Oggetto non vaido o non impostato".
La cosa assurda è che se faccio
Debug.Print CurrentDb.TableDefs![Vendite - Nuovi dati dai negozi].Connect
funziona....
Evidentemente sbaglio qualcosa nel Set, ma non capisco cosa (sicuramente mi
starò perdendo in un bichier d'acqua)
Max

 3420 "Oggetto non vaido o non impostato".
E' uno di quei comportamenti assurdi di access.
Fai così:
set miodb = currentdb()
set tdf = miodb.tabledefs("Vendite")
debug.print tdf.connect
Antonio

 debug.print tdf.connect
Assurdo.... eppur cosě funziona....
Mah... misteri dell'informagica :-)
Grazie, Max

 wrote in message OdjV6.18891$a44.2...@news1.tin.it...

Se non lo puoi combattere... alleatici...
Antonio

 ha scritto nel messaggio
news:XojV6.4765$6m2.1...@news.infostrada.it...

Farň un programma che tramite una webcam spia l'utente.... e funziona o meno
in base al fatto che abbia le gambe accavallate, il cassetto del comodino
aperto o cose simili....
:-)))))))))))))))))))))))))
Max

 aperto o cose simili....
è inutile... lo fa già Access stesso.... in effetti si tratta di
un'applicazione Echelon compatibile.
:-)
--
Silvio
il sito comune di it.comp.appl.access:
http://www.sitocomune.com

 ha scritto:

Non č assurdo o un mistero ma il modo come funziona CurrentDB.
CurrentDB sempre crea un nuovo riferimento al DB corrente.
Con una singola linea come:
Set Tdf = CurrentDb.TableDefs![Vendite - Nuovi dati dai negozi]
Fai un nuovo riferimento a un oggeto (il TableDef "Vendite...")
in un nuovo riferimento al DB corrente.
Una linea dopo questo riferimento al DB č morto. Non esiste piů.
Per questo non c'č anche piů il tuo riferimento al Tabledef.
Quello che puň creare una confusione č che sia possibile di usare:
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Foo")
Debug.Print rs!Bar
Questo č possibile perché un Recordset č un altra cosa (anche nella
memoria) che un TableDef o p.e. un Document. Access cerca (č
normalmente succede) di tiene in vita il riferimento a un Recordset
persino il riferimento al DB corrente č gia morto. Ma č una eccezione.
Invece con:
set miodb = currentdb()
set tdf = miodb.tabledefs("Vendite")
C'č la variabile "miodb" che tiene in vita il riferimento al DB.
C'č anche la possibilitŕ di usare una singola linea come:
Set Tdf = DBEngine(0)(0).TableDefs![Vendite - Nuovi dati dai negozi]
debug.print Tdf.connect
Perché DBEngine(0)(0) č un riferimento permanente al DB corrente.
--
cu
Karl
*********
Non meravigliarti del mio strano italiano. M'esercito qui.
Access-FAQ (tedesco): 
http://www.donkarl.com

 CurrentDB sempre crea un nuovo riferimento al DB corrente.
Ho capito il motivo, perň allora mi sembra comunque un'assurditŕ che questo
sia il funzionamento...
Antonio

 CurrentDB sempre crea un nuovo riferimento al DB corrente.
Ora o capito :-)
Grazie per le delucidazioni.
Max