FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour MsAccess xHarbour 32 Harbour 64
Posts: 26
Joined: Thu Mar 17, 2022 06:47 PM
MsAccess xHarbour 32 Harbour 64
Posted: Tue Dec 16, 2025 10:50 PM

Con xHarbour y BCC 7.6 funciona perfecto 32 bits

oCn:=FW_OpenAdoConnection("C:\NOMINA\EMPRESA\datos.mdb,mypassword",.T.)

Harbour Visual Studio 2022 64 bits, solo env铆a mensaje "error"

Lo he intentado de varias formas sin resultado
https://www.connectionstrings.com/access/
con ejemplos del foro

Alguien lo ha logrado con Herbour de 64 bits?

Saludos
Heraclio

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: MsAccess xHarbour 32 Harbour 64
Posted: Wed Dec 17, 2025 04:13 AM

Estimado Heraclio,

El problema que est谩s experimentando es un cl谩sico en la migraci贸n de 32 a 64 bits. No es un error de tu c贸digo ni de Harbour en s铆, sino una limitaci贸n de los controladores de base de datos de Windows.

Aqu铆 tienes la explicaci贸n t茅cnica y la soluci贸n paso a paso.


-----

La Causa Ra铆z

El proveedor que has usado siempre, Microsoft.Jet.OLEDB.4.0 (para archivos .mdb), solo existe en versi贸n de 32 bits. No existe una versi贸n de 64 bits de este motor.
Al compilar tu aplicaci贸n en 64 bits (Visual Studio), tu programa intenta cargar una DLL de 32 bits, lo cual es imposible en Windows, provocando el fallo inmediato.

La Soluci贸n: Usar el motor "ACE"

Para conectar a Access (ya sea .mdb o .accdb) desde una aplicaci贸n de 64 bits, debes usar el proveedor Microsoft.ACE.OLEDB.12.0 (o 16.0).

Sigue estos pasos para solucionarlo:

1\. Instalar el motor de base de datos de 64 bits

Necesitas instalar el "Microsoft Access Database Engine" en su versi贸n de 64 bits.

  • Descarga: Busca en Google "Microsoft Access Database Engine 2010 Redistributable" o "2016 Redistributable".
  • Importante: Si tienes instalado Microsoft Office de 32 bits en esa misma m谩quina, el instalador de 64 bits te dar谩 error. Para forzar la instalaci贸n, debes ejecutar el instalador desde la l铆nea de comandos con el par谩metro pasivo:
    AccessDatabaseEngine_x64.exe /passive

2\. Cambiar la cadena de conexi贸n

FW_OpenAdoConnection de FiveWin intenta a menudo adivinar el proveedor. Para 64 bits, es mejor ser expl铆cito o construir la cadena t煤 mismo.

Intenta cambiar tu c贸digo de esto:

Code (harbour): Select all Collapse
oCn := FW_OpenAdoConnection("C:\NOMINA\EMPRESA\datos.mdb,mypassword", .T.)

A una conexi贸n expl铆cita usando el proveedor ACE:

Code (harbour): Select all Collapse
local cStr, oCn, oError

// Nota el cambio de Provider a Microsoft.ACE.OLEDB.12.0
cStr := "Provider=Microsoft.ACE.OLEDB.12.0;" + ;
        "Data Source=C:\NOMINA\EMPRESA\datos.mdb;" + ;
        "Jet OLEDB:Database Password=mypassword;" + ;
        "Persist Security Info=False;"

TRY
   oCn := CreateObject( "ADODB.Connection" )
   oCn:Open( cStr )
   ? "Conexi贸n 64 bits exitosa"
CATCH oError
   ? "Error:", oError:Description
END

Nota: Aunque tu archivo sea .mdb (formato viejo), el motor ACE.OLEDB.12.0 es capaz de leerlo perfectamente, pero necesitas indic谩rselo en el "Provider".


-----

Resumen de diferencias

Caracter铆stica32 Bits (xHarbour/BCC)64 Bits (Harbour/MSVC)
ProviderMicrosoft.Jet.OLEDB.4.0Microsoft.ACE.OLEDB.12.0
Driver requeridoViene con Windows (default)Requiere instalaci贸n manual (Access DB Engine x64)
CompatibilidadOffice 32 bitsOffice 64 bits (o instalaci贸n con /passive)

驴Qu茅 pasa si FW_OpenAdoConnection falla?

Si la funci贸n nativa de FiveWin FW_OpenAdoConnection sigue fallando incluso con el driver instalado, es posible que la funci贸n internamente est茅 forzando el uso de "Jet". En ese caso, usa la creaci贸n del objeto ADODB.Connection manualmente como te mostr茅 en el ejemplo de c贸digo arriba. Funciona exactamente igual para el resto de tu l贸gica.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 26
Joined: Thu Mar 17, 2022 06:47 PM
Re: MsAccess xHarbour 32 Harbour 64
Posted: Sat Dec 20, 2025 03:16 PM

Antonio, muchas gracias por la respuesta.

Saludos.

Continue the discussion