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