In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Erro en TSQLQuery de un TWebDataSource1

Foro de Xailer profesional en español
Responder
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Buenas tardes.
He intentado hacer un :Refresh() de oSQLQuery conectado a un oWebDataSource1 y se produce el siguiente error:

***************************** Registro de errores *****************************

Exe: C:\xDesarrollos\Fuentes\Andrea\Usuarios\GUsuarios.exe
Version: 0.0.0.7
Build: 7
User name: jlcro
Computer name: DESKTOP-3LTTURE
Fecha: 07/07/2026
Hora: 13:26:04
Memoria libre: 2097151
Area actual: 1

------------------------- Información del compilador --------------------------

Versión Xailer: Xailer 9.2.3
Compilador: Harbour 3.2.0dev (r2307062207)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
Plataforma: Windows 8 6.2

----------------------- Información detallada del error -----------------------

Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: Message not found
Operación: TWebRecords:NRECCOUNT
Argumentos: [ 1] = Tipo: O Valor:
Fichero:
Código error SO: 0

Pila de llamadas:
__ERRRT_SBASE (0)
TWEBRECORDS:ERROR (0)
(b)HBOBJECT (0)
TWEBRECORDS:MSGNOTFOUND (0)
TWEBRECORDS:NRECCOUNT (0)
TWEBRECORDS:REFRESH (580)
TSQLQUERY:REFRESH (994)
TFORMUSUARIOS:FORMINITIALIZE (84)
TFORMUSUARIOS:ONINITIALIZE (0)
TFORMUSUARIOS:NEW (211)
(b)TFORMMENU_CREATEFORM (110)
TTOOLBUTTON:ONCLICK (0)
(b)XTOOLBUTTON (41)
TTOOLBUTTON:CLICK (0)
TTOOLBAR:COMMAND (445)
TREBAR:WMCOMMAND (275)
RUNFORM (0)
TAPPLICATION:RUN (297)
MAIN (42)

Muchas gracias.
Pepe.
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Ignacio podria ser que en la linea 580 del WebRecords.prg deberia cambiarse el IF nRecno <= ::nRecCount por IF nRecno <= ::RecCount
Gracias.
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

También detecto que después de editar el registro y hacer un :Update() se queda a .T. el :lOnEdit() y no se pueden actualizar ni siquiera forzándolo, los Datacontrols asociados a este DataSet
Gracias
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Siguiendo los fuentes he cambiado en la clase XWebRecords lineal 448 donde: IF !:Execute( cSql ) .OR. :nAffectedRows != 1 por IF !:Execute( cSql ) //.OR. :nAffectedRows != 1 y parece que va.
Resumiendo he tocado las líneas, 448 y 580
Saludos.
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Buenos días.
Ignacio necesita algún pequeño ejemplo para reproducir los errores o es suficiente con los datos facilitados.
Muchas gracias
Pepe.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9580
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por ignacio »

Jose Lopez escribió: Mié Jul 08, 2026 9:36 am Buenos días.
Ignacio necesita algún pequeño ejemplo para reproducir los errores o es suficiente con los datos facilitados.
Muchas gracias
Pepe.
Efectivamente nRecCount() es un typo. Ya está corregido. Con respecto al otro error necesitaría un ejemplo. Gracias.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9580
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por ignacio »

Jose Lopez escribió: Mar Jul 07, 2026 5:03 pm Siguiendo los fuentes he cambiado en la clase XWebRecords lineal 448 donde: IF !:Execute( cSql ) .OR. :nAffectedRows != 1 por IF !:Execute( cSql ) //.OR. :nAffectedRows != 1 y parece que va.
Resumiendo he tocado las líneas, 448 y 580
Saludos.
Es posible que la tabla que estés usando no tenga clave primaria y con la actualización de un registro se están actualizando varios registros a la vez. Has de poner clave primaria a la tabla. Seguramente cuando intentes poner clave primaria, te dará error por clave duplicada. Localiza la duplicidad y corrige el problema.

Saludos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Ignacio le paso la estructura de la tabla:
Campo Tipo Nulo Clave Por defecto Extra
"ID", "int(11)", "NO", "PRI", "", "auto_increment"
"USUARIO", "varchar(20)", "YES", "", "", ""
"PASS", "varchar(20)", "YES", "", "0000", ""
"IDUSERWEB", "int(11)", "NO", "", "0", ""
"NIF", "varchar(20)", "NO", "", "", ""

También indicarle el error: Descripción: Message not found
Operación: TWebRecords:NRECCOUNT en TWEBRECORDS:REFRESH (580)
Le ruego lo revise.
Muchas gracias.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9580
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por ignacio »

Ya le he comentado que nRecCount(), es un error que ya está corregido; debería ser sin la 'n'. En cuanto a su otro error necesito un ejemplo. Gracias.
Siguiendo los fuentes he cambiado en la clase XWebRecords lineal 448 donde: IF !:Execute( cSql ) .OR. :nAffectedRows != 1 por IF !:Execute( cSql ) //.OR. :nAffectedRows != 1 y parece que va.
El problema es que la operación afecta a más de una fila o no afecta a ninguna. Intente guardar el valor de la variable cSQL y ejecútela desde su programa de administración favorito de Mysql. Es posible que le ofrezca más información de lo que está pasando.

Un saludo

Nota adicional: Cuando pase la estructura de una tabla debería enviar el comando DDL.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Muchas gracias Ignacio, voy ha probar y le comento.
Y con respecto a: IF nRecno <= ::nRecCount que yo he cambiado por IF nRecno <= ::RecCount si revisa la linea 580 de WebRecords.prg creo que tiene un bug ya que dice: Descripción: Message not found
Operación: TWebRecords:NRECCOUNT
Yo creo que se a colado a n antes de RecCount
No se si ahora me explico.
Lo siento.
Gracias.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9580
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por ignacio »

Jose Lopez escribió: Mié Jul 08, 2026 10:23 pm Muchas gracias Ignacio, voy ha probar y le comento.
Y con respecto a: IF nRecno <= ::nRecCount que yo he cambiado por IF nRecno <= ::RecCount si revisa la linea 580 de WebRecords.prg creo que tiene un bug ya que dice: Descripción: Message not found
Operación: TWebRecords:NRECCOUNT
Yo creo que se a colado a n antes de RecCount
No se si ahora me explico.
Lo siento.
Gracias.
Insisto: "Ya le he comentado que nRecCount(), es un error que ya está corregido"
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Perdón no vi el comentario donde lo indicabas. Lo siento.

Con respecto a: IF !:Execute( cSql ) .OR. :nAffectedRows != 1 he realizado esta prueba con el Metodo Execute y estos son los resultados:

LogDebug( ::oWebDataSource1:Execute( "UPDATE USUARIOS SET NIF='1' WHERE (ID = 19)","ERROR en Execute") ) Devuelve .T.
LogDebug( ::oWebDataSource1:nAffectedRows ) Devuelve 0

Clase: XWebDataSource
linea: 1097 cData := ::InternetRequest( cCommand, cData, nValid )
valor devuelto por el php
<?xml version='1.0' encoding='iso-8859-1'?>
<Query>
</Query>

El modulo php si actualiza el registro correctamente de hecho el metodo: Execute devuelve .T. pero no devuelve la etiqueta: "Affected_rows" con valor 1 y sí, solo se ha actualizado un registro el resto de registros no cambian su valor.
Mil gracias.
Pepe.
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Según la IA en el archivo .php linea 302 if ( is_object( $result ) ) { Hay que cambiarla por: if ( $result ) { Dice: Si la consulta fue exitosa (puede ser un objeto o un TRUE booleano) para insert o update es: TRUE
Es Correcto?
Gracias por su paciencia.
Saludos.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9580
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por ignacio »

Hola,

Me temo que la IA se vuelve a equivocar. PHP puede devolver un valor booleano o un objeto. Cuando el resultado es correcto devuelve un objeto, cuando hay un error devuelve un valor falso. PHP es un asco. La IA debería saberlo
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9580
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por ignacio »

valor devuelto por el php
<?xml version='1.0' encoding='iso-8859-1'?>
<Query>
</Query>
Esto parece un error del módulo de PHP. No hay información devuelta. A ver si puede mandar un ejemplo. Gracias
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Jose Lopez
Mensajes: 180
Registrado: Mié Jun 16, 2010 2:33 pm

Re: Erro en TSQLQuery de un TWebDataSource1

Mensaje por Jose Lopez »

Ignacio he preparado un ejemplo usando la bd Neptuno de www.xailer.com siguiendo el ejemplo C:\Xailer9\Samples\DataControls\WebDataSet e intentando hacer un UPDATE de la tabla test. Pero parece que es de solo lectura.
¿Podría dejar la posibilidad de hacer UPDATE en la tabla: test ? Y subo el ejemplo al chat
Saludos.
Responder