Newsgroup: it.comp.lang.visual-basic
Titolo: Accesso a db con ADO in rete

Ciao a tutti,
dopo aver spulciato info sulle ADO connections e aver modificato poco
poco il mio programma tiro le somme : non funziona ancora :)
Localizzato il problema nella stringa
cnADO.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data
Source=\\didodue\hd_c\visualbasic\film\film.mdb;User
Id=admin;Password=;"
mi chiedo come e' che se lancio il programma localmente (cioe' dove ho
il database, dove programmo, dove compilo, insomma su didoddue :) )
tutto funziona, ma anche installando perfettamente su una macchina in
rete (che vede il didodue ovviamente) non c'e' verso di non avere un
errore tipo "il database \\etc.etc.\etc.\film.mdb non puo' essere
aperto perche' e' gia' aperto in modo esclusivo o non hai i privilegi
necessari per l'operazione"... ma come puo' essere? e che ci posso
fare? Maroo' sto sclerando appresso a sto OLEDB ADO, e dire che pare
decisamente piu' semplice di DAO e compagnia, per l'uso in rete....
aiuuuuuto !
(p.s. un esempietto funzionante in rete di uso di un recordset con ADO
sarebbe l'ideale, dal s.c. ho preso ADOTUTOR ma continuo ad avere
problemi seguendo passo passo cosa fa :( aaaah!)

 ha scritto nel messaggio
news:3a200b49...@news.tin.it...


prova con
Public oConn as ADODB.Connection
Private sub ApreConnessione()
    Dim AccessConnect as String
            AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                        "Persist Security Info=False;" & _
                                        "Data
Source=\\TuoServer\TuaShare\TuoDb.mdb"
            oConn.CursorLocation = adUseClient
            oConn.Open AccessConnect, "Admin", ""
End Sub
a me funziona sempre.
NB L'utente che lancia l'applicazione deve ovviamente avere i permessi per
la share che hai sul tuo server
Ciao
--
       Pino Saffioti
-------------------------------------
pino.s...@tiscalinet.it

la share che hai sul tuo server
ma se io entro come Admin, e password vuota (che funziona usando il
prg dal pc dove ho i dati e dove realizzo il software) dovrebbe andare
bene o no?
Cmq, ecco il sorgente
Private Sub Salva()
    Dim cnADO As New ADODB.Connection
    Dim rsADO As New ADODB.Recordset
 
    cnADO.CursorLocation = adUseClient
' qui e' un'unica riga, non fare caso all'andata a capo
    cnADO.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data
Source=\\didodue\hd_c\visualbasic\film\film.mdb;User
Id=Admin;Password=;"
    cnADO.Open
 
    cnADO.BeginTrans
 
    rsADO.CursorType = adOpenKeyset
    rsADO.CursorLocation = adUseClient
    rsADO.LockType = adLockPessimistic
    rsADO.ActiveConnection = cnADO
' ma a che mi server 'sto recordset se devo solo aggiungere? mah anche
' usando direttamente SQL con cnADO.execute non funziona...
    rsADO.Open "SELECT * FROM films"
 
    rsADO.AddNew
 
    rsADO!Titolo = Titolo.Text
    rsADO!Formato = Formato.Text
    rsADO!Cd1 = Cd1.Text
    rsADO!Cd2 = Cd2.Text
    rsADO!Qualità = Qualita.Text
 
    rsADO.Update
 
    cnADO.CommitTrans
    rsADO.Close
    cnADO.Close
 
End Sub

 Id=Admin;Password=;"
Credo che qui vada aggiunto qualcosa come:
"Mode=ReadWrite|ShareDenyNone"
Inoltre in Access97 (non so in 2000) in Access dal menu Tools / Options, se
si sceglie il tab Advanced e' possibile impostare la modalita' di apertura
predefinita del database (Shared ^ Exclusive ).
Da aggiungere che gli oggetti di classe Connection hanno anche una
proprieta' Mode che vale ConnectModeEnum. Se non viene impostato e'
adModeUnknown, il che probabilmente significa che si comporta secondo l'
impostazione predefinita del database (vedi sopra). Si potrebbe percio'
fare:
MyConnection.Mode =  adModeShareDenyNone
Preciso che non ho provato queste cose con Access, ma penso che potrebbero
funzionare. Visto che e' una domanda che viene postata di frequente,
potresti farci sapere l' esito di tutte quante e quale ti e' sembrata
migliore. (Ammesso e non concesso che qualcuna funzioni ;-)).
Ciao
Aldo
