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 26-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Cita:
Empezado por gluglu Ver Mensaje
Y como dijo Gabo que sabía hacer, no sería mejor que en vez de complicarnos la vida con un Vista adicional y tal, hacer directamente un Join en la consulta SQL y obtener los textos correspodientes según los valores del campo FORMA_PAGO.

Pero entiendo una vez más que esa no era la pregunta de Gabo, sino saber si se podía hacer sin crear precisamente esa tabla y sin el Join.
Como decía "El Chavo": "Eso, eso, eso, eso..."

Es que a veces hay ciertos campos para los que no veo claro crear una tabla aparte (un campo ESTADO_CIVIL, por ejemplo), pero tampoco me gusta crearlos de una anchura tal que pueda contener un string, sino un valor que represente a dicho string.

Siguiendo con el ejemplo del estado_civil, no lo creo como un varchar(15) donde tenga que poner cada vez "Soltero", "Casado", etc., sino como un varchar(1) que contiene valores como 0, 1, etc. (o letras si alguien lo prefiere). Pero claro al desplegarlo en el DBGrid no quiero que aparezca el código sino lo que representa.

Cita:
Empezado por gluglu Ver Mensaje
Pongo un caso articular mío que viene a cuento de mi hilo 'paralelo' que anda ahora mismo por aquí en el foro SQL.

Yo obtengo 3 campos de mi consulta SQL, Apellido1, Apellido2 y Nombre, y los quiero mostrar en una UNICA columna de un DBGrid, y en el 'formato' Apellido1 Apellido2, Nombre es decir los dos apellidos separados por un espacio y con una , del nombre. Pero condicionando a si existe o no el 2º Apellido, y a si existe o no también el Nombre obtenido en la consulta SQL.

Para ello me viene ideal la función OnGetText de un campo del DBGrid.


Código Delphi [-]procedure TForm.IBDataSet1NOMBREGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
if IBDataSet1HABITAC.IsNull then
Text := 'Todas las Habitaciones'
else begin
Text := IBDataSet1APELLIDO1.AsString;
if not IBDataSet1APELLIDO2.IsNull then
Text := Text + ' ' + IBDataSet1APELLIDO2.AsString;
if not IBDataSet1NOMBRE.IsNull then
Text := Text + ', ' + IBDataSet1NOMBRE.AsString;
end;

end;
Pero para eso, ¿no te convendría más concatenar los campos en la consulta? Algo así como:

Código SQL [-]
SELECT CLIENTE_CODIGO, (CLIENTE_APELLIDOS ||' ' ||CLIENTE_NOMBRE) AS NOMBRE, 
           CLIENTE_NOMBRE, CLIENTE_APELLIDOS, etc...
FROM CLIENTE

Cita:
Empezado por gluglu Ver Mensaje


En cualquier caso, Gabo sabrá usar la que a él mejor le interese con las diferentes opciones que le estamos dando.
Eso, eso, eso, eso...

Por cierto, gracias a ti también Lepe por tu respuesta.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #2  
Antiguo 26-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
La entonación a mi comentario anterior está en el 'If'

Devuélmeme tu en una misma consulta los siguientes valores (hacer hincapie especial en la separación de la coma (,) y en la utilización de espacios o no).

Sánchez Gómez, Juan
Pérez, José
Smith, Robert
Rodriguez López

Con la concatenación, en primer lugar, no podría poner la condición de mostrar la , si existe o no el nombre. Y lo mismo pasaría con la concatenación en el caso de tener o no dos apellidos.

Y adicionalmente, por ejemplo en el caso que expuse arriba, si los tres campos son null, devolver un texto determinado a representar en el DBGrid. Todo esto creo que es imposible con una simple concatenación en la consulta SQL. Es para ello que utilizo frecuentemente la función OnGetText.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 26-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Ya entiendo , eso me pasa por no haber revisado bien tu código y entender lo que hacía en primer lugar...
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
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
Obtener valor de una celda de un DBGrid Albano Conexión con bases de datos 10 13-01-2006 17:53:26
Tomar el valor de una celda de un dbgrid Petolansa Conexión con bases de datos 9 09-09-2005 02:33:34
Obtener el valor de una celda de dbgrid gescoto99 OOP 3 31-03-2004 22:47:16


La franja horaria es GMT +2. Ahora son las 23:47:57.


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