Compactar Base de Datos Access 2003

Iniciado por jrhomer, 12 Junio 2006, 18:46 PM

0 Miembros y 1 Visitante están viendo este tema.

jrhomer

 Hola foro;

tengo una duda que me trae algo liado os explico la situación.

Hasta ahora he estado trabajando siempre con Access97, ya que para lo que he usado la base de datos me ha funcionado bien (y si hace lo que quiero y se hacerlo... ¿para que iba a cambiar?) pero ahora me "obligan" a usar algo que esté más al día, de modo que me han dicho que use Access2003 o me vaya a SQL.

El caso es que quiero seguir usando Access y de modo que me he puesto a actualizar mis conexiones. La gran mayoría de las conexión se siguen realizando correctamente, pero otras han tenido que sufrir algunos cambios, por ejemplo:

con Access97 usaba:

Set CX = New ADODB.Connection

    With CX
         .Open ("Provider=Microsoft.Jet.OLEDB.3.51;" & _
            "Data Source=" & CONECTAR.cBaseDatos & ";" & _
            "Jet OLEDB:Database Password=pepe")
    End With

(no creais q l pasword en realidad es "pepe", jeje)

y he tenido que actualizarlo a:

    With CX
         .Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & CONECTAR.cBaseDatos & ";" & _
            "Jet OLEDB:Database Password=pepe")
    End With

yo tenia entendido que el Provider=Microsoft.Jet.OLEDB.4.0; era para la versión 2000, pero estaba confundido y es 3.51 para las anteriores a Access97 y 4.0 para las siguientes.

Este cambio ha funcionado (por ahora) con las conexión que me han ido surgiendo, según voy revisando el código.

Pero al llegar a la sección donde compacto la base de datos:

Set je = New JRO.JetEngine

    je.CompactDatabase _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & CONECTAR.cBaseDatos & ";" & _
        "Jet OLEDB:Engine Type=4;" & _
        "Jet OLEDB:Database Password=pepe", _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & sDBTmp & ";" & _
        "Jet OLEDB:Engine Type=4;" & _
        "Jet OLEDB:Database Password=pepe"

Este mismo código lo usaba también cuando usaba Access97, no entendia muy bien lo del 4.0 en este caso... pero así lo leí y así lo he usado y no me había dado problemas hasta ahora.

Hay algo que tengo mal, pero no se el que y lo que es peor... no se como solucionarlo.

El error que salta al ejecutarse esta línea de código es el siguiente:

Error '-2147467259 (800044005)' en tiempo de ejecución:

No se puede realizar esta operación;  las características de esta versión no están disponibles para bases de datos con formatos antiguos.

No lo entiendo del todo... ya que cuando dice "bases de datos con formatos antiguos..." exactamente lo que he "modernizado" ha sido la base de datos.

Supongo que algo del controlador está mal...

Espero que alguien me pueda echar una mano para poder solucionar esto.

muchas gracias como siempre.
ups!!

jrhomer

OK...Connection String:
//set the database engine (which version of access to create the file for)
//i.e. Type 4 -> access 95 & 97; Type 5 = access 2000 - current
DataSource := 'Provider=Microsoft.Jet.OLEDB.4.0' + ';Data Source=' +
  dbName + ';Jet OLEDB:Engine Type=5';

http://www.delphipages.com/threads/thread.cfm?ID=165855&G=165855

he cambiado el :

Jet OLEDB:Engine Type=4, por
Jet OLEDB:Engine Type=5

por ahora funciona, espero que en las próximas sentencias siga funcionando.

un saludo a todos.

ups!!