Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema con boolean/integers = false (https://www.clubdelphi.com/foros/showthread.php?t=39860)

juanpe 31-01-2007 19:04:54

Problema con boolean/integers = false
 
Buenas tardes y gracias de antemano por vuestro tiempo.
Mi problema es el siguiente:

Trabajo con Interbase 7.5 y tengo un campo booleano, el cual todos sus registros estan a null.

Si hago una select de aquellos registros cuyo dicho campo sea = false, la select es = 0, con true ocurre lo mismo.

Pues bien, cuando estoy rerriendo los campos de la select con la instruccion
query.fiedlbyname('nombredelcampo').as... string,integer... etc, todo ok hasta dar con el campo booleano, que me devuelve false.

Es decir interpreta que:
if query.fiedlbyname('nombredelcampo').asboolean = false then
....
y no deberia.

Bueno, pues para no perder tiempo y seguir trabajando digo, me creo el campo de tipo integer :D.

jajajaja, iluso de mi, cuando hago la instruccion

if query.fiedlbyname('nombredelcampo').asinteger = 0 then
....
(para registros = a null) me dice que es = false.
¿En que me estoy equivicando?

Gracias a todos. Perdon por el tocho y espero que me hayais entendido.

luisgutierrezb 31-01-2007 22:18:22

pues porque primero debes validar que no sea null, por ejemplo

Código Delphi [-]
if not query.fieldbyname('campo').isnull then // si no es null
  if query.fieldbyname('campo').asboolean then //ahora si, si tiene un dato asignado revisamos si es verdadero o falso

juanpe 01-02-2007 00:11:27

Muchas gracias luisgutierrezb, lo que pasa que yo sobreentendia que al tener valor ya implica que sea distinto de null ;) .

Mañana lo pruebo y te cuento.

Gracias.

juanpe 02-02-2007 10:51:40

Probado y funcionando ;).

Muchas gracias.

rastafarey 12-02-2007 18:22:14

Resp
 
Creo que no bebes permitir a un campo boolena contenr valores nulos por qu ete va a cuasar dolores de cabezas que no lo vas poder solucionar jamas y es booleano es por es cierto o flaso (1, 0) entonces colocae valores.

por que veo ilogico un valor voleano qu eva atenr un valor desconocido(nulo) no se tu pero eso me parece una locura.

Lepe 13-02-2007 11:51:14

El valor null, ¿acaso no corresponde con el estado "Grayed" del TDBCheckBox?

Si el checkbox (que en definitiva usa un estado Boolean) tiene el valor indeterminado, no veo por qué no usarlo.

Todo dependerá del concepto a representar:
- "Factura Impresa" posibles valores TRUE / FALSE
- "Factura Recibida" posibles valores TRUE / FALSE / NO SE SABE (El cartero la trajo, pero está en el cajón, pendiente de ponerle el sello de entrada en la empresa).

En el último caso, puede ser interesante pedir un listado de todas las facturas que se han recibido, pero no tienen el sello de entrada en la empresa.... Los ayuntamientos y organismos oficiales seguro que usan mucho ese "estado" :D :D :D

Saludos

rastafarey 15-02-2007 18:39:03

Cita:

Empezado por Lepe
El valor null, ¿acaso no corresponde con el estado "Grayed" del TDBCheckBox?

Si el checkbox (que en definitiva usa un estado Boolean) tiene el valor indeterminado, no veo por qué no usarlo.

De aqui radica algunos errores que cometemos a la hora de diseñar una base de datos que te interesa a ti el estado del chebox para diseñar la base de datos enfocate en la base de datos y luego te enfocas en la parte visual.

Lo del che box no es mas que una propiedad que si quieres sobrescribes los metodos que la manipulan y haces que haga lo que tu quieras. Pero ese no es el caso.

No mezclez chicha con limonada.

O van a aplicar la famosa idea de microsof meter el manejador de ventanas dentro del kernel del sistema operativo.

Lepe 16-02-2007 11:16:15

No estoy pensando en el CheckBox para diseñar la BBDD.

Al diseñar la BBDD necesito 3 estados para un campo: true / false / no sabe no contesta.

¿Por qué no usar estos valores en la BBDD?:
- 0
- 1
- NULL (como no sabe no contesta).

¿acaso no es lo mismo que usar los valores 0, 1, 2 para representar esos 3 estados?

Lo que no llego a comprender es esta frase:
Cita:

Empezado por rastafarey
por que veo ilogico un valor voleano qu eva atenr un valor desconocido(nulo) no se tu pero eso me parece una locura.

¿por qué?, ¿acaso no está implementado el valor NULL, como precisamente, un valor desconocido? ¿Por qué tengo que inventar otro valor para representar ese mismo concepto?.

Saludos

rastafarey 16-02-2007 18:39:47

Resp
 
Te aconcejo usar el caso de 0, 1, 2 y no el caso cuandos sea nulo ya que nulo no es nada(desconocido) y si debes tener mas cuidado a la hora de trabajar


La franja horaria es GMT +2. Ahora son las 06:32:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi