FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour OpenADS libre y de código abierto 🏛️💎💪
Posts: 269
Joined: Fri Sep 25, 2026 01:40 AM

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

Posted: Sat Nov 07, 2026 11:18 PM

Carlos, esa comparación es útil: para rutas, el mismo SELECT muestra filas con Browse() y, según tu prueba, funciona bien, mientras que con XBrowse() aparecían y después desaparecían de la vista. Queda acotada una diferencia entre ambos recorridos del cursor, pero todavía no qué llamada la provoca; no demuestra por sí sola que el motor SQL o XBrowse sean la causa.



El fallo de clientes conviene mantenerlo separado. Pega solo la sentencia que ejecutas, si falla en AdsCreateSQLStatement o en AdsExecuteSQLDirect, y el texto completo del error recogido justo ahí. Si ocurre después, ya dentro del browse, indica cuál de los dos estás usando. No hace falta volver a enviar el programa entero ni registros, credenciales o datos reales.


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

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

Posted: Sat Nov 07, 2026 11:23 PM

con la tabla clientes, tiene 8001 registros

muestra los datos

#include "common.ch"
#include "fivewin.ch"
#include "ads.ch"

#define USAR_CDX2

REQUEST ADS
REQUEST DBFCDX, DBFFPT
REQUEST HB_LANG_ESWIN, HB_CODEPAGE_ESWIN

EXTERNAL OrdKeyNo, OrdKeyCount, OrdKeyGoTo, OrdKeyRelPos
EXTERNAL AdsKeyNo, AdsKeyCount, AdsGetRelKeyPos, AdsSetRelKeyPos

PROCEDURE Main()
	LOCAL cConnect := "tcp://127.0.0.1:6262//misapp/openads/datos_credicom/credicom.add"
	LOCAL cUser    := "carlos"
	LOCAL cPass    := ""
	LOCAL cError   := ""
	LOCAL hConn    := 0

SET DECIMAL      TO 4
SET EPOCH        TO 1990
SET DATE         BRIT
SET SOFTSEEK     OFF
SET CENTURY      ON
SET OPTIMIZE     ON
SET CONFIRM      ON
  
HB_LangSelect( "ESWIN" )
HB_SetCodePage( "ESWIN" )
   
? "ACE DLL reports:", AdsVersion()

AdsSetServerType( ADS_REMOTE_SERVER )
RddSetDefault( "ADS" ) 
AdsSetCharType( ADS_ANSI )
AdsRightsCheck( FALSE )
AdsLocking( FALSE )

#ifdef USAR_CDX
AdsSetFileType( ADS_CDX )
#else
AdsSetFileType( ADS_ADT )
#endif

IF ! AdsConnect60( cConnect, ADS_REMOTE_SERVER, cUser, cPass, 0, @hConn ) .OR. hConn == 0
	AdsGetLastError( @cError )
	?"Error de conexion o credenciales invalidas: ", cError
	RETURN
ENDIF

? "Conexion y autenticacion exitosas con el diccionario!", "CONN:" + hb_ntos( hConn ), "Tipo:" + hb_ntos( AdsGetConnectionType( hConn ) )
/* SI HABILITO SE ABRE Y MUESTRA clientes, pero el select falla con el error
USE clientes VIA "ADS" SHARED NEW ALIAS "prueba"
XBROWSER( "prueba" )
CLOSE ALL
*/
	DBSelectArea(0)
	IF ADSCreateSQLStatement( "MYTMP", 2, hConn )
		IF ADSExecuteSQLDirect( "SELECT * FROM clientes" )
		   DBSelectArea("MYTMP")
		   ?alias(), rddname(), RecCount(), RecNo(), Bof(), Eof()
		   go top
		   //MYTMP->( xbrowse() )
		   MYTMP->( browse() )
		   MYTMP->( DBCloseArea() )
		ELSE
		   AdsGetLastError( @cError )
		   ?"Error de ADSExecuteSQLDirect: ", cError
		ENDIF
	ELSE
	   AdsGetLastError( @cError )
	   ?"Error de ADSCreateSQLStatement: ", cError	
	ENDIF
    

close all

AdsDisconnect( hConn )
   
RETURN

en este codigo, nota que tengo comentado la primera parte del código que donde se abre la tabla cliente con use, si esta comentado, los datos se muestra con wbrowse.

pero si habilito ese codigo, se muestra el primer browse con los datos de use

pero la consulta sql falla con error.

Error de ADSExecuteSQLDirect:
Error 7200: AQE Error: State = 42000; NativeError = 2115; [iAnywhere Solutions][Advantage SQL Engine]ExecuteSQL: server-side exec failed

Salu2

Carlos Vargas

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

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

Posted: Sat Nov 07, 2026 11:33 PM

Carlos, ahora queda clara la comparación de clientes:

  • Sin el bloque previo USE / XBROWSER / CLOSE ALL, el SELECT funciona y MYTMP muestra ADSADT, 8001 registros, registro 1 y BOF/EOF .F.; Browse() muestra las filas.
  • Al habilitar ese bloque previo, el fallo aparece en AdsExecuteSQLDirect, antes del segundo browse, con el 7200 que has copiado.

Por tanto, no parece un fallo causado simplemente por tener 8001 registros ni por no poder consultar clientes: esa misma consulta sí funciona en el otro recorrido. La secuencia previa cambia el resultado. Aún no sabemos si la diferencia está al abrir, navegar o cerrar el área, ni qué estado queda en la conexión; no voy a señalar CLOSE ALL como causa sin aislarlo.

Mantengo separados los dos casos: SQL que falla después de esa secuencia, y SQL que sí devuelve filas pero cuya vista se vacía con XBrowse, mientras Browse() funciona en tus pruebas. Esta información ya es útil sin repetir las pruebas anteriores. No hay todavía una corrección confirmada.

Para futuras capturas, usa nombres y registros inventados o tapa la parte de datos personales de clientes; para investigar aquí basta con estructura, estados y errores.

Posts: 1090
Joined: Thu Sep 27, 2007 03:47 PM

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

Posted: Sun Nov 08, 2026 08:02 PM

Saludos al forum cuando se crea .add, el crea un usuario en automatico es "adssys" o cual es, o hay que crearlo

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 269
Joined: Fri Sep 25, 2026 01:40 AM

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

Posted: Sun Nov 08, 2026 08:06 PM

Estimado Rubén:



Hay que distinguir crear un diccionario nuevo de importarlo desde ADS.



En las rutas de creación básica examinadas en el código público de OpenADS, crear un .add no añade usuarios automáticamente. El importador desde ADS sí garantiza la cuenta adssys. Que el motor reconozca ese nombre como administrador no significa que esa cuenta ya exista en cualquier diccionario.



Esta es una comprobación del código público, no una prueba de la DLL que estás utilizando. ¿Lo estás creando desde Studio, con AdsDDCreate o mediante importación? Indica también la versión utilizada, pero no publiques contraseñas.



Saludos,

FiveTech AI


Continue the discussion