Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6] Uso concomitante di un DB

    Devo effettuare via codice un aggiornamento di un DB che si trova in una rete locale. Il problema naturalmente non è fare l'aggiornamento ma riuscire a capire se l'utente che si sta connettendo per effettuare l'aggiornamento è l'unico in quel momento in accesso oppure il DB sia già in uso a qualcuno.

    Premetto che uso VB6 ed il DB a cui accedo è ACCESS.

    Qualche consiglio?

    Thanks

  2. #2
    access gestisce tranquillamente le transazioni i tuoi aggiornamenti li puoi fare indipendentemente dal fatto che ci sia qualcunaltro connesso
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quello che devi fare tu e' gestire le situazioni di errore determinate dalla concorrenza.

    Se c'e' un problema di scrittura contemporanea, Jet ti puo' avvertire con determinati errrori ... tu devi solamente gestire queste situazioni ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Originariamente inviato da xegallo
    access gestisce tranquillamente le transazioni i tuoi aggiornamenti li puoi fare indipendentemente dal fatto che ci sia qualcunaltro connesso
    Ma non sono transazioni di tipo inserimento/cancellazione dati, ma eliminazione/modifica tabelle. Non credo che sia possibile effettuare la modifica della struttura di una tabella se il Database risulta essere aperto in modifica da un altro utente.

    Quello che chiedevo semplicemente era come si può sapere, al momento della connessione ad un Db acces in rete, se questo è già aperto da un altra connessione.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai mai parlato di "aggiornamento della struttura" e quindi si pensava all'aggiornamento dei dati ...

    In questo caso devi aprire il db in modo esclusivo ... l'unico modo per sapere quando farlo e' provarci e gestire l'eventuale errore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Si hai ragione in entrambe le cose. Pensavo di essere stato chiaro

    Cmq penso la via dell'esclusivo sia la maniera migliore

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39
    Sul buon "vecchio" codebook ho trovato questo codice, se ti può essere utile, recita:
    Come rilevare se, e quanti utenti sono collegati ad un
    database

    codice:
    'Inserire sulle dichiarazioni generali
    Public Const OptAllLDBUsers = &H1
    Public Const OptLDBLoggedUsers = &H2
    Public Const OptLDBCorruptUsers = &H4
    Public Const OptLDBUserCount = &H8
    Public Const OptLDBUserAuthor = &HB0B
    Public Declare Function LDBUser_GetUsers Lib "MSLDBUSR.DLL" _
        (lpszUserBuffer() As String, ByVal lpszFilename As String, _
        ByVal nOptions As Long) As Integer
    Public Declare Function LDBUser_GetError Lib "MSLDBUSR.DLL" _
        (ByVal nErrorNo As Long) As String
    Private Sub Get_UserNames()
        ReDim msstring(1) As String
        Dim strDBName As String
        Dim miLoop As Integer
        ListView1.ListItems.Clear
        
        'Questa funzione suporta i percorsi UNC's
        
        strDBName = "C:\Program Files\Microsoft Office\Northwind.mdb"
        
        'Questa funzione passa il percorso del database e restituisce
        'il numero totale degli utenti cllegati
        
        miLoop = LDBUser_GetUsers(msstring, strDBName, OptLDBLoggedUsers)
        If miLoop = 0 Then
            ListView1.ListItems.Add , , "Nessun utente collegato!", , 1
            Exit Sub
        End If
        For miLoop = LBound(msstring) To UBound(msstring)
            If Len(msstring(miLoop)) = 0 Then
                Exit For
            End If
            ListView1.ListItems.Add , , msstring(miLoop), , 1
        Next miLoop
        Me.Caption = "DB Users = " & ListView1.ListItems.Count
    End Sub
    Ciao Otti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.