Originariamente inviato da Veronica80
Ciao Gibra!
Mi scuso per la risposta tarda! Che dire! Grazie! Non potevi essere più preciso!
L'unica cosa che non ho capito è sul punto 1. Dove mi dici che sul client devo installare SOLO le librerie. (perchè?).
Tieni conto che per quel che serve a me non mi serve una multiutenza! I pc che useranno il programma son 2. Uno difronte all'altro. Quindi posso mettere anche un controllo che se uno degli utenti apre il programma l'altro non lo può aprire (non è un programma che va usato continuamente) anche se non ho idea di come fare!
Il programma lo devi mettere sul Server, non sul Client, per il semplice fatto che quando fai un aggiornamento ti basta aggiornare solo sul Server, e sei sicura al 100% che il programma sarà sempre aggiornato. Come ho già detto, vale anche per il database.
Il Client ha solo bisogno delle librerie perchè anche se chiamato 'nel Server' il programma viene eseguito sempre in locale quindi nel Client devi installare le librerie (OCX, DLL, ...) che servono al programma.
Per avere l'accesso esclusivo ti basta impostare nella connessione al MDB la modalità esclusiva (vedi la guida per i dettagli) gestendo l'errore all'apertura della connessione, ad esempio facendoti restituire un valore BOOL che ti informi se la connessione ha avuto successo o meno. Ovviamente, il primo utente che apre il database con accesso esclusivo avrà successo, il secondo riceverà un errore.
Sconsiglio caldamente l'avvio dal Load del form principale, ma è sempre meglio farlo dalla routine SubMain in un modulo bas, esempio modMain.bas . In questo modo non ci sarà alcun problema a chiudere l'applicazione usando End senza provocare danni perchè non ci sarà alcun oggetto istanziato.
Esempio (scritto al volo, quindi da controllare!):
codice:
' in modMain.bas
Public CN As ADODB.COnnection
Public SubMain()
Dim bSuccesso As Boolean
bSuccesso = ApriConnessione()
If not bSuccesso Then
MsgBox "Un'altro utente sta già eseguendo il programma." & vbCrLf & _
"Impossibile accedere al database.", vbCritical
Set CN = Nothing
End
End If
' Tutto bene, posso aprire l'applicazione
Load frmMain
frmMain.Show
End Sub
Public Function ApriConnessione() As Boolean
Dim sConnectionString As String
Dim sPercorsoDB As String
On Error GoTo ERR_HANDLER
sPercorsoDB = "\\Server1\MyApp\Database.mdb"
sConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & sPercorsoDB
sConnectionString = sConnectionString & ";Persist Security Info=False"
Set CN = New ADODB.Connection
With CN
.ConnectionString = sConnectionString
.Mode = adModeShareExclusive
.CursorLocation = adUseClient
.Open
End With
ApriConnessione = True
On Error GoTo 0
Exit Function
ERR_HANDLER:
MsgBox Err.Number & vbcrlf & Err.Description
End Function