Retornar de un formulario secundario un Cursor al formulario Principal

40 views
Skip to first unread message

integral

unread,
Feb 27, 2026, 12:05:58 PM (24 hours ago) Feb 27
to Comunidad de Visual Foxpro en Español
Que tal amigos del Foro

Muy Buenos Días

Tengo el siguiente caso.

Cargo los datos ingresados en el formulario secundario a un Cursor, para luego con dichos campos grabarlos a la tabla del formulario principal en SqlServer 2019 

Luego de buscar varias alternativas para retornar varios campos a un formulario principal de tipo modal.

Encontré un ejemplo que propuso en aquel entonces el colega Walter Ojeda y deseo aplicarlo. ( Ver imagen adjunta) 

RETORNO_WALTER_OJEDA.jpg

Luego de ocultar el formulario al parecer se esta cerrando el cursor y por ende no llega a grabar los datos y marca error...

Agradezco sus comentarios y sugerencias..

Saludos,

Integral

Victor Espina

unread,
Feb 27, 2026, 12:47:18 PM (23 hours ago) Feb 27
to Comunidad de Visual Foxpro en Español
A mi en lo particular me gusta usar objetos para esto, pues cuando los pasas como parametro los pasas como REFERENCIA, no como valor, por lo que al volver del formulario hijo mantienen los valores almancenados en el.  Ejemplo:

FORMULARIO PRINCIPAL:
====================================

LOCAL oParams
oParams = CREATE("EMPTY")
ADDPROPERTY(oParams,"result", .F.)
ADDPROPERTY(oParams"data", CREATE("EMPTY"))
ADDPROPERTY(oParams.data,"nombre","")
ADDPROPERTY(oParams.data,"apellido","")

DO FORM hijoModal WITH oParams   && oParams pasa como referencia, no como valor
IF NOT oParams.result
   RETURN
ENDIF

LOCAL cSQL
cSQL = "INSERT INTO tabla (nombre, apellido) VALUES (?oData.nombre, ?oData.apellido)"

PRIVATE oData
oData = oParams.data
SQLEXEC(nconn, cSQL)



FORMULARIO HIJO
==========================

INIT:
LPARAMETERS poParams
THISFORM.addProperty("Params", poParams)  && Guardamos la referencia en el formulario para que no se pierda

GUARDAR:
WITH THISFORM.Params
  .result = .T.
  .data.nombre = THISFORM.txtNombre.Value
  .data.apellido = THISFORM.txtApellido.Value
ENDWITH
THISFORM.Release()



Saludos

Victor Espina

Zarlu

unread,
Feb 27, 2026, 2:06:29 PM (22 hours ago) Feb 27
to Comunidad de Visual Foxpro en Español
Buenas tardes Integral!

Dices...".. Luego de ocultar el formulario al parecer se esta cerrando el cursor..."

Sugerencia: 
Crea el cursor temporal antes de llamar al segundo formulario.  Quizá la DataSession deba ser 1.
Así seguirá disponible cuando se cierre el segundo formulario.

(o más complicado...regresa la estructura e información del cursor en un array para crearlo al retornar)
Suerte
zarlu
Chetumal, Quintana Roo, México
Reply all
Reply to author
Forward
0 new messages