Página 1 de 1

tMemDataSet y un nuevo error en m

Publicado: Jue May 17, 2007 7:07 pm
por jose.luis
Hola,
Por lo visto ahora al hacer un open de un memdataset si aData está vacío
entonces arroja un error de runtime.
¿Como puedo indicarle la estructura al memdataset sin añadir ningún registro
y sin tener como referencia ningún dataset o dbf?
Saludos y gracias,
José Luis Capel

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 8:52 am
por Bingen Ugaldebere
Hola, no solo ahora sino antes también. Si tiene datos no hay problema
toma los tipos y tamaños del primer registro que pilla, pero si no hay
registros no va.
Entonces tienes que definirlos tu, te dejo un ejemplo con 2 campos, pero
como sean por ejemplo 25 campos te va a dar un ataque de nervios y no
digo nada si luego vas y cambias un campo en el DBF de tipo o tamaño lo
que te puede dar si no vas a cambiar la definición de estos MemDataSet,
vamos que opino que es una puñeta por no decir algo peor.....
// Cargar browse de permisos de conducir
METHOD MemCarnetCreate( oSender ) CLASS TFormEditUsuarios
oSender:GetStructFrom ({{"Tipo","C",3,0},{"Anio","N",4,0}})
::oDbfCarnet:SetScope(::cIDUsuario,,.T.)
oSender:Open(::oDbfCarnet:SaveToArray({"Tipo","Anio"}),{ "Tipo","Anio"})
RETURN Nil
Salu2.
José Luis Capel - Aicom escribió:
> Hola,
>
> Por lo visto ahora al hacer un open de un memdataset si aData está vací­o
> entonces arroja un error de runtime.
>
> ¿Como puedo indicarle la estructura al memdataset sin añadir ningún registro
> y sin tener como referencia ningún dataset o dbf?
>
> Saludos y gracias,
> José Luis Capel
>
>

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 8:55 am
por Bingen Ugaldebere
Por cierto si a alguien se le ocurre algo mejor.... por favor que me
lo cuente que tengo docenas de estos memdataset.
Gracias a todos.
José Luis Capel - Aicom escribió:
> Hola,
>
> Por lo visto ahora al hacer un open de un memdataset si aData está vací­o
> entonces arroja un error de runtime.
>
> ¿Como puedo indicarle la estructura al memdataset sin añadir ningún registro
> y sin tener como referencia ningún dataset o dbf?
>
> Saludos y gracias,
> José Luis Capel
>
>

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 8:57 am
por jose.luis
Bingen,
Gracias!
Solo un apunte. En versiones anteriores a la 1.4 no aparecía este error.
Saludos,
José Luis Capel
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:[email=464d4d4b@ozsrv2.ozlan.local...]464d4d4b@ozsrv2.ozlan.local...[/email]
> Hola, no solo ahora sino antes también. Si tiene datos no hay problema
> toma los tipos y tamaños del primer registro que pilla, pero si no hay
> registros no va.
>
> Entonces tienes que definirlos tu, te dejo un ejemplo con 2 campos, pero
> como sean por ejemplo 25 campos te va a dar un ataque de nervios y no digo
> nada si luego vas y cambias un campo en el DBF de tipo o tamaño lo que te
> puede dar si no vas a cambiar la definición de estos MemDataSet, vamos que
> opino que es una puñeta por no decir algo peor.....
>
> // Cargar browse de permisos de conducir
> METHOD MemCarnetCreate( oSender ) CLASS TFormEditUsuarios
> oSender:GetStructFrom ({{"Tipo","C",3,0},{"Anio","N",4,0}})
> ::oDbfCarnet:SetScope(::cIDUsuario,,.T.)
> oSender:Open(::oDbfCarnet:SaveToArray({"Tipo","Anio"}),{ "Tipo","Anio"})
> RETURN Nil
>
>
> Salu2.
>
>
> José Luis Capel - Aicom escribió:
>> Hola,
>>
>> Por lo visto ahora al hacer un open de un memdataset si aData está vacío
>> entonces arroja un error de runtime.
>>
>> ¿Como puedo indicarle la estructura al memdataset sin añadir ningún
>> registro y sin tener como referencia ningún dataset o dbf?
>>
>> Saludos y gracias,
>> José Luis Capel
>>

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 9:07 am
por Bingen Ugaldebere
Es cierto en veriones anteriores no daba un error, simplemente no sacaba
nada y al intentar meter un elemento nuevo al memdataset no funcionaba
por que no tenia estructura definida.
Creo que con lo que te he dicho si funcionará en 1.4 también, aun no me
ha dado tiempo de ponerlo.
Salu2.
José Luis Capel - Aicom escribió:
> Bingen,
>
> Gracias!
>
> Solo un apunte. En versiones anteriores a la 1.4 no aparecí­a este error.
>
> Saludos,
> José Luis Capel
>
> "Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
> news:[email=464d4d4b@ozsrv2.ozlan.local...]464d4d4b@ozsrv2.ozlan.local...[/email]
>> Hola, no solo ahora sino antes también. Si tiene datos no hay problema
>> toma los tipos y tamaños del primer registro que pilla, pero si no hay
>> registros no va.
>>
>> Entonces tienes que definirlos tu, te dejo un ejemplo con 2 campos, pero
>> como sean por ejemplo 25 campos te va a dar un ataque de nervios y no digo
>> nada si luego vas y cambias un campo en el DBF de tipo o tamaño lo que te
>> puede dar si no vas a cambiar la definición de estos MemDataSet, vamos que
>> opino que es una puñeta por no decir algo peor.....
>>
>> // Cargar browse de permisos de conducir
>> METHOD MemCarnetCreate( oSender ) CLASS TFormEditUsuarios
>> oSender:GetStructFrom ({{"Tipo","C",3,0},{"Anio","N",4,0}})
>> ::oDbfCarnet:SetScope(::cIDUsuario,,.T.)
>> oSender:Open(::oDbfCarnet:SaveToArray({"Tipo","Anio"}),{ "Tipo","Anio"})
>> RETURN Nil
>>
>>
>> Salu2.
>>
>>
>> José Luis Capel - Aicom escribió:
>>> Hola,
>>>
>>> Por lo visto ahora al hacer un open de un memdataset si aData está vací­o
>>> entonces arroja un error de runtime.
>>>
>>> ¿Como puedo indicarle la estructura al memdataset sin añadir ningún
>>> registro y sin tener como referencia ningún dataset o dbf?
>>>
>>> Saludos y gracias,
>>> José Luis Capel
>>>
>

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 9:33 am
por ignacio
Bingen,
> vamos que opino que es una puñeta por no decir algo peor.....
Opino que os estais volviendo perezosos, ni más ni menos. ;-)
Ya me contareis como pretendeis que Xailer adivine el tipo de datos que
tiene que tener cada columna del browse si no le dais esa información de
forma alguna.
En su día ya te comente dos soluciones:
1) Pasar un array con elementos que luego los borras en su totalidad
2) Utilizar el método TArrayBrowse:GetStructFrom( aDbfStruct|oDataset )
En cualquier caso. Ahora tenéis los fuentes y podéis modificarlos en lo que
queráis.
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:[email=464d4d4b@ozsrv2.ozlan.local...]464d4d4b@ozsrv2.ozlan.local...[/email]
> Hola, no solo ahora sino antes también. Si tiene datos no hay problema
> toma los tipos y tamaños del primer registro que pilla, pero si no hay
> registros no va.
>
> Entonces tienes que definirlos tu, te dejo un ejemplo con 2 campos, pero
> como sean por ejemplo 25 campos te va a dar un ataque de nervios y no digo
> nada si luego vas y cambias un campo en el DBF de tipo o tamaño lo que te
> puede dar si no vas a cambiar la definición de estos MemDataSet, vamos que
> opino que es una puñeta por no decir algo peor.....
>
> // Cargar browse de permisos de conducir
> METHOD MemCarnetCreate( oSender ) CLASS TFormEditUsuarios
> oSender:GetStructFrom ({{"Tipo","C",3,0},{"Anio","N",4,0}})
> ::oDbfCarnet:SetScope(::cIDUsuario,,.T.)
> oSender:Open(::oDbfCarnet:SaveToArray({"Tipo","Anio"}),{ "Tipo","Anio"})
> RETURN Nil
>
>
> Salu2.
>
>
> José Luis Capel - Aicom escribió:
>> Hola,
>>
>> Por lo visto ahora al hacer un open de un memdataset si aData está vacío
>> entonces arroja un error de runtime.
>>
>> ¿Como puedo indicarle la estructura al memdataset sin añadir ningún
>> registro y sin tener como referencia ningún dataset o dbf?
>>
>> Saludos y gracias,
>> José Luis Capel
>>

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 10:19 am
por Bingen Ugaldebere
> Opino que os estais volviendo perezosos, ni más ni menos. ;-)
Que razón que tienes Ignacio creemos que tiene que estar todo hecho, nos
habéis hecho tan fácil lo que antes nos parecí­a imposible que ahora
cualquier cosa nos parece complicada por que tenemos que escribir 2
lineas ;-)
> 1) Pasar un array con elementos que luego los borras en su totalidad
Normalmente ya has escopeado al Create del DbfDataSet y ya viene vací­o
el scope.
> 2) Utilizar el método TArrayBrowse:GetStructFrom( aDbfStruct|oDataset )
Si pero no usas todos los campos en el Mem, podrí­as estar ocultándolos
luego pero...
> En cualquier caso. Ahora tenéis los fuentes y podéis modificarlos en lo que
> queráis.
Pues si pero... aprovecho para preguntar.
Me dispongo a modificar la clase tDbfDataSet, la meto en la LIB y
lógicamente en la próxima revisión de Xailer me la cambiais. Cual serí­a
la mejor manera de hacer esto? Por ejemplo si creo una Nueva clase que
herede de esta para hacer los cambios allí­ podré verla en la barra de
componentes en futuras versiones?
También aprovecho para felicitar al equipo Xailer la puesta de largo de
esta preciosa criatura que cada dí­a me tiene mas enamorado. Larga vida
al Xailer.
Salu2 y gracias

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 10:42 am
por ignacio
Bingen,
> Si pero no usas todos los campos en el Mem, podrías estar ocultándolos
> luego pero...
Haz un Adel() sobre los campos que no te interesan, y sino, construye tu
mismo la matriz (que no lleva tanto trabajo)
> Me dispongo a modificar la clase tDbfDataSet, la meto en la LIB y
> lógicamente en la próxima revisión de Xailer me la cambiais. Cual sería la
> mejor manera de hacer esto? Por ejemplo si creo una Nueva clase que herede
> de esta para hacer los cambios allí podré verla en la barra de componentes
> en futuras versiones?
Te recomiendo que sobrecargas la clase T, y la puuedesneter en Xailer.lib si
quieres, pero lo más sencillo es que lo agreges como módulo en tu proyecto o
te crees tu propia librería personal.
En el futuro se podrán ver en el IDE controles y componentes creados por el
propio usuario, pero no te puedo dar fecha para ello.
>
> También aprovecho para felicitar al equipo Xailer la puesta de largo de
> esta preciosa criatura que cada día me tiene mas enamorado. Larga vida al
> Xailer.
Muchas gracias. Es un gusto leer este tipo de comentarios.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com

tMemDataSet y un nuevo error en m

Publicado: Vie May 18, 2007 4:13 pm
por miguel
Hola Jose Luis
Yo lo hago de esta manera
WITH OBJECT ::oDbfNomiLin //TDbfDataSet
:SetScope( Codigo )
aDatos := :SavetoArray( :FieldNames() )
END WITH
WITH OBJECT ::oMemLin //TMemDataSet
if empty( :aFields)
:getStructFrom( ::oDbfNomiLin )
end
:open( aDatos )
END WITH
Saludos. Miguel A. Torrellas
José Luis Capel - Aicom escribió:
> Hola,
>
> Por lo visto ahora al hacer un open de un memdataset si aData está vací­o
> entonces arroja un error de runtime.
>
> ¿Como puedo indicarle la estructura al memdataset sin añadir ningún registro
> y sin tener como referencia ningún dataset o dbf?
>
> Saludos y gracias,
> José Luis Capel
>
>