Visual Basic - Compactar una base de datos!

Life is soft - evento anual de software empresarial
 
Vista:

Compactar una base de datos!

Publicado por gerardo (48 intervenciones) el 26/02/2003 18:57:23
Hola!
Utilizo lo siguiente para compactar mi base de datos access.Es una rutina de una pagina web de visual.
Me gustaria saber como puedo compactar mi base de datos sobre si misma, me funciona compactandola
si pongo como destino otro nombre de archivo, pero me gustaria que se compactara el mismmo archivo
que tengo.Como error me dice que en ese archivo no se puede comparctar porque ya existe.

Mediante este código lograremos compactar una base de datos de Microsoft Access.

Public Function compactDB(ByVal SOUR_path As String, ByVal DEST_path As String) As Boolean
On Error GoTo Err_compact
Private JRO As New JRO.JetEngine
Private DB_sour As String, DB_dest As String
DoEvents
DB_sour = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SOUR_path
DB_dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DEST_path & " ;Jet OLEDB:Engine Type=5"
JRO.CompactDatabase DB_sour, DB_dest
compactDB = True
Exit Function
Err_compact:
compactDB = False
MsgBox Err.Description, vbExclamation
End Function

Un saludo!
Gerardo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Compactar una base de datos!

Publicado por Amael (1 intervención) el 17/03/2003 19:01:10
por lo que entiendo, quieres compactar tu base de datos access desde visual, sino esta en una rutina para hacerlo desde visual.
te digo que lo esencial es que vas a tener simpre una copia de la misma, no creas que cada vez que ejecutes la accion obtendras una nueva, solo la primera vez que la hagas

este en el codigo hecho en un modulo

Sub_ Comp_Base ( )

Dim i As Integer
Set bd = Nothing
NombreBase = App.Path & "\nombredebase.mdb"
;NombreBase:variable, nombrede base: como la llamaste realmente
sTpm = " "
i = InStr (NombreBase, " . " )
If i then
p = i - 1
Else p = Len(NombreBase)
End If
sTmp = Left $ (NombreBase, p )
For i = p To Step - 1
If Mid$ (NombreBase, i, 1) = " \ " Then
sTmp = Left$(NombreBase, i )
Exit For
End If
Next
If Right$ (sTmp, 1) <> " \ " Then
sTmp = sTpm & " \ "
End If
dBaseTmp = sTmp & "-dbase2.mdb " ; esta es la copia

If Len (Dir$ ( dBaseTmp ) ) Then Kill dBaseTmp; te borra dbase2
If Len (Dir$ (sTmp & "-dbase1.mdb") ) then Kill sTmp & "-dbase1.mdb "+

CompactDatabase NombreBase, dBaseTmp, dbLangSpanish, dbversion90
Name NombreBase As sTmp & "-dbase1.mdb"
Name dBaseTmp As NombreBase

End Sub

Si te das cuenta NombreBase guarda el nombre real de tu base de datos y renombra para compactar y luego da en nombre original

Espero que te sirva, por favor respóndeme al correo para saber

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar