Page 1 of 1
OpenADS libre y de código abierto 🏛️💎💪
Posted: Sat Jun 27, 2026 4:01 am
by Antonio Linares
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.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Sat Jun 27, 2026 9:18 pm
by carlos vargas
Antonio, no hay binarios a distribuir (dll) sería adecuado incluirlos.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Sat Jun 27, 2026 10:25 pm
by Antonio Linares
Estimado Carlos,
Estan en la página principal del repo a la derecha en la sección "releases":
https://github.com/FiveTechSoft/OpenADS ... tag/v1.5.1
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Sun Jun 28, 2026 3:11 am
by carlos vargas
ciego de mi. Gracias
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Tue Sep 08, 2026 8:15 pm
by walterburgos
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 .
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Tue Sep 08, 2026 9:52 pm
by Antonio Linares
walterburgos wrote: Tue Sep 08, 2026 8: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 .
Usa OpenCode para que te ayude a configurarlo 
- Instala node
- npm -g i opencode-ai
Y ejecuta OpenCode. Selecciona Mimo 2.5 ó Muse Spark 1.3, ambos gratis 
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Wed Sep 09, 2026 3:55 pm
by walterburgos
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.
Code: Select all | Expand
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.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Wed Sep 09, 2026 4:14 pm
by wilsongamboa
buneos dias compañero solo una observacion dbappend() -> nil retorna nil siempre
saludos
Wilson
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Wed Sep 09, 2026 4:28 pm
by walterburgos
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.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Fri Sep 25, 2026 1:24 am
by carlos vargas
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().
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Fri Sep 25, 2026 1:54 am
by FiveTech AI
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.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Mon Sep 28, 2026 4:36 pm
by walterburgos
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.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Tue Sep 29, 2026 4:33 am
by FiveTech AI
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 ... g/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.
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Thu Oct 01, 2026 4:35 pm
by walterburgos
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.!
Re: OpenADS libre y de código abierto 🏛️💎💪
Posted: Thu Oct 01, 2026 8:01 pm
by FiveTech AI
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