Compactar Base

22/08/2007 - 20:16 por Pablo | Informe spam
Hola Grupo: Estoy usando este código para intentar compactar una DB de
Access en internet
<%
Dim DBE
Set DBE = CreateObject("DAO.DBEngine")
DBE.CompactDatabase "coop.mdb", "compactada.mdb"
response.write "Base compactada"
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
if (fso.FileExists("compactada.mdb")) then
fso.MoveFile "compactada.mdb", "nuevabase.mdb"
response.write "archivo renombrado"
end if
set fso = nothing
%>

Pero no me crea el objeto DAO. Y me tira el siguiente error.
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'DAO.DBEngine'
/_private/compactabase.asp, line 13

Puede ser que falte instalar algo en el servidor? Alguien me puede dar una
ayuda.?
Gracias
Pablo
 

Leer las respuestas

#1 Pablo
24/08/2007 - 01:39 | Informe spam
Con este código lo pude hacer bien
<%
Const DriverConexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
Dim strDatabase, strFolder, strFileName
'#################################################
'# Edite las siguientes dos líneas
'# Defina el path de la base de datos. Si desea hacerlo completo, puede
hacerlo
StrCarpeta = server.mappath("./db")
'##################################################

'Compacta la base de datos
Private Sub dbCompact(StrBaseDeDatos)
if right(StrCarpeta,1) <> "\" then StrCarpeta = StrCarpeta & "\"
Dim SourceConn, DestConn, oJetEngine, oFSO
SourceConn = DriverConexion & StrCarpeta & StrBaseDeDatos
DestConn = DriverConexion & StrCarpeta & "Temp" & StrBaseDeDatos
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oJetEngine = Server.CreateObject("JRO.JetEngine")

If Not oFSO.FileExists(StrCarpeta & StrBaseDeDatos) Then
Response.Write ("Base no encontrada: " & StrCarpeta & StrBaseDeDatos)
else
If oFSO.FileExists(StrCarpeta & "Temp" & StrBaseDeDatos) Then
Response.Write ("Error. Intente Nuevamente.")
oFSO.DeleteFile (StrCarpeta & "Temp" & StrBaseDeDatos)
else
oJetEngine.CompactDatabase SourceConn, DestConn
oFSO.DeleteFile StrCarpeta & StrBaseDeDatos
oFSO.MoveFile StrCarpeta & "Temp"& StrBaseDeDatos, StrCarpeta&
StrBaseDeDatos
Response.Write ("* La base de datos <B'>" &
Request.form("DBFileName") & "</B'> fue compactada con exito.")
End If
End If

Set oFSO = Nothing
Set oJetEngine = Nothing
End Sub

'Pinta la lista de bases en ese directorio
Private Sub dbList
Dim oFolders, i
i = 0
Set oFolders = Server.CreateObject("Scripting.FileSystemObject")
Response.Write ("<SELECT name='DBFileName''>")
For Each Item In oFolders.GetFolder(StrCarpeta).Files
If LCase(Right(Item, 4)) = ".mdb" Then
'corrijo el path, y saco la "\"
item = Replace(lcase(Item), lcase(StrCarpeta), "")
item = Replace(Item, "\", "")
Response.Write ("<OPTION value='" & item &"'>" & item & "</OPTION'>")
i = i+1
End If
Next
Response.Write ("</SELECT'>")
Response.Write ("<BR'><BR'>En la carpeta <b'>"& StrCarpeta &"</b'> hay
<b'>"& i &"</b'> bases de datos Access.")
Set oFolders = Nothing
End Sub

Select Case Request.form("compactar")
Case "Compactar"
dbCompact Request.form("DBFileName")
End Select
%>

<p align="center"><b>Seleccionar la base para compactar de la lista</b>
<form method="POST" action="" id=form1 name=form1>
<%dbList%><BR><BR>
<input type="submit" value="Compactar" name="compactar">
</form></p>

Lo obtuve de http://soloasp.com.ar/vereje.asp?ejeH

Pablo


"Pablo" escribió en el mensaje
news:%
Hola Grupo: Estoy usando este código para intentar compactar una DB de
Access en internet
<%
Dim DBE
Set DBE = CreateObject("DAO.DBEngine")
DBE.CompactDatabase "coop.mdb", "compactada.mdb"
response.write "Base compactada"
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
if (fso.FileExists("compactada.mdb")) then
fso.MoveFile "compactada.mdb", "nuevabase.mdb"
response.write "archivo renombrado"
end if
set fso = nothing
%>

Pero no me crea el objeto DAO. Y me tira el siguiente error.
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object: 'DAO.DBEngine'
/_private/compactabase.asp, line 13

Puede ser que falte instalar algo en el servidor? Alguien me puede dar una
ayuda.?
Gracias
Pablo



Preguntas similares