FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Consulta con valores null
Saludos.
Trabajo con D2007 y FB 2.5. Tengo la siguiente consulta:
En la tabla Apuntes, en el campo Familia hay almacenados valores null. DesdeFamilia y HastaFamilia son componentes Edit. Si dejo DesdeFamilia en blanco (no entro ningún valor) La consulta anterior me devuelve todos los valores almacenados menos los null. ¿Cual sería la consulta correcta para que me diese todos los registros encontrados dentro del rango DesdeFamilia - HastaFamilia? Gracias por su ayuda. |
#2
|
||||
|
||||
null
tal vez si intentas con un if
if (desdefamilia.text='') then beginDMList.QApuntes.Close;DMList.QApuntes.SQL.Text := 'Select * From Apuntes Where (familia = null)';DMList.QApuntes.Open; end else begin DMList.QApuntes.Close;DMList.QApuntes.SQL.Text := 'Select * From Apuntes Where (familia >= '+ QuotedStr(DesdeFamilia.Text)+') and (familia <= '+ QuotedStr(HastaFamilia.Text)+')';DMList.QApuntes.Open; end; en mysql uso Familia is null no se si sea igual en fb 2.5 o no se si en fb2.5 sea correcto poner familia=null |
#3
|
||||
|
||||
Por favor, no olvidar las etiquetas de código, ejemplo:
.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
disculpas
Tienes Razon casimiro, como se me fue a olvidar jejejeje
que tal vez si intentas con un if
|
#5
|
|||
|
|||
Tal vez no entiendo muy bien lo que necesitas en caso de que no existan valores en los TEdit. Por lo que veo la consulta expuesta por el compañero kapcomx muestra o los null o los del rango de acuerdo al contenido del Edit si esta vacio o no. Si lo que deseas es que muestre en conjunto el rango + los null deberias agregar a la consulta
y si... la forma es igual que en mysql (is null).- Saludos |
#6
|
||||
|
||||
Una cosa importante a tener en cuenta:
NULL es NULL. NULL es un valor indefinido según el estándar SQL. Al ser indefinido, NULL no es ni mayor ni menor a `''´ ni tampoco es igual. NULL es un valor único que solo es similar a NULL. Si lo que quieres es devolver opcionalmente los valores NULL tendrás que indicarlo en la consulta. Por ejemplo:
Ten en cuenta que el operador indicado para trabajar con NULL es `is´. NULL es tan especial que los demás operadores no son recomendados para trabar con él. Saludos! |
#7
|
||||
|
||||
Hola Luís.
Otra opción:
Saludos. Edito: No había visto el mensaje de Chris, así que corrijo "Otra opción" por 'Una opción parecida' ...
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 09-03-2012 a las 17:41:05. |
#8
|
||||
|
||||
Saludos.
Ante todo dar las gracias a todos los que habéis respondido. Chris tiene toda la razón, Null es Null y el único operador para trabajar con él, es IS. He probado todas las opciones que me habéis recomendado y no me funcionaba con yo quería. O no me devolvía ningún registro o me devolvía todos menos los null. Así que con la idea de kapcomx y del resto de compañeros, he podido solucionar el problema.
Ahora ya me devuelve los registros dentro del rago y si "Desdefamilia" está vacío me devuelve los null. Espero que a otros le sirva de ayuda. Nuevamente gracias a todos por vuestra ayuda. |
#9
|
||||
|
||||
¿Y no puedes poner todos los campos null a cadena vacía?
Se acabó el problema.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Esto podría funcionar.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#11
|
||||
|
||||
Cita:
Fue lo primero que intenté. En el OnNewRecord del Dataset intenté con ApuntesFamila.asstring := '', también ApuntesFamilia.asstring := ' ' pero si me iba al IBExpert para comprobar los datos, allí estaba ese lindo null . También lo intenté en el BeforePost con pero de nada servia. No he echo lo que me recomiendas, lo intentaré a ver que tal. RONPABLO hoy no me da tiempo para probarlo, en cuanto lo haga te digo si funciona. Un saludo para todos. |
#12
|
||||
|
||||
Cita:
De todas formas, si quieres grabar algo tendrás que hacerlo en la BD, no dando un valor a un componente, o sea:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
||||
|
||||
Hola Casimiro.
Te entendí perfectamente y creo que es la mejor solución. Igualmente te comento que "ApuntesFamilia" es un campo persistente por eso le daba el valor '' si era null. Pero no funcionaba. Algo debía de estar trastocado porque me iba al IBExpert y le ponía manualmente un espacio en blanco al campo null y me lo volvía a dejar en null. Ahora parece que ya funciona. Esto de los valores null tiene su tela. Un saludo para todos y gracias. |
#14
|
||||
|
||||
Hola.
Utiliza la función COALESCE de Firebird, con la que le indicas que si el campo es nulo, entonces considere otro valor (pasado como segundo parámetro). Es decir :
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#15
|
||||
|
||||
Cita:
__________________
mas confundido que Garavito el día del Niño. |
#16
|
||||
|
||||
Hola.
Cita:
Pero sí, tienes razón en que algunas ocasiones (al igual que con cualquier otra consulta donde no añadas índices para su optimización) puede verse muy afectado el rendimiento. Y como siempre, la solución es simplemente añadir un índice para que el motor pueda optimizar adecuadamente esa consulta, en este caso sería un índice sobre una expresión : CREATE INDEX APUNTES_FAMILIA ON APUNTES COMPUTED BY (COALESCE(FAMILIA, ''));
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda con valores no null en FIREBIRD 2.1 | Jose Roman | Firebird e Interbase | 11 | 14-01-2009 14:44:36 |
Consulta en campos Null| | pmtzg | Conexión con bases de datos | 2 | 26-02-2008 02:38:51 |
Duda sobre valores null | Inmi | Conexión con bases de datos | 2 | 24-09-2007 18:21:27 |
Problema con Valores Null | crc | SQL | 10 | 20-09-2007 17:53:44 |
Consulta con Null | T-man | Firebird e Interbase | 3 | 22-12-2004 23:30:56 |
|