El 03/01/2011 13:44, Carlos A. Pérez escribió:
Hola.
El problema es que VFP no puede encontrar lo que necesita para poder
representar correctamente el formulario. Parece que la tabla, vista o cursor
llamado "clientesql" no está disponible, que es el origen de datos para el
control grid. Deberías investigar cómo se gestiona la apertura de este
cursor, si el mismo está disponible al momento de la carga del formulario,
etc. Esencialmente, debería abrirse en el evento Load o bien al abrir el
entorno de datos del formulario (dataenvironment).
Suerte
Carlos
-----Mensaje original-----
De: [email protected] [mailto:[email protected]] En nombre de marta isabel
orquera
Enviado el: lunes, 03 de enero de 2011 7:03
Para: GUFA List Member
Asunto: [GUFA] Migración a VFP 9
Estamos migrando un sistema desde VFP.5 y 6 a VFP.9.
Cambiado el formato de la fecha y agregamos a los formularios que usan grid
la instrucción set enginebehavior 70.
Ahora nos apareció el siguiente error: error loading file - record number n
8 Grid1< or one of its members> Controlsource: Alias clientesql is not
found.
Alguien sabe qué es lo que origina este error.
Desde ya muchas gracias
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 5011 (20100408) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Como dice Carlos, tenés que abrir la tabla que es el recordsource de la
grid en el evento load del formulario, dado que este evento se dispara
antes que el init de la grid. De esa manera, el cursor o tabla está
levantado antes de que se instancie la grilla. Otra forma de hacerlo
sería abrir la tabla en el Dataenvironment porque este objeto también se
instancia antes que el formulario.
Y una tercera manera de hacerlo es hacer algo así:
Evento init del form
lparameter cXML
thisform.grid1.recordsource = ''
local oXML
oXML=CreateObject('XmlAdapter')
oXML.LoadXML(cXML)
oXML.Tables.Item(1).ToCursor() && le saco el cursor clientesql
select clientesql
with thisform.grid1
.columncount = 3
.recordsource = 'clientesql'
.column1.controlsource = 'clientesql.cuenta'
.column2.controlsource = 'clientesql.empresa'
.column3.controlsource ='clientesql.cuit'
etc
endwith
Esto es para el caso en que el formulario esté recibiendo un cursor
adentro de un xml. Entonces el xml se recibe en el evento init como
parámetro. Abris un XMLAdapter y regenerás el cursor dentro del
formulario (que debería tener la sesión privada de datos). Al poner el
recordsource de la grilla como vacío, permitís que la misma se instancie
aunque el cursor no exista en el form. Después lo regenerás como te
indico y luego le pasás los datos a la grid.
Saludos y Feliz Año
Rafael Copquin