Compactar la Base de Datos en la salida del Programa.

Necesito a la salida de la aplicación poder Compactar la Base de datos siempre que ningún Usuario la tenga abierta y este trabajando con ella.

También me serviría si es posible el poderla compactar aunque otros usuarios estén trabajando en en ese momento y la tengan abierta.

1 respuesta

Respuesta
1

Debe detectar si hay más de 1 usuario conectados, 1 sería el administrador. Puede utilizar esta función

Public Function verifica_Laccdb(basedatos As String) As Boolean
On Error GoTo hay_error
Dim stm As TextStream, fso As FileSystemObject, strLine As String, strChar As String, strArr() As String, nArr As Long, nArrMax As Long, nArrMin As Long
Dim strFilename As String
 'basedatos por ejemplo, D:\nada2.accdb"
 'Ejemplo de llamada:
 '                    verifica_Laccdb("D:\nada2.accdb")
 'Si hay más de 1 usuario NO compactar (1 sería solo el administrador)
 strFilename = basedatos
 strFilename = Left(strFilename, InStrRev(strFilename, ".")) & "laccdb"
Set fso = New FileSystemObject
Set stm = fso.OpenTextFile(strFilename, ForReading, False, TristateFalse)  ' Referenciar  Microsoft Scripting Runtime)
While Not stm.AtEndOfStream
    strChar = stm.Read(1)
    If Asc(strChar) > 13 And Asc(strChar) < 127 Then
        strLine = strLine & strChar
    End If
Wend
strArr = Split(strLine, "Admin", , vbTextCompare)
nArrMax = UBound(strArr)
If nArrMax > 1 Then ' hay más usuarios conectados fuera del administrador
   verifica_Laccdb = True
Else
   verifica_Laccdb = False
End If
stm.Close
Set stm = Nothing
Set fso = Nothing
hay_error:
   If Err.Number = 53 Then
     MsgBox "La base de datos no está abierta", vbInformation, "Error.."
     verifica_Laccdb = False
   End If
End Function

Ejemplo de llamada, paso la ruta y nombre de la base de datos.

?verifica_Laccdb("D:\nada2.accdb")

Si retorna True es porque hay más de 1 usuario conectado, entonces NO compactar, en caso contrario False puede compactar. Esto si lo hace desde la misma aplicación.

Como dice un sabio de TodoExpertos "Hay mil formas", esta es una forma y es cierto hay muchas más.

Lógicamente faltaría ejecutar el código para compactar la base de datos. Le respondí aunque no utilizo Access como back end sino PostgreSQL donde es totalmente en manejo de la compactación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas