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.

Problemas con la versión 1.5

Foro de Xailer profesional en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Problemas con la versión 1.5

Mensaje por Bingen Ugaldebere »

Tengo un programa desarrollado con la versión 1.4 funcionando en un
cliente que me ha pedido un pequeño cambio, añadir un campo a un Form.
Lo compilo con la 1.5 y todos los memdataset que andaban me fallan
estrepitosamente.
He visto en LoNuevo.Htm que habéis cambiado cosas en TMemDataSet,
adjunto el código que hasta ahora me funcionaba por si lo estoy haciendo
mal.
// Cargar browse de estudios de idiomas
METHOD MemIdiomasCreate( oSender ) CLASS TFormEditUsuarios
oSender:GetStructFrom
({{"Anio","N",4,0},{"Curso","C",15,0},{"Nivel","C ",30,0}})
::oDbfIdiomas:SetScope(::cIDUsuario,,.T.)

oSender:Open(::oDbfIdiomas:SaveToArray({"Anio","Curso","Nivel "}),{"Anio","Curso","Nivel"})
RETURN Nil
Y el error que me da es
TMEMDATASET:FIELDGET(954)
Error BASE/1132 Error de rango: acceso al array
Argumentos: ( [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 4)
Ademas de aparecer un LogDebug que antes no salí­a con este contenido
#1: XAILER: TMemDataSet:'aData' parameter empty with no structure
defined. :lReadOnly set to TRUE.
#2: XAILER: TMemDataSet:'aData' parameter empty with no structure
defined. :lReadOnly set to TRUE.
#3: XAILER: TMemDataSet:'aData' parameter empty with no structure
defined. :lReadOnly set to TRUE.
#4: XAILER: TMemDataSet:'aData' parameter empty with no structure
defined. :lReadOnly set to TRUE.
Gracias.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9458
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problemas con la versión 1.5

Mensaje por ignacio »

Bingen,
Como puedes ver en el error el TDataset está intentando acceder a un
elemento de la matriz que no existe, en concreto la fila cuarta del array
posiblemente.
Los mensajes de logdebug que aparacen son precisamente cuando se llama a
TMemDataset:Open() SIN ESPECIFICAR EL PRIMER PARAMETRO, ES DECIR, LA MATRIZ,
que no es lo que muestras precisamente.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:4697b097$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Tengo un programa desarrollado con la versión 1.4 funcionando en un
> cliente que me ha pedido un pequeño cambio, añadir un campo a un Form.
>
> Lo compilo con la 1.5 y todos los memdataset que andaban me fallan
> estrepitosamente.
>
> He visto en LoNuevo.Htm que habéis cambiado cosas en TMemDataSet, adjunto
> el código que hasta ahora me funcionaba por si lo estoy haciendo mal.
>
> // Cargar browse de estudios de idiomas
> METHOD MemIdiomasCreate( oSender ) CLASS TFormEditUsuarios
> oSender:GetStructFrom
> ({{"Anio","N",4,0},{"Curso","C",15,0},{"Nivel","C ",30,0}})
> ::oDbfIdiomas:SetScope(::cIDUsuario,,.T.)
>
> oSender:Open(::oDbfIdiomas:SaveToArray({"Anio","Curso","Nivel "}),{"Anio","Curso","Nivel"})
> RETURN Nil
>
>
> Y el error que me da es
>
> TMEMDATASET:FIELDGET(954)
> Error BASE/1132 Error de rango: acceso al array
> Argumentos: ( [ 1] = Tipo: A Valor: [ 2] = Tipo: N Valor: 4)
>
>
> Ademas de aparecer un LogDebug que antes no salía con este contenido
>
> #1: XAILER: TMemDataSet:'aData' parameter empty with no structure defined.
> :lReadOnly set to TRUE.
> #2: XAILER: TMemDataSet:'aData' parameter empty with no structure defined.
> :lReadOnly set to TRUE.
> #3: XAILER: TMemDataSet:'aData' parameter empty with no structure defined.
> :lReadOnly set to TRUE.
> #4: XAILER: TMemDataSet:'aData' parameter empty with no structure defined.
> :lReadOnly set to TRUE.
>
> Gracias.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Problemas con la versión 1.5

Mensaje por Bingen Ugaldebere »

Gracias Ignacio, lógicamente es por que el array está vací­o y debe de
estarlo al dar de alta el registro de usuario al que luego se le añaden
los elementos del MemDataSet correspondientes.
Probando a añadir una lí­nea vací­a al array si funciona pero claro se ve
la lí­nea vací­a y no queda muy "bonito"
> Los mensajes de logdebug que aparacen son precisamente cuando se llama a
> TMemDataset:Open() SIN ESPECIFICAR EL PRIMER PARAMETRO, ES DECIR, LA MATRIZ,
> que no es lo que muestras precisamente.
La matriz está puesta como primer parámetro, solo que está vací­a, de
esto ya hablamos con la versión 1.4 y así­ lo tení­a puesto y así­ me andaba.
Seguiré investigando.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9458
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problemas con la versión 1.5

Mensaje por ignacio »

Bingen,
Observa que el mensaje sólo sale cuando además el Dataset no tiene ni idea
de la estructura de los datos, es decir, no le has indicado la estructura,
sin embargo, observo que tu si se la pasas. En cualquier caso es un mensaje
de aviso que sólo se ve en tiempo de diseño a través del IDE. Si ejecutas el
programa desde fuera del IDE no verás ningún mensaje.
Un saludo,
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:469b18de$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias Ignacio, lógicamente es por que el array está vacío y debe de
> estarlo al dar de alta el registro de usuario al que luego se le añaden
> los elementos del MemDataSet correspondientes.
>
> Probando a añadir una línea vacía al array si funciona pero claro se ve la
> línea vacía y no queda muy "bonito"
>
>> Los mensajes de logdebug que aparacen son precisamente cuando se llama a
>> TMemDataset:Open() SIN ESPECIFICAR EL PRIMER PARAMETRO, ES DECIR, LA
>> MATRIZ, que no es lo que muestras precisamente.
>
> La matriz está puesta como primer parámetro, solo que está vacía, de esto
> ya hablamos con la versión 1.4 y así lo tenía puesto y así me andaba.
>
> Seguiré investigando.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Problemas con la versión 1.5

Mensaje por Bingen Ugaldebere »

> sin embargo, observo que tu si se la pasas. En cualquier caso es un mensaje
> de aviso que sólo se ve en tiempo de diseño a través del IDE. Si ejecutas el
> programa desde fuera del IDE no verás ningún mensaje.
Si que se la paso y en ejecución sin IDE no veo el mensaje, pero este no
es el problema sino que en ejecución si el array no tiene datos no puedo
añadir al MemDataSet mediante {|| ::oDbBrowse1:Append()}, el cual no me
hace ni caso y con la versión 1.4 funcionaba.
Gracias.
Responder