Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.679
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Supongo que con "when" ocurrirá igual que con "coalesce"

Código Delphi [-]
case when (expr1 is null) then expr2 else expr1 end
Responder Con Cita
  #2  
Antiguo 14-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
El problema no es When o Coalesce, el problema es cuando hablamos de Parámetros ....

En tu consulta no has utilizado los campos como parámetros que se pasan de una consulta a otra.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 14-06-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.679
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Perdón, no había leído el anterior mensaje explicándolo
Responder Con Cita
  #4  
Antiguo 14-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

No se ustedes, pero se me hace raro una consulta que diga:

Código SQL [-]
select campo1 from tabla1
where NULL is NULL

que es lo que en realidad está haciendo [b]gluglu[/u]. Lo que siempre se hace es algo como:

Código SQL [-]
select campo1 from tabla1
where campo1 = arametro

Yo creo que deberías verificar de nuevo lo que estás tratando de realizar y modificarlo de acuerdo a.



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #5  
Antiguo 14-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
No creo oportuno poner la consulta completa, ya que se trata de un SP que crea una tabla temporal y después hay que sacar datos de otras varias tablas.

La pregunta inicial podría haber sido de otra manera (es decir, el título del hilo). Pero yo pensaba que el problema venía de la función Coalesce, y por eso el título que puse al hilo.

El tema, creo yo, es tan simple como poder verificar si un parámetro que se pasa a otro DataSet es null o no, partiendo de la base, claro está, de que dicho valor puede ser null.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 14-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
... añado ...

Creo que anteriormente ya lo puse. No sólo se trata de comprobar si el parámetro es Null o no, sino que dependiendo de si es Null o no, existe un 'and' después.

Esta es la consulta (muy cortita) :
Código SQL [-]
Select COMMENTS
from BOOKINGS_BLOB
where Cast(:BOOKINGNO as BigInt) is not Null
and BOOKINGNO = :BOOKINGNO
and TYPENO = 4
 
union
 
Select COMMENTS
from LOCK_OBJECTS_BLOB
where Cast(:BOOKINGNO as BigInt) is Null
and INTERNALNO = :INTERNALNO

Después de crear mediante un SP una tabla temporal, utilizo este Select en un informe de FastReport para dependiendo de si el valor de BOOKINGNO del DataSet Maestro es Null o no, busco el Comentario (COMMENTS) que es del tipo Blob en una u otra tabla adicional, ya que el registro de la tabla temporal puede ser una Reserva de una Habitación o un Bloqueo de una Habitación, pero en el listado se muestra el Número de Habitación en cualquier caso, y dependiendo de ello, el comentario que aparece en el informe de Fast Report será el comentario de la Reserva o el comentario asociado al Bloqueo.

En la tabla temporal tengo dos campos (además de otros muchos), que me sirven de referencia 'Maestro-Detalle', tanto BOOKINGNO como INTERNALNO.

La Banda Detalle del Fast Report quiero que sea única, como ya dije, dependiendo de si es una reserva o un bloqueo de un número de habitación concreto, quiero que aparezca el comentario bien de la reserva, bien del bloqueo.

Espero que este comentario adicional sirve de aclaración para lo que pretendía conseguir.

Gracias de nuevo a todos !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #7  
Antiguo 14-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Si el valor que estás pasando al DataSet viene de otro DataSet, entonces puedes verificarlo mediante un if...then:

Código Delphi [-]
if DataSet1.FieldByName('campox').IsNull then
  // Hacer lo que sea que se tenga que hacer cuando el valor es nulo...

A lo que voy es que hacer algo como :CLAVE is NULL como condición en una consulta no tiene mucho sentido (al menos de la forma como estás planteando tu ejemplo), esto claro, a mi forma de ver.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #8  
Antiguo 14-06-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 23
gluglu Va por buen camino
Cita:
Empezado por maeyanes Ver Mensaje
Si el valor que estás pasando al DataSet viene de otro DataSet, entonces puedes verificarlo mediante un if...then:
Tu lo has dicho, el valor que estoy pasando al DataSet. Ese es el punto crucial de todo este hilo. No voy a hacer una consulta en Código Delphi, sino en Código SQL dentro de otro DataSet ('Detalle') diferente.

El código que pones es código Delphi y lo tengo que ejecutar en mi aplicación. Pero mi problema surge al querer enlazar mediante 'Maestro-Detalle' dos DataSets diferentes, en este caso en tiempo de diseño.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #9  
Antiguo 14-06-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por maeyanes Ver Mensaje
A lo que voy es que hacer algo como :CLAVE is NULL como condición en una consulta no tiene mucho sentido (al menos de la forma como estás planteando tu ejemplo), esto claro, a mi forma de ver.
En realidad es muy común, pero solo ha comentado una parte del filtro que debe usar realmente.

Se utiliza muchísimo para consultas del tipo :

select *
from CLIENTES
where (:APELLIDOS is null or APELLIDOS = :APELLIDOS) and (:TELEFONO is null or TELEFONO = :TELEFONO)

Es decir, diseñamos una consulta a un tabla por varios posibles parámetros, pero podemos dejar el parámetro a Null si en ese momento el usuario no quiere filtrar por él (como cuando tienes una pantalla con varias opciones de búsqueda, y el usuario solo rellena una parte).

Creo haber leído que en el último Firebird 2.5 el motor de Firebird ya es capaz de reconocer el tipo de los parámetros en esta estructura, pero en las versiones anteriores es cuando hay que hacer un CAST con el tipo.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 14-06-2011 a las 17:14:37.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Método tem parametro do tipo sysint Paulao Varios 2 16-09-2010 21:20:15
SQL CASE y COALESCE mjjj SQL 1 17-12-2008 16:37:52
tipo de dato para pasar parametro a un store procedure Bracus SQL 6 25-03-2008 13:38:13
Parametro a todos los objetos de un tipo amadis OOP 1 06-10-2007 17:46:47
Parametro Tipo BIGINT Stored Procedure hibero Firebird e Interbase 5 13-04-2004 19:49:31


La franja horaria es GMT +2. Ahora son las 08:28:20.


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