He notado que cuando trabajamos con un TDBCombobox y sus propiedades
aItems, aItemsbound, éste no es capaz de "reconocer" un valor numérico
cero y asignarlo correctamente al dataset.
Como seguramente no me habré explicado bien, adjunto un pequeñito
ejemplo que lo demuestra. Un saludo.
P.D. Basta con ejecutar, clicar en editar, asignar 0% al Combo y pinchar
en guardar.
--
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.
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.
Problema con TDBCombobox
-
- Mensajes: 32
- Registrado: Jue Oct 16, 2008 12:59 pm
Problema con TDBCombobox
Ángel,
> He notado que cuando trabajamos con un TDBCombobox y sus propiedades
> aItems, aItemsbound, éste no es capaz de "reconocer" un valor numérico
> cero y asignarlo correctamente al dataset.
>
> Como seguramente no me habré explicado bien, adjunto un pequeñito
> ejemplo que lo demuestra. Un saludo.
>
> P.D. Basta con ejecutar, clicar en editar, asignar 0% al Combo y pinchar
> en guardar.
El problema se produce al volver a cargar el valor 0 en el DBCombobox,
aunque en realidad se está guardando dicho valor en el dataset
correctamente.
Ya lo hemos corregido, y estará disponible cuanto antes. Si te corre mucha
prisa puedes corregirlo tú mismo de la siguiente forma: en el fuente de la
clase TDBCombobox, al principio del método SetValue(), pone:
IF ::nStyle == csDROPDOWNLIST
DO CASE
CASE Empty( xValue )
...
hay que cambiarlo por:
IF ::nStyle == csDROPDOWNLIST
DO CASE
CASE xValue == Nil // <- esta es la linea que cambia
...
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> He notado que cuando trabajamos con un TDBCombobox y sus propiedades
> aItems, aItemsbound, éste no es capaz de "reconocer" un valor numérico
> cero y asignarlo correctamente al dataset.
>
> Como seguramente no me habré explicado bien, adjunto un pequeñito
> ejemplo que lo demuestra. Un saludo.
>
> P.D. Basta con ejecutar, clicar en editar, asignar 0% al Combo y pinchar
> en guardar.
El problema se produce al volver a cargar el valor 0 en el DBCombobox,
aunque en realidad se está guardando dicho valor en el dataset
correctamente.
Ya lo hemos corregido, y estará disponible cuanto antes. Si te corre mucha
prisa puedes corregirlo tú mismo de la siguiente forma: en el fuente de la
clase TDBCombobox, al principio del método SetValue(), pone:
IF ::nStyle == csDROPDOWNLIST
DO CASE
CASE Empty( xValue )
...
hay que cambiarlo por:
IF ::nStyle == csDROPDOWNLIST
DO CASE
CASE xValue == Nil // <- esta es la linea que cambia
...
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
-
- Mensajes: 32
- Registrado: Jue Oct 16, 2008 12:59 pm
Problema con TDBCombobox
José,
Hemos visto el problema al mismo tiempo, lastima que me ha dado varios
quebraderos de cabeza desde ayer. De todas maneras, no veo que el
planteamiento del método esté mal, sino tal y como comenté en el
anterior post, el error viene de xHarbour al "considerar" que un valor
cero numérico para Empty() es .T., cuando creo que no debería de ser así.
Gracias de todas maneras, saludos.
Hemos visto el problema al mismo tiempo, lastima que me ha dado varios
quebraderos de cabeza desde ayer. De todas maneras, no veo que el
planteamiento del método esté mal, sino tal y como comenté en el
anterior post, el error viene de xHarbour al "considerar" que un valor
cero numérico para Empty() es .T., cuando creo que no debería de ser así.
Gracias de todas maneras, saludos.
Problema con TDBCombobox
Ángel,
> Hemos visto el problema al mismo tiempo, lastima que me ha dado varios
> quebraderos de cabeza desde ayer. De todas maneras, no veo que el
> planteamiento del método esté mal, sino tal y como comenté en el anterior
> post, el error viene de xHarbour al "considerar" que un valor cero
> numérico para Empty() es .T., cuando creo que no debería de ser así.
Bueno, realmente y desde los tiempos de Clipper, la función Empty() devuelve
..T. cuando el argumento tiene los siguientes tipos/valores:
- cadena: una cadena vacía, es decir "", pero también cuando la cadena
contiene solamente espacios
- número: el valor 0 (cero)
- lógico: el valor .F.
- fecha: el valor CTOD("")
- sin tipo: el valor NIL
Y realmente es muy útil que se comporte así, aunque a veces pueda jugar
malas pasadas como ha sido el caso.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
> Hemos visto el problema al mismo tiempo, lastima que me ha dado varios
> quebraderos de cabeza desde ayer. De todas maneras, no veo que el
> planteamiento del método esté mal, sino tal y como comenté en el anterior
> post, el error viene de xHarbour al "considerar" que un valor cero
> numérico para Empty() es .T., cuando creo que no debería de ser así.
Bueno, realmente y desde los tiempos de Clipper, la función Empty() devuelve
..T. cuando el argumento tiene los siguientes tipos/valores:
- cadena: una cadena vacía, es decir "", pero también cuando la cadena
contiene solamente espacios
- número: el valor 0 (cero)
- lógico: el valor .F.
- fecha: el valor CTOD("")
- sin tipo: el valor NIL
Y realmente es muy útil que se comporte así, aunque a veces pueda jugar
malas pasadas como ha sido el caso.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info