Colegare 'al volo' una tabella linkata all'ODBC senza password

di il
5 risposte

Colegare 'al volo' una tabella linkata all'ODBC senza password

Ho un ODBC in cui è stato configurato l'accesso ad un DB, quando ho generato l'ODBC l'ho creato impostando la password.
Se allego 'a mano' l'ODBC la password non la chiede, si limita a chiedermi l'ODBC a cui attaccarmi e la tabella (e l'indice se non ha un primary key).

Se lo faccio invece con DAO:

Dim tdf As DAO.TableDef
Dim strConnectionString As String
strConnectionString = "ODBC;DRIVER=SQL Server..."
Set tdf = CurrentDb.CreateTableDef("TabellaLinkataAccess")
tdf.Connect = strConnectionString
tdf.SourceTableName = "TabellaDB"
CurrentDb.TableDefs.Append tdf

Se nella connection string metto anche utente e password, il link viene generato correttamente.
Ma dato che il link 'a mano' la password non la chiede, ci sarà modo di agganciare l'ODBC senza dover inserire la password nella connection string?

5 Risposte

  • Re: Colegare 'al volo' una tabella linkata all'ODBC senza password

    paoloholzl ha scritto:


    Ho un ODBC in cui è stato configurato l'accesso ad un DB, quando ho generato l'ODBC l'ho creato impostando la password.
    Se allego 'a mano' l'ODBC la password non la chiede, si limita a chiedermi l'ODBC a cui attaccarmi e la tabella (e l'indice se non ha un primary key).
    Prova a rispiegare perché non comprendo cosa significhi per te allego 'a mano' ...
  • Re: Colegare 'al volo' una tabella linkata all'ODBC senza password

    Hai un DSN oppure usi la Stringa di connessione al Server...?
    Nel 2° caso non ci credo che non ti chieda l'autenticazione, impossibile.
  • Re: Colegare 'al volo' una tabella linkata all'ODBC senza password

    Il concello di 'allego a mano' sarebbe:
    Apri Access, crea collegamento a ODBC.
    Scegli l'ODBC tra quelli che hai impostato.
    Ti mostra le tabelle del DB accessibili.
    Scegli la tabella.
    Se hai la primarykey impostata non ti chiede altro.
    Da questo momento puoi aprire la tabella linkata.

    Fare la stessa cosa da codice invece mi richiede la connection string con la password.
  • Re: Colegare 'al volo' una tabella linkata all'ODBC senza password

    Ciao Paolo, guarda nella Tabella MSysObj, e vedrai che la Tabella che hai linkato a mano, o meglio con il Wizard, contiene alla colonna(CampO) CONNECT la connessione, quindi è evidente che da qualche parte la recupera... sia un DSN sia una Connessione già presente.
    Se la fai da codice non può recuperarla... la devi passare tu.

    Magari non comprendo quale sia il problema che sollevi però....
  • Re: Colegare 'al volo' una tabella linkata all'ODBC senza password

    Dalla tua spiegazione indirettamente ho risolto.
    Cerco di spiegare:
    Di solito per vedere la stringa di connessione andavo in struttura della tabella linkata 'a mano' e controllavo Descrizione.
    Usavo quella come connection string, poi facevo dei refreshlink se era da correggere (passaggio da DB di produzione a test o altro).
    Ma dovevo poi integrarla con altre informazioni, ad esempio utente e password.

    Facendo
    SELECT MsysObjects.Name AS (aperta parentesi quarda)List OF TABLES(chiusa parentesi quadra), MsysObjects.Connect, MsysObjects.Type
    FROM MsysObjects WHERE ((MsysObjects.Type)=4) ORDER BY MsysObjects.Name;
    Vedo invece le connections memorizzate quando lo fai 'a mano', è proprio quello che mi serve;
    Se metto durante la connessione da codice come ConnectionString "ODBC;(connection letta);" funziona anche se la connection non cita la password. La password che usa è quella che è stata inserita il momento in cui ho impostato l'ODBC.

    Quanto al perchè ho fatto tutto questo:
    Come avete visto in un precedente post ho una connessione MYSQL che ogni tanto va giù.
    Purtroppo non riesco ad evitare che vada in errore anche con l' "On error resume next".
    Ho un polling che ogni tanto va a caricare dei dati da un DB su un sito, ma quando cade la connessione non basta un refreshlink.
    A questo punto ho cambiato strategia, creo il 'link' al volo un attimo prima di interrogare il DB.
    Il problema è che con le Connection String che provavo ero costretto a uscire dall'applicativo a rientrare, ma invece avevo notato che se la connessione la generavo 'a mano', veniva creata regolarmente.
    Quindi ora la creo semplicemente citando come connection "ODBC;DSN=NomeDellOdbc;" (attenzione ci vuole il ; finale) e il gioco e fatto.

    Grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte