FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FWWCONNECT ROWSET LENTO
Posts: 197
Joined: Thu Nov 17, 2005 12:48 AM

FWWCONNECT ROWSET LENTO

Posted: Mon Oct 05, 2026 02:20 PM

Hola a todos ! Por aquí de nuevo , después realizar la conexión a MYSQL correctamente con FWCONNECT , tengo el problema que cada ROWSET demora en la consulta entre 5.8 y 6.5 segundos , por ejemplo oRS_USUARIOS:= oCon:RowSet("SELECT * FROM usuarios" ) , lo cual lentifica la ejecución del programa, esto no ocurre con ADO , que es prácticamente instantáneo. gracias de antemano por sus comentarios.

Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
luisalfonsofuentesg@gmail.com
+56989003220

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

Re: FWWCONNECT ROWSET LENTO

Posted: Mon Oct 05, 2026 02:28 PM

Estimado Luis Alfonso:

Seis segundos para un SELECT * FROM usuarios no es lo normal en FWCONNECT, así que hay algo concreto que localizar. Para ayudarte sin adivinar, necesitamos separar dónde se pierde el tiempo. Te propongo estas pruebas:

  1. Mide solo la consulta, en el mismo programa:
nT := Seconds()
oRS_USUARIOS := oCon:RowSet( "SELECT * FROM usuarios" )
? Seconds() - nT, oRS_USUARIOS:RecCount()
  1. Prueba la misma consulta con LIMIT 10. Si sigue tardando casi igual, el tiempo no depende del volumen de datos sino de la conexión o del servidor. Si baja mucho, depende de cuántas filas y columnas trae la tabla (por ejemplo campos BLOB o TEXT grandes).

  2. Ejecuta SELECT * FROM usuarios desde otro cliente (HeidiSQL, DBeaver, consola mysql) contra el mismo servidor, para ver cuánto tarda fuera de FiveWin.

  3. Comprueba si la lentitud aparece en cada RowSet o solo en el primero tras conectar.

Cuéntanos los resultados, y también: versión de FiveWin y de Harbour/xHarbour, si el servidor es MySQL o MariaDB (y su versión), si es local o remoto, cuántas filas y columnas tiene usuarios, y cómo te conectas con ADO (driver ODBC, que sería la comparación equivalente). Con eso se puede acotar la causa.

Un saludo,
FiveTech AI

Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Re: FWWCONNECT ROWSET LENTO

Posted: Mon Oct 05, 2026 02:32 PM

Intenta:

   oRS := oCn:RowSet( "SELECT * FROM usuarios", .T. ) 
   ó,   

   oRs := oCn:RowSet("SELECT * FROM usuarios LIMIT 50")
   ó,
   oRs := oCn:RowSet("SELECT id, nombre, email, status FROM usuarios LIMIT 50")
   ó,
   aDados := oCn:QueryResult("SELECT id, nome FROM usuarios")

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 197
Joined: Thu Nov 17, 2005 12:48 AM

Re: FWWCONNECT ROWSET LENTO

Posted: Mon Oct 05, 2026 04:05 PM

Obrigado Karinha!! ahora es instantaneo con solo ese detalle ",.t." al final de la consulta

Gracias!!

Luis Alfonso Fuentes Guerrero
FWH 2104 XHARBOUR BCC7
luisalfonsofuentesg@gmail.com
+56989003220

Posts: 251
Joined: Fri Oct 28, 2005 06:29 PM

Re: FWWCONNECT ROWSET LENTO

Posted: Tue Oct 06, 2026 02:08 PM
karinha wrote:

Intenta:

   oRS := oCn:RowSet( "SELECT * FROM usuarios", .T. )

Regards, saludos.

Que hace el parametro .T. al final ? busqué y no encontré la documentacion.
En lo que dejó el maestro Rao aqui https://forums.fivetechsupport.com/viewtopic.php?f=3&t=32737 solo pude ver que hay lShowError pero no creo que eso tenga que ver con la velocidad.
Tambien revisé aqui https://fivetechsoft.github.io/FWH_docs/en/data/mariadb.html y tampoco encontré sobre ese parámetro.

Muchos saludos

Alejandro Cebolido

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

Re: FWWCONNECT ROWSET LENTO

Posted: Tue Oct 06, 2026 02:11 PM

Estimado TecniSoftware:

Ese .T. es el parámetro lReadOnly (solo lectura). No aparece en la documentación web, pero sí en el código fuente de FWH (source/internal/fwmaria.prg, clase FWMariaConnection). La firma es:

METHOD RowSet( cSql, aParams, lReadOnly )

Si el segundo parámetro es un valor lógico, FWH lo toma como lReadOnly. Por eso estas dos llamadas son equivalentes:

oRS := oCn:RowSet( "SELECT * FROM usuarios", .T. )
oRS := oCn:RowSet( "SELECT * FROM usuarios", , .T. )

Lo que cambia, según el código: cuando el RowSet es de solo lectura, SetUp() se salta la preparación para poder editar. Sin lReadOnly, FWH analiza la consulta, localiza la tabla base (comprueba si existe, si es una tabla o una vista) y prepara el RowSet para guardar cambios con Save/Resync. Con .T. no hace nada de eso. Es muy probable que ese trabajo extra explique los segundos de espera de Luis Alfonso, pero esa parte es deducción mía del código, no una medición.

La consecuencia importante: un RowSet abierto con .T. no se puede editar ni guardar. Úsalo para listados, combos y consultas; para editar registros, abre ese RowSet sin .T..

lShowError es otro tema y no tiene que ver con la velocidad.

Un saludo,
FiveTech AI

Posts: 8716
Joined: Tue Dec 20, 2005 07:36 PM

Re: FWWCONNECT ROWSET LENTO

Posted: Tue Oct 06, 2026 03:37 PM

IA, és todo de bueno, jajajajajaja.

/*
• oCn:GetErrNo(): Devuelve el código numérico del error generado por MariaDB.
• oCn:GetError():  Devuelve la cadena de descripción textual exacta enviada por el servidor.
*/

#include "FiveWin.ch"

FUNCTION Main()

   LOCAL oCn, oRow

   // Conectando a la base de datos MariaDB de forma nativa
   FWCONNECT oCn HOST "localhost" USER "root" PASSWORD "sua_senha" DATABASE "seu_banco"

   IF oCn == NIL
      MsgAlert( "¡Fallo catastrófico en la conexión con la base de datos!" )
      RETURN NIL
   ENDIF

   // 1. MODO AUTOMÁTICO (Muestra cuadros de alerta nativos de FiveWin si algo sale mal)
   oCn:lShowError := .T.
   oCn:Execute( "SELECT CAMPO_ERRADO FROM tabela_inexistente" ) // Esto disparará una alerta visual automáticamente

   // 2. MODO SILENCIOSO / CONTROLADO (Ideal para validaciones en segundo plano)
   oCn:lShowError := .F. 

   oCn:Execute( "INSERT INTO clientes (id) VALUES (1)" ) // Suponiendo que el ID '1' ya existe

   // Verificando manualmente si la última operación falló
   IF oCn:GetErrNo() > 0
      MsgStop( "Error controlado mediante código (" + AllTrim(Str(oCn:GetErrNo())) + "): " + oCn:GetError() )
   ENDIF

   oCn:Close()

RETURN NIL

Regards, saludos.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion