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.

tMemDataSet y un nuevo error en m

Foro de Xailer profesional en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

tMemDataSet y un nuevo error en m

Mensaje 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
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

tMemDataSet y un nuevo error en m

Mensaje 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
>
>
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

tMemDataSet y un nuevo error en m

Mensaje 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
>
>
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

tMemDataSet y un nuevo error en m

Mensaje 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
>>
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

tMemDataSet y un nuevo error en m

Mensaje 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
>>>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

tMemDataSet y un nuevo error en m

Mensaje 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
>>
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

tMemDataSet y un nuevo error en m

Mensaje 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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

tMemDataSet y un nuevo error en m

Mensaje 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
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

tMemDataSet y un nuevo error en m

Mensaje 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
>
>
Responder