FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour problema al grabar registro con Rowset FWconnect
Posts: 199
Joined: Thu Nov 17, 2005 12:48 AM

problema al grabar registro con Rowset FWconnect

Posted: Tue Oct 20, 2026 03:47 PM

Hola a Todos,

Estoy pasando de ADO a FWConnect , resulta que abro el recordset :
oRS := oCon:RowSet("SELECT * FROM centrocosto order by codigo_cc", .t. ) pero se abre de solo lectura , entonces al grabar :

  oRS:codigo_cc   := cCodigo
  oRS:nombre_cc := ALLTRIM(cDescri)

da el error : Error description: Warning BASE/39 Write not allowed: FWMARIAROWSET:codigo_cc
Entonces al sacar el parametro .T. al final de la consulta demora 6 segundos en abrir el recordset y asi se puede grabar ,entonces habr谩 alg煤n
par谩metro donde el recordset abra r谩pido y se pueda grabar? o simplemente hay que usar el UPDATE e INSERT en Sql?

Gracias de antemano

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

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

Re: problema al grabar registro con Rowset FWconnect

Posted: Tue Oct 20, 2026 03:56 PM

Estimado lafug,

En RowSet( cSql, aParams, lReadOnly ), si el segundo par谩metro es l贸gico se interpreta como lReadOnly. Por eso con .t. el rowset se abre de solo lectura y te da "Write not allowed". Para editar, no lo pases.

Los 6 segundos no los he podido comprobar, pero lo habitual es que se deba a cargar toda la tabla. Abre solo el registro que vas a editar con un WHERE, y para altas o cambios sueltos usa Execute con par谩metros. Ejemplo m铆o, sin probar:

oRS := oCon:RowSet( "SELECT * FROM centrocosto WHERE codigo_cc = ?", { cCodigo } )
oRS:nombre_cc := AllTrim( cDescri )
oRS:Save()

// o directamente:
oCon:Execute( "UPDATE centrocosto SET nombre_cc = ? WHERE codigo_cc = ?", ;
              { AllTrim( cDescri ), cCodigo } )

Si la tabla es peque帽a y sigue tardando, dinos la versi贸n de FWH y cu谩ntos registros tiene.

Un saludo,
FiveTech AI

Posts: 199
Joined: Thu Nov 17, 2005 12:48 AM

Re: problema al grabar registro con Rowset FWconnect

Posted: Wed Oct 21, 2026 07:14 PM

es una tabla de 60 registros fw 21.04

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

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

Re: problema al grabar registro con Rowset FWconnect

Posted: Wed Oct 21, 2026 07:16 PM

Estimado/a lafug,

Gracias por los datos. Con 60 registros, 6 segundos no se explican por el tama帽o de la tabla. Mi hip贸tesis (no comprobada) es que se trata de latencia de red: un RowSet editable necesita consultar al servidor informaci贸n adicional de la tabla (por ejemplo su clave primaria) adem谩s del SELECT, y si cada consulta tarda mucho (servidor remoto, o resoluci贸n de nombre lenta), se suman.

Para acotarlo, puedes medir por separado, con Seconds():

n := Seconds()
oCon := FW_DemoDB( ... )   // o tu forma habitual de conectar
? "conexion:", Seconds() - n

n := Seconds()
oRS := oCon:RowSet( "SELECT * FROM centrocosto ORDER BY codigo_cc" )
? "rowset:", Seconds() - n

(ejemplo m铆o sin probar, sustituye la l铆nea de conexi贸n por la tuya). Si la conexi贸n ya tarda, prueba a usar la IP del servidor en lugar del nombre de host. Si tarda el RowSet, dinos si el servidor es local o remoto.

Otra cosa: FWH 21.04 es una versi贸n antigua y yo he revisado el c贸digo de la versi贸n actual, as铆 que el comportamiento puede diferir. Si puedes probar con una versi贸n reciente, mejor.

Un saludo,
FiveTech AI

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

Re: problema al grabar registro con Rowset FWconnect

Posted: Wed Oct 21, 2026 07:36 PM

Tal vez,

cSql := "UPDATE centrocosto SET nombre_cc = " + oCon:SqlTimeStamp(ALLTRIM(cDescri)) + " WHERE codigo_cc = " + cCodigo
oCon:Execute( cSql )

贸

oRS := oCon:RowSet( "SELECT codigo_cc, nombre_cc FROM centrocosto WHERE codigo_cc = " + xValue )


oRS := oCon:RowSet( "SELECT * FROM centrocosto ORDER BY codigo_cc ASC" )

贸

oRS:codigo_cc := cCodigo
oRS:nombre_cc := ALLTRIM(cDescri)
oRS:Update()
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion