Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
"(nombre + ' ' + apellidos)" no funciona

Hola a tod@s,
tengo una consulta:
Código:
SELECT (USU.nombre + ' ' + USU.apellidos) as nombre, USU.extension, 
USU.movilMasa, USU.departamento, 
USU.extMovilMasa,DE.nombre AS departamento 
FROM USUARIO USU,DEPARTAMENTO DE 
WHERE USU.departamento=DE.codigo AND USU.fechaBaja IS NULL
ORDER BY USU.nombre
en la que el campo "nombre", si USU.apellidos esta vacio, no me devuelve nada. Me crea el registro pero ese campo está vacio. ¿A que se debe?

Gracias
Responder Con Cita
  #2  
Antiguo 27-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Podría ser que USU.nombre o USU.apellidos sea nulo.

Nulo concatenado con cualquier cosa es nulo
Nulo (+,-,*,/) cualquier cosa es nulo
Nulo (and,or,not,etc.) cualquier cosa es nulo
Responder Con Cita
  #3  
Antiguo 27-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
Gracias duilioisola, efectivamente es nulo, pero no puedo evitar que lo sea. A veces es nulo y otras veces no, pero si es nulo necesito mostrar el nombre (sin el apellido).
Responder Con Cita
  #4  
Antiguo 27-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿qué base de datos usas? quizás puedas usar la estructura case when

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 27-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Puede usar triggers para evitar que sea nulo:

En Firebir/Interbase:
Código SQL [-]
create trigger USUARIO_BI0 for USUARIO active before insert position 0
as
begin
   if (new.NOMBRE is null) then new.NOMBRE='';
   if (new.APELLIDO is null) then new.APELLIDO='';
end
Responder Con Cita
  #6  
Antiguo 27-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
Access, estoy probando y parece que no lo acepta.
Responder Con Cita
  #7  
Antiguo 27-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
De access no tengo ni idea ni quiero tener...

Creo que no tiene la posibilidad de triggers.
De todos modos, creo que hay un lugar, en donde se definen los campos que se puede marcar algo asi como "not null"

A pesar de todo esto, si estás programando en Delphi, el componente que utilices debe tener un evento OnNewRecord. Ahí puedes poner algo de código para controlar esto:

Código Delphi [-]
procedure Form1.TablaNewRecord(DataSet: TDataSet);
begin
  TablaNOMBRE.AsString := '';
  TablaAPELLIDO.AsString := '';
end;

De esta forma ya empiezas teniendo un string vacío y aunque no editen el DBEdit de Nombre o Apellido, el campo de la base ya tiene algo.

Nota: '' no es null
Responder Con Cita
  #8  
Antiguo 27-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
Gracias a todos, encontré una forma de hacerlo en Access. Con la instrucción "Switch". El problema es que aplicado a Delphi no funciona, me salta un error "Argumento no valido". Les dejo el codigo:
Código:
SELECT switch(USU.apellidos is null,USU.nombre,
USU.apellidos is not null,USU.nombre + ' ' + USU.apellidos) as [nombre1],
USU.extension, 
USU.movilMasa, USU.departamento, 
USU.extMovilMasa,DE.nombre AS departamento 
FROM USUARIO USU,DEPARTAMENTO DE 
WHERE USU.departamento=DE.codigo AND USU.fechaBaja IS NULL
ORDER BY USU.nombre;
Ya pensé en la opción de duilioisola y la aplicaré si me ocupa mucho tiempo esto.

Gracias a tos
Responder Con Cita
  #9  
Antiguo 27-11-2007
molina669 molina669 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Elche
Posts: 40
Poder: 0
molina669 Va por buen camino
Finalmente si que funciona el SQL de arriba
Responder Con Cita
  #10  
Antiguo 07-12-2007
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
Otra alternativa para access puedes usar la funcion
iif(valorBoolean, SiEsVerdadero, SiEsFalso) entonces quedaria;

iif( isNull (USU.nombre), ' ', USU.nombre )

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
Sobre "Foros Club Delphi" y mi nombre aeff Varios 1 09-09-2007 17:00:22
Cómo saber el "nombre real" de un servicio Casimiro Notevi Windows 10 11-04-2007 20:13:58
Google pierde el nombre "Gmail" en Europa ptt Noticias 1 02-02-2007 15:48:33
"Dexter" nombre clave de Delphi 2006 Epachsoft Noticias 4 19-06-2005 18:49:16
Error "Ya existe un componente con el nombre QRStandarPreview" Jose Manuel Impresión 5 13-06-2003 07:55:26


La franja horaria es GMT +2. Ahora son las 23:42: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