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.

Problema con TDBCombobox

Foro de Xailer profesional en español
Responder
new_indika
Mensajes: 32
Registrado: Jue Oct 16, 2008 12:59 pm

Problema con TDBCombobox

Mensaje 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.
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Problema con TDBCombobox

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
new_indika
Mensajes: 32
Registrado: Jue Oct 16, 2008 12:59 pm

Problema con TDBCombobox

Mensaje 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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Problema con TDBCombobox

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder