Condividi tramite

Collegamento di una tabella esterna ACCESS 2003

Anonimo
2010-05-01T06:26:06+00:00

Provo da programma a connettere una tabella definita in un altro archivio ".mde" con il codice che segue ma ottengo il messaggio "errore di run-time 3170 - impossibile trovare ISAM installabile". Ho verificato il registro di configurazione con "regedit" e ho controllato la presenza delle chiavi in

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\jet\3.5\Engines   e   \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\jet\3.5\ISAM  Formats 

mi sembra tutto in ordine. E' errato il codice?

    Dim MioDB           As Database

    Dim MiaTabella     As TableDef

    Set MioDB = CurrentDb

    Set MiaTabella = MioDB.CreateTableDef("TD01_MOVIMENTI_2010")

    MiaTabella.Connect = "DATABASE=C:\Contaeuro\contaarc.mdb"

    MiaTabella.SourceTableName = "TD01_MOVIMENTI_2010"

    MioDB.TableDefs.Append MiaTabella

l'errore si verifica quando prova ad eseguire "MioDB.TableDefs.Append MiaTabella"

Ciao e grazie

Microsoft 365 e Office | Installare, riscattare, attivare | Per la casa | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2010-05-01T07:21:31+00:00

Ciao,

manca un punto e virgola nella stringa connect, cambiala così

MiaTabella.Connect = ";DATABASE=C:\Contaeuro\contaarc.mdb"

Per maggiori info vedi TableDef.Connect Property

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-05-01T16:29:12+00:00

    Scusa se insisto sull’argomento. Ora ho il problema inverso e cioè quello di verificare se una tabella è già collegata oppure no. Ho scritto il codice seguente:

    Dim MioDB               As Database

    Dim MiaTabella          As Recordset

    Set MioDB = CurrentDb

    Set MiaTabella = MioDB.OpenRecordset("TD01_MOVIMENTI_2010"", DB_OPEN_TABLE)

    Pensavo sufficiente quest’ultima istruzione che, in caso di tabella non collegata, avrebbe dovuto produrre l’errore

     Err.Number = 3011

    Invece, pur mancando la tabella, risulta Err.Number§=0. Dove sto sbagliando e cosa mi consigli di fare?

    Ciao e grazie

    Massimo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-05-01T13:41:30+00:00

    Ho provato anche questa istruzione e funziona perfettamente. Devo dire che la trovo molto più pratica di quella che avevo scritto.

    Leggendo le tue risposte ad altri quesiti, ho colto spunti di approfondimento e di ottimizzazione del codice che utilizzerò nello sviluppo delle prossime applicazioni. Condivido in pieno quanto tu dici “...non si smette mai di imparare!”. Complimenti infine per la sollecitudine, la chiarezza e la sintesi delle esposizioni.

    Ciao e grazie ancora

    Massimo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-05-01T11:27:44+00:00

    Fantastico ha funzionato! Come si suol dire, sono scivolato su una buccia di banana! essendo un deafault il tipo db access non ho pensato a mettere comunque il ";". Era da tempo che che mi rompevo la testa e avevo "quasi" rinunciato ad applicare questo meccanismo perchè nessuno mi sapeva rispondere!  

    sì. la sintassi prevede almeno 2 parti: ISAM e Percorso database.

    Per Access è

    MS ACCESS;DATABASE=C:\Contaeuro\contaarc.mdb

    MS ACCESS puoi anche non metterlo ma se non metti il punto e virgola la parte

    DATABASE=C:\Contaeuro\contaarc.mdb

    viene interpretata come ISAM, per questo motivo ricevevi l'errore :

    "errore di run-time 3170 - impossibile trovare ISAM installabile".

    Un altro metodo comodo per allegare le tabelle è:


    DoCmd.TransferDatabase acLink, _

                               "Microsoft Access", _

                               "C:\Contaeuro\contaarc.mdb", _

                               acTable, _

                               "TD01_MOVIMENTI_2010", _

                               "TD01_MOVIMENTI_2010"


    Per maggiori info TransferDatabase Method

    E' stata una fortuna incontrarti in rete. Ho altri quesiti da porti ma non so se approfittare ancora...

    Grazie infinite perchè questo mi sarà molto utile per il mio lavoro.

    Ciao, Massimo 

    vai tranquillo, nei limiti del possibile, qualcuno che risponde lo trovi sempre :-)

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-05-01T09:44:43+00:00

    Fantastico ha funzionato! Come si suol dire, sono scivolato su una buccia di banana! essendo un deafault il tipo db access non ho pensato a mettere comunque il ";". Era da tempo che che mi rompevo la testa e avevo "quasi" rinunciato ad applicare questo meccanismo perchè nessuno mi sapeva rispondere! E' stata una fortuna incontrarti in rete. Ho altri quesiti da porti ma non so se approfittare ancora...

    Grazie infinite perchè questo mi sarà molto utile per il mio lavoro.

    Ciao, Massimo

    La risposta è stata utile?

    0 commenti Nessun commento