Newsgroup: it.comp.appl.access
Titolo: Ho messo la Password al mio Programma Access e adesso devo rifare tutti i controlli Combo????

Allora mi spiego:
Ho realizzato un'applicazione per un cliente, chiamiamola APPLI, ho creato
due Database:
1) APPLI-MASCHERE
2) APPLI-DB
In APPLI-MASCHERE ho collegato le tabelle presenti in APPLI-DB e ho
realizzato il tutto.
Questo è stato fatto perché APPLI-DB si trova su un server mentre
APPLI-MASCHERE è situato sui client in formato MDE.
Ora però è venuta l'esigenza di proteggere APPLI-DB con una password per
evitare che qualcuno acceda in rete ad esso. Ho impostato la password ed ho
cambiato
Set db=CurrentDb()
in
Set db=OpenDatabase("APPLI-DB",,"PWD=pippo;")
e fin qui tutto ok......mi apre il database e via codice mi fa fare
tutto...ok!
Ma veniamo ai controlli Combobox di elenco, nella mia versione originale io
per caricare i dati in questi controlli utilizzavo la seguente sintassi:
- Me.CasellaCombinataDipart.RowSource = "SELECT [Dipartimento].[IdDip],
[Dipartimento].[DescrDip] FROM Dipartimento where IdDip=" & DipU
- Me.CasellaCombinataDipart.Requery
E ovviamente essendo "Dipartimento" una tabella collegata veniva vista come
una tabella locale e non c'era nessun problema.
Ora però la tabella non è più locale e qui casca l'asino.... come posso
impostare in modo facile la password per dirgli che il controllo deve
accedere al database APPLI-DB ed eseguire la stringa SQL: SELECT
[Dipartimento].[IdDip], [Dipartimento].[DescrDip] FROM Dipartimento where
IdDip=" & DipU. Adesso ovviamente non mi carica un bel nulla.....perché non
trova la tabella Dipartimento.
Avevo pensato di aprire il recordset e poi assegnarlo al controllo come in
VB ma NIENTE in access non si può fare? Mi sembra strano sarò io che non so
come si fa.
Qualcuno ha un suggerimento indolore, ovviamente non ho nessuna voglia di
crearmi il rowsource come stringa di record separati da ";".....:-)))))
Grazie
Ken

 ha scritto nel messaggio
news:7Y2i9.13028$Hc7.2...@twister1.libero.it...

Devi riallegare tutte le tabelle (ti verrà chiesta la password) e tutto sarà
come prima (CurrentDb() incluso)
Ciao Giorgio


E lo sapevo....le cose sono sempre più facili di quello che sembrano :-) Ti
ringrazio mi hai evitato un sacco di lavoro e una figuraccia.........ma
perché queste cose non sono mai scritti su quei cavolo di Help????? E
pensare che è una vita che programmo in Access e VB.......come si dice non
si finisce mai di imparare :-)
Arigrazie mille
Ken

 ha scritto nel messaggio
news:Xn6i9.15370$Hc7.2...@twister1.libero.it...

Nell'Help cerca password quindi seleziona l'argomento "Collegamento di
tabelle di un database protetto con password " troverai maggiori
chiarimenti.
Ciao Giorgio


Trovato grazie ancora ;-)

 ha scritto nel messaggio
news:amaqo8$v3n$1...@lacerta.tiscalinet.it...

Ciao Giorgio scusa se mi intrometto, è da tempo che vorrei risolvere un
problema simile, fino al collegamento ad un solo db_be esterno tutto ok con
la password,
per cui faccio ne più ne meno quello che hai suggerito a kenshiro ma per
gestire più di un db_be esterno mi si creano un po di casini e quando provo
a cercare un collegamento con un'altro db_be mi si perdono i collegamenti
del primo e non mi collega il secondo senza il risultato desiderato.
Possibile che Access non mi consenta un collegamento da codice?
Possibile che devo riallegare tutte le tabelle a manetta?
Sapresti darmi un suggerimento?
Marco M.


Sul sito comune ci sono esempi su come allegare le tabelle non ricordo se
contemplano la password, in ogni caso prova questo codice che
utilizza il jet DAO (ancora il più usato, se ti interessa ADO + ADOX fammi
sapere).
 Sub Allega()
           Dim Db1 As Database           'Database di transito
           Dim TbLd As TableDef         'Tabella da allegare
           Dim Password As String         'Password
           Dim NomeDb As String          'Nome database
           Dim Conn As String                'Proprietà connect di TableDef
           Dim i As Integer                      '
          Password = ";Pwd=xxxxxx"    'Dove xxxxx = tua password
           Set Db1 = CurrentDb()
           For i = 0 To Db1.TableDefs.Count - 1
                  Set TbLd = Db1.TableDefs(i)
                  Conn = Db1.TableDefs(i).Connect
                  If Conn <> "" Then               'Se è una tabella
collegata
                      NomeDb = Mid(Conn, InStrRev(Conn, ";DATABASE=") + 10)
'Estraggo il nome del database compreso di percorso
                      '-------- Qui puoi cambiare il nome del database
                      'NomeDb="C:\Database\TuoDb.mdb"
                      TbLd.Connect = ";DATABASE=" & NomeDb & Password
                      TbLd.RefreshLink
                  End If
                  Set TbLd = Nothing
           Next
           Set Db1=Nothing
End Sub
Ovviamente questo è un'esempio sintetico e funziona solo con tabelle
allegate di  MsAccess. Per odbc excel dbIII ecc studia il valore restiduito
da Db1.TableDefs(i).Connect
Ciao Giorgio.