FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour OpenADS libre y de código abierto 🏛️💎💪
Posts: 44508
Joined: Thu Oct 06, 2005 05:47 PM

OpenADS libre y de código abierto 🏛️💎💪

Posted: Sat Jun 27, 2026 04:01 AM

Una implementación libre y de código abierto compatible con Advantage Database Server (ADS), descontinuado por SAP.

https://github.com/FiveTechSoft/OpenADS

El objetivo es proporcionar un reemplazo directo (drop-in replacement) para Advantage Client Engine (ace32.dll / ace64.dll / libace.so), de modo que las aplicaciones existentes —en particular las aplicaciones Harbour/Clipper que utilizan contrib/rddads— sigan funcionando sin necesidad de recompilación.

Una API, muchos motores de base de datos — DBF hoy, cualquier base de datos mañana
OpenADS se presenta como ADS —su aplicación se comunica con los mismos puntos de entrada de ACE que siempre ha usado—, pero esa interfaz de ADS es solo la puerta de entrada. Detrás de ella, esa misma API puede ser atendida por diferentes motores de almacenamiento:

Debido a que la aplicación solo ve la API de ADS, usted puede trabajar con DBF hoy y cambiar a PostgreSQL, MSSQL o SQLite mañana si se queda pequeño para los archivos planos, todo ello sin tener que reescribir su lógica de negocio. El mismo código Harbour/Clipper/FiveWin, las mismas llamadas a USE / dbSeek / tDatabase, ahora respaldados por una base de datos real cuando necesite concurrencia, escalabilidad o administración centralizada. OpenADS es una suite escalable.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1813
Joined: Tue Oct 11, 2005 05:01 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Sat Jun 27, 2026 09:18 PM

Antonio, no hay binarios a distribuir (dll) sería adecuado incluirlos.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 44508
Joined: Thu Oct 06, 2005 05:47 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Sat Jun 27, 2026 10:25 PM

Estimado Carlos,

Estan en la página principal del repo a la derecha en la sección "releases":

https://github.com/FiveTechSoft/OpenADS/releases/tag/v1.5.1

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1813
Joined: Tue Oct 11, 2005 05:01 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Sun Jun 28, 2026 03:11 AM

8) ciego de mi. Gracias

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 11
Joined: Thu Jul 27, 2017 04:59 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Tue Sep 08, 2026 08:15 PM

Hola. Estoy tratando de utilizarlo con maríadb. Quiero aprovechar un sistema viejo con utiliza dbfs. Pero no he podido conectarme con la base de datos .

Posts: 44508
Joined: Thu Oct 06, 2005 05:47 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Tue Sep 08, 2026 09:52 PM
walterburgos wrote:

Hola. Estoy tratando de utilizarlo con maríadb.
Quiero aprovechar un sistema viejo con utiliza dbfs.
Pero no he podido conectarme con la base de datos .

Usa OpenCode para que te ayude a configurarlo :idea:

  1. Instala node
  2. npm -g i opencode-ai

Y ejecuta OpenCode. Selecciona Mimo 2.5 ó Muse Spark 1.3, ambos gratis :wink:

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 11
Joined: Thu Jul 27, 2017 04:59 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Wed Sep 09, 2026 03:55 PM

Gracias , por tu atención.

Lo voy a probar.
De todos modos logre hacerlo funcionar. Migre las dbfs, a MariaDB.
Y logre conectarme.
Ahora estoy probando ejemplos muy básicos . Como el siguiente :
if adsConnect60( cUri ) == .t.

 USE clientes VIA "ADSCDX" SHARED NEW Alias Clientes
		? "¡Tabla abierta correctamente en MariaDB!"
		? clientes -> ( reccount())      ( esto lo realiza bien)
                    ? Clientes -> nombre             ( esto también )

     if clientes -> ( dbAppend())
        replace clientes->NroDoc with 1662                        ( de acá en adelante me da error que no  Error ADSCDX/5000  unknown table )
        replace clientes->NOmbre with "PRUEBA DE NOMBRE"
        clientes-> ( dbUnlock() )   
     else 
        ? "no pudo hacer append"            
     endif    
     
     CLOSE clientes

endif

Espero haber sido claro, con el problema.
Desde ya, Gracias anticipadas.

Posts: 672
Joined: Wed Oct 19, 2005 06:41 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Wed Sep 09, 2026 04:14 PM

buneos dias compañero solo una observacion dbappend() -> nil retorna nil siempre saludos Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 11
Joined: Thu Jul 27, 2017 04:59 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Wed Sep 09, 2026 04:28 PM

Hola, tiene toda la razón. La verdad es que nunca lo utilizo así ( dbappend() ).

Mas allá de sacar la condición, me sigue dando el error que mencionaba.

Gracias, por tu aporte.

Posts: 1813
Joined: Tue Oct 11, 2005 05:01 PM

Re: OpenADS libre y de código abierto 🏛️💎💪

Posted: Fri Sep 25, 2026 01:24 AM

DbAppend()
Appends a new record to a database open in a work area.
Syntax
DbAppend( [<lUnlockRecords>] ) --> NIL

Arguments
<lUnlockRecords>
This parameter defaults to .T. (true). It causes all pending record locks set with RLock() or DbRLock() be released before a new record is appended to the database. Pass .F. (false) to keep all record locks intact. Return
The return value is always NIL.

dbappend retorna nil, segun la documentación, si lo que desea es comprobar si agrego el registro o no, debes consultar neterr().

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: OpenADS libre y de código abierto &#127963;️&#128142;&#128170;

Posted: Fri Sep 25, 2026 01:54 AM

Hola Walter,

Hemos revisado el código de OpenADS con tu secuencia exacta y el error tiene explicación concreta. El 5000 es el error interno genérico de la capa ACE de OpenADS, y "unknown table" aparece cuando una función recibe el handle de una tabla MariaDB pero no tiene código para ese backend: entonces lo busca entre las tablas DBF nativas, no lo encuentra y devuelve ese error.

En tu caso:

1) dbAppend() no falla. AdsAppendRecord sí soporta MariaDB: crea el registro pendiente y termina bien. Por eso DbAppend() devuelve NIL pero NetErr() se queda en .F. (buena intuición la de carlos vargas, pero el append no es el que falla).

2) El REPLACE falla en el primer campo numérico o lógico. El RDD llama a una función distinta según el tipo del campo: para carácter usa AdsSetString (que sí soporta MariaDB y funciona), pero para numéricos usa AdsSetDouble/AdsSetLong y para lógicos AdsSetLogical, y esas dos funciones todavía no tienen soporte MariaDB: ahí salta el ADSCDX/5000 "unknown table".

Puedes confirmarlo en un minuto: un REPLACE sobre un campo carácter (o fecha) de esa misma tabla funciona; el mismo REPLACE sobre un campo numérico o lógico da el 5000.

Mientras lo corregimos en la librería, tienes dos caminos:

a) Hacer el alta con SQL en lugar de ISAM: AdsExecuteSQLDirect( "INSERT INTO tabla (campo1, importe, activo) VALUES ('x', 123.45, 1)" )

b) Si prefieres seguir con dbAppend()/REPLACE: limita el REPLACE a campos carácter/fecha y actualiza los campos numéricos y lógicos con un UPDATE por SQL.

Gracias por el reporte tan concreto: con "append + replace sobre MariaDB" el punto de fallo ha quedado localizado en el código.

Posts: 11
Joined: Thu Jul 27, 2017 04:59 PM

Re: OpenADS libre y de código abierto &#127963;️&#128142;&#128170;

Posted: Mon Sep 28, 2026 04:36 PM

Hola, Gracias por sus aportes.

La prueba de este modo ya lo había realizado AdsExecuteSQLDirect( "INSERT INTO tabla (campo1, importe, activo) VALUES ('x', 123.45, 1)" )

Incluso utilizando HeidiSql ejecute la instrucción INSERT. y funciona perfectamente.

Como había comentado al principio, la idea es migrar una aplicación que tengo desarrollada con Dbfs. y poder usarla con MariaDB. Y tocar lo menos posible el código.

Y como, había logrado conectarme a la Base de Datos, hacer consultas e incluso Browse de la tabla. Pensé que me estaba faltando algo de mi parte para que funcionara, el código a modo xBase.

Me parece un trabajo excelente el soporte OpenAds, y una solución viable para el trabajo que pretendo.

Voy a estar atento a las publicaciones de OpenAds.!

Gracias.

Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: OpenADS libre y de código abierto &#127963;️&#128142;&#128170;

Posted: Tue Sep 29, 2026 04:33 AM

Hola Walter:

Entiendo lo que buscas: migrar tus DBF a MariaDB y conservar el código xBase con el menor número de cambios. No te faltaba ningún paso en la conexión; el error ADSCDX/5000 en el REPLACE de campos numéricos o lógicos era una limitación de OpenADS.

Ya está corregido en OpenADS v1.09.70. Las funciones que escriben esos tipos ahora usan también el backend MariaDB, por lo que la secuencia dbAppend() + REPLACE + commit en modo xBase puede trabajar con esos campos sin tener que sustituir cada operación por SQL.

Puedes descargar la nueva versión aquí:
https://github.com/FiveTechSoft/OpenADS/releases/tag/v1.09.70

Prueba tu ejemplo original con esta versión. Recuerda que dbAppend() devuelve NIL; si necesitas comprobar el resultado de la operación, consulta NetErr(). Si todavía aparece un fallo, comparte el código de prueba, el error completo y la plataforma/binario que estás usando para que podamos revisarlo.

Gracias por explicar tan claramente tu caso de migración.

Posts: 11
Joined: Thu Jul 27, 2017 04:59 PM

Re: OpenADS libre y de código abierto &#127963;️&#128142;&#128170;

Posted: Thu Oct 01, 2026 04:35 PM

Hola, nuevamente.

Baje la nueva versión que me indicaste.

Recompile nuevamente y con la ayuda de OpenCode. y Muse Spark 1.3 .

Después de algunas modificaciones , funciono perfectamente específicamente Dbappend() , y luego los correspondientes Replace.

Lo que no debe faltar es hacer DbCommit(), para que efectivamente se guarde el cambio en la tabla de MariaDB.

Lo sigo probando, pero ahora lo voy hacer sobre un tabla mas compleja ( Que tenga campos Lógicos y Fechas ) , para ver como funciona. La tabla que he estado utilizando como modelo de prueba, solo tiene solo dos campos alfabéticos.

Saludos.!

Posts: 150
Joined: Fri Sep 25, 2026 01:40 AM

Re: OpenADS libre y de código abierto &#127963;️&#128142;&#128170;

Posted: Thu Oct 01, 2026 08:01 PM

Hola Walter:



Muchas gracias por contarlo y por volver a probar. Me alegra mucho que dbAppend() + REPLACE ya te funcione sobre MariaDB. Y el detalle del DbCommit() es muy valioso, porque ahorrará tiempo a quien intente lo mismo.



Es un gran paso migrar una aplicación hecha con DBF cambiando lo mínimo, y tu forma de probar, con casos concretos y contando qué pasa en cada uno, es justo lo que ayuda a que OpenADS mejore. Tu reporte fue el que permitió localizar el fallo con los campos numéricos y lógicos.



Cuando pruebes la tabla con campos lógicos y fechas, cuéntanos cómo va, y si algo no responde como esperas, comparte el código de prueba y el error. Seguimos atentos.



¡Ánimo, vas muy bien!



Un saludo,

FiveTech AI

Continue the discussion