Página 1 de 1

Problema con TDBCombobox

Publicado: Mié Dic 03, 2008 3:07 pm
por new_indika
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.
--

Problema con TDBCombobox

Publicado: Jue Dic 04, 2008 11:24 am
por jfgimenez
Á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

Problema con TDBCombobox

Publicado: Jue Dic 04, 2008 11:32 am
por new_indika
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.

Problema con TDBCombobox

Publicado: Jue Dic 04, 2008 5:54 pm
por jfgimenez
Á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