Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-01-2009
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Unhappy Ayuda con valores no null en FIREBIRD 2.1

Hola a todos, tengo una base de datos de unos estudiantes con los siguientes campos:
CODIGO CHAR(6) y NOMBRE VARCHAR(30)
Cuando hago una consulta con el codigo por ejemplo '001423' da el resultado deseado, pero si ingreso un codigo que no esta en la base de datos no da null, asi que esto me presenta problemas pues utilice un select asi:
SELECT COALESCE(NOMBRE,'NO REGISTRADO') FROM ESTUDIANTESWHERE CODIGO = :C
y necesito que me de indique la base de datos que el registro no existe, que debo hacer...
Gracias
Responder Con Cita
  #2  
Antiguo 13-01-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Jose Roman, no te sirve preguntar por IsEmpty de tu dataSet, IsEmpty te devuelve True si no ha encontrado ningún resultado. Con la consulta que pones si no encuentra un registro con el codigo "c", no va devolver resultados, el Coalesce te va funcionar si ese codigo existe y el nombre sea Null.

Código Delphi [-]
 ......
 Query.Sql.Text := 'SELECT COALESCE(NOMBRE,'NO REGISTRADO') FROM ESTUDIANTESWHERE CODIGO = :C';
 Query.Open;
 
 if Query.IsEmpty then
  Showmessage('El estudiante no existe.');

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 13-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Pero es que en teoria debe funcionarte eso que estas haciendo sin problema, acabo de hacer una prueba similar a la que comentas y me ha funcionado bien... Si estas haciendo esto en un procedure sería inetresante ver todo el procedure por si encontramos algo fuera de lo común.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 13-01-2009
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Pero en que version de FIREBIRD realizaste la prueba?
Responder Con Cita
  #5  
Antiguo 13-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Ahhhh, ya comprendo, es que claro, como la consulta no te arroja ningun dato, entonces coalesce no tiene registros para comparar si este campo es NULL o no, por lo que no tendra NULL un campo al no tener ningún registro.

Si es un procedimiento almacenado en el que estas ejecutando dicho coalesce, podrias aplicarlo a la variable donde cae ese valor, mas no en la consulta en si. (Lo dicho, muestra todo el procedimiento para ver que podemos hacer).

Cita:
Empezado por Jose Roman
Pero en que version de FIREBIRD realizaste la prueba?
Realmente la hice con Firebird 2.1, pero como ya es notable, habia hecho la prueba con una consulta que si me devolvia registros y uno de sus campos tenia valores NULL y no. Por lo que estaba haciendo la prueba de forma distinta a lo que tu estas haciendo. Muestranos el procedimiento almacenado y ya habra alguna buena solución.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 13-01-2009
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Pues te cuento que no lo estoy realizaon a nivel de procedimiento solo a nivel de consulta...., sabes de casualidad alguna manera para que me de ese mensaje, sin tener que utilizar el Dataset
Responder Con Cita
  #7  
Antiguo 13-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Jose Roman Ver Mensaje
Pues te cuento que no lo estoy realizaon a nivel de procedimiento solo a nivel de consulta...., sabes de casualidad alguna manera para que me de ese mensaje, sin tener que utilizar el Dataset
Entonces crea un procedimiento almacenado asi:

Código SQL [-]
CREATE PROCEDURE SP_NOMBRE_EST (
    C varchar(6))
returns (
    NOMBRE varchar(30))
as
begin
  SELECT NOMBRE FROM
  ESTUDIANTES WHERE CODIGO = :C
  INTO :NOMBRE;

  NOMBRE = COALESCE(:NOMBRE,'NO REGISTRADO');
end

El cual podras llamar, asi por ejemplo:

Código SQL [-]
select NOMBRE from SP_NOMBRE_EST('12356');
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 13-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
¿Porque sera que a uno siempre se le prende el "bombillito" cuando ya ha metido la pata?

En la sola consulta y sin necesidad de ningún procedimiento almacenado, puedes hacerlo tambien, haciendo uso de la función LIST, de la siguiente forma:

Código SQL [-]
select COALESCE(LIST(NOMBRE), 'NO REGISTRADO') from ESTUDIANTES where CODIGO='123456'

Esto, te devolvera "NO REGISTRADO" en caso de que no coincida el codigo con ningún registro y el NOMBRE del estudiante en caso de que si coincida.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 13-01-2009 a las 18:07:19.
Responder Con Cita
  #9  
Antiguo 13-01-2009
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Muchas gracias, definitivamente me falta mucho por explorar en Firebird 2.1.
Responder Con Cita
  #10  
Antiguo 13-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Jose Roman Ver Mensaje
Muchas gracias, definitivamente me falta mucho por explorar en Firebird 2.1.
Acabo de publicar un articulo en mi blog a raiz de este hilo .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #11  
Antiguo 14-01-2009
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 21
pcicom Va por buen camino
ALGO MAS SIMPLE..

Código SQL [-]
select (casE when count(CODIGO)=0 then 'NO REGISTRADO' else 'REGISTRADO' end) from ESTUDIANTES where CODIGO='123456'
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #12  
Antiguo 14-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por pcicom Ver Mensaje
ALGO MAS SIMPLE..
No solo mas simple, si no tambien mas economico y rapido, pero pregunto, ¿Como recuperarias el registro o los registros si existieran?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
Respuesta



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
Guardar null (nolo) en un campo fecha en Firebird cahosoft Conexión con bases de datos 3 19-04-2014 09:54:17
Duda sobre valores null Inmi Conexión con bases de datos 2 24-09-2007 17:21:27
Problema con Valores Null crc SQL 10 20-09-2007 16:53:44
Procedimiento en Firebird con parámetro NULL Val Conexión con bases de datos 4 09-07-2007 08:08:07
Parametros NULL y Firebird Kreyser Firebird e Interbase 1 18-05-2005 17:16:04


La franja horaria es GMT +2. Ahora son las 14:30:51.


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
Copyright 1996-2007 Club Delphi