Página 1 de 1

Problemas con la versión 1.5

Publicado: Vie Jul 13, 2007 7:04 pm
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.

Problemas con la versión 1.5

Publicado: Sab Jul 14, 2007 11:16 am
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.

Problemas con la versión 1.5

Publicado: Lun Jul 16, 2007 9:06 am
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.

Problemas con la versión 1.5

Publicado: Lun Jul 16, 2007 11:12 am
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.

Problemas con la versión 1.5

Publicado: Lun Jul 16, 2007 3:47 pm
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.