Ver Mensaje Individual
  #11  
Antiguo 26-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Reputación: 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