Newsgroup: it.comp.appl.access
Titolo: Password nella connect ODBC

Quando collego le tabelle ad un server di dati ODBC, scelgo il DSN, mi si
apre la finestrella con le tabelle che posso collegare al FE, mi esce un
segno di spunta "memorizza password" (il cui help contestuale dice di
flaggare se non si vuole richiedere la password all'utente ad ogni
reconnect).
Il punto è che, sia flaggando, sia lasciando in bianco, la password viene
SEMPRE MEMORIZZATA nella proprietà connect delle tabelle collegate.
Questo con A2000.
Sbaglio qualcosa?
Grazie mille a chiunque vorrà dirmi la sua.
TIA, Sandro.
--------------------------------
Inviato via 
http://usenet.libero.it

 
No, è normale così.
Se non vuoi che venga memorizzata cancella tutte le Tabelle
Collegate quando chiudi il DB.
Ti basta avere una Tabella con il Nome delle Tabelle da Collegare
poi all'apertura esegui un Relink generando le Tabelle Collegate.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 poi all'apertura esegui un Relink generando le Tabelle Collegate.
Ottimo suggerimento...
Ma, per curiosità, la proprieta "connect" di tabledef non è modificabile?
Grazie, Sandro


 Grazie, Sandro
Certo è proprio grazie a quella che sostituisci il DSN con ODBC-Direct.


 Certo è proprio grazie a quella che sostituisci il DSN con ODBC-Direct.
E allora perchè questo pezzo di codice non funge e mi da "Operazione non
valida" ???
    dim db as database, tbl as tabledef
    Set db = CurrentDb
    For Each tbl In db.TableDefs
      tbl.Connect = "qweqwe"
    Next tbl
Ti ringrazio molto per l'interessamento.
Ciao, Sandro.


 Ciao, Sandro.
1)Ma secondo te "qweqwe" è una stringa di connessione valida...??
2)Secondo te tutte le Tabelle contenute nell'oggetto Tabledefs
  hanno una Proprietà Connect da modificare.....???
  Io direi proprio di no, vedi ad esempio le Tabelle di SYSTEMA.
Quindi:
In ogni caso in successione alla modifica della prioprietà Connect
devi eseguire il Refreslink sempre di Tdf.
dim db as database, tbl as tabledef
Set db = CurrentDb
For Each tbl In db.TableDefs
   If Len(tdl.connect)>0 then
      tbl.Connect = "qweqwe" 'Stringa di connessione
      tbl.Refreshlink
   end if
Next tbl
In realtà però questo sistema funziona, in questo modo solo
per Tabelle collegate ad un DB Access.
Se Relinki via ODBC_Direct devi distruggere le vecchie tabelle
e ricrearle con CreateTabledefs nuove con lo stesso nome e modificarne
la Connect
facendo un Append all'oggetto Tabledefs, poi refresh metodo di
Tabledefs.
Un pò più complessa, ma nulla di grave.....!
Se hai problemi ti posto la mia Routine per il Link.


 per Tabelle collegate ad un DB Access.
L'ho appena provato con le tabelle collegate ad un server MySQL tramite
MyODBC. Funziona *esattamente* come vorrei.
Dunque. Dopo aver collegato le tabelle, nella proprietà connect ho tutto,
comprese le password in chiaro (!).
Lanciando il codice vba di sopra, ricopro la password nella connect string
con una errata.
Alla partenza, nel tentativo di loggarsi sul server MySQL, mi appare la
maschera del driver MyODBC che mi invita a inserire userid e password,
poichè quelli memorizzati sono ovviamente scorretti.
Ripeto. Questo è proprio il comportamento che desideravo, l'obbligo di
autenticare un utente sul server MySQL ogni volta che si lancia
l'applicazione da Access.
Grazie mille, Alex. Sei stato gentilissimo e mi hai dato dei preziosi
suggerimenti.


 ha scritto:
[CUT]
Ottimo.
Per chiarezza ti posto la Routine che io uso per connettere il FE--->MySQL
usando
ODBC-Direct.
Ciao.
Stringa di Connessione:
Public Const StrConnection ="ODBC;DRIVER={MySQL ODBC 3.51
Driver};DESC=;DATABASE=TuoDB;SERVER=127.0.0.1;UID=Alex;PWD=XXXX;PORT=3306;OP
TION=0;"
Public Function RlnkODBCTbl() As Boolean
   On Error GoTo Err_RlnkODBCTbl
   Dim tdf As TableDef
   Dim rs As Recordset
   Dim s As String
   Dim strSql As String
   RlnkODBCTbl = False
   strSql = "SELECT MsysObjects.Name FROM MsysObjects " & _
          "WHERE ((Left$([Name], 4) <> 'Msys') And (MsysObjects.Type = 4))"
   Set rs = CurrentDb.OpenRecordset(strSql)
   rs.MoveLast
   rs.MoveFirst
   Do Until rs.EOF
      s = rs.Fields(0).Value
      CurrentDb.TableDefs.Delete s
      Set tdf = CurrentDb.CreateTableDef(s)
      tdf.Connect = StrConnection
      tdf.SourceTableName = s
      CurrentDb.TableDefs.Append tdf
      Set tdf = Nothing
      rs.MoveNext
   Loop
   RlnkODBCTbl = True
Exit_Here:
   rs.Close
   Set tdf = Nothing
   Exit Function
Err_RlnkODBCTbl:
   RlnkODBCTbl = False
   Resume Exit_Here
End Function
@Alex.

...

Scusa, è la prima volta che mi inserisco nella news. Ho un problema
simile al tuo, (Connessione da FE in VBA-Access2000 e un BE in MySQL,
ma nella stringa :
 Set rs = CurrentDb.OpenRecordset(strSql)
nel provare la tua Sub mi dà un errore di run-time 13 - (tipo non
corrispondente) , da cosa può dipendere ?

 corrispondente) , da cosa può dipendere ?
Dal fatto che forse non hai impostato i Riferimenti a DAO, A2K usa
di DEFAULT ADO, quindi ti posso consigliare di verificare se in effetti
il problema è dato da questo........!!!
@Alex.