Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
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 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: 23
gluglu Va por buen camino
Una de las maneras para hacer lo que quieres es utilizar el evento OnGetText del campo FORMA_PAGO del DataSet en el cual vas a hacer la consulta.

No sé si tienes un DataSet para dicha consulta ? Pero si es así, puedes utilizar dicho evento que sería algo así como :

Código Delphi [-]
procedure TForm1.IBDataSet1FORMA_PAGOGetText(Sender: TField;
  var Text: string; DisplayText: Boolean);
begin
  case IBDataSet1FORMA_PAGO.AsInteger of
    0 : Text := 'Efectivo';
    1 : Text := 'Transferencia';
  end;
end;

De esta manera en el DBGrid que utilizas sale el texto que defines ewn esta función. (En tiempo de diseño, no. Pero en tiempo de ejecución, si).

Espero haberte ayudado.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 26-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 20
Gabo Va por buen camino
Cita:
Empezado por gluglu Ver Mensaje
Una de las maneras para hacer lo que quieres es utilizar el evento OnGetText del campo FORMA_PAGO del DataSet en el cual vas a hacer la consulta.

No sé si tienes un DataSet para dicha consulta ? Pero si es así, puedes utilizar dicho evento que sería algo así como :


Código Delphi [-]procedure TForm1.IBDataSet1FORMA_PAGOGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
case IBDataSet1FORMA_PAGO.AsInteger of
0 : Text := 'Efectivo';
1 : Text := 'Transferencia';
end;
end;




De esta manera en el DBGrid que utilizas sale el texto que defines ewn esta función. (En tiempo de diseño, no. Pero en tiempo de ejecución, si).

Espero haberte ayudado.
No, no tengo ningún control TIBDataset, de hecho jamás lo he ocupado. Sólo un TIBQuery y un TDataSource. ¿Sabes si hay alguna correspondencia entre el evento OnGetText del TIBDataset y alguno de los eventos del Dataset del DataSource, o me estoy liando?

¡Y claro que eres una ayuda! Aunque no me contestes la pregunta directamente, me sirve para seguir familiarizándome con el resto de los controles y sus eventos.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #3  
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: 23
gluglu Va por buen camino
Perdón .... lo mismo es prácticamente utilizar el TIBDataSet que el TIBQuery.

No había sabido expresarme correctamente, y no me fijé detalladamente en tu exposición.

Pues bien. El DBGrid lo tendrás asociado al TDataSource, y a su vez el DataSource lo tendrás asociado al TQuery. Correcto. hasta aquí.

Lo que necesitas ahora es hacer doble click encima del elemento TQuery y ahí te aparecerá (en principio) una lista en blanco. De nuevo click derecho y añades todos los campos que te aparecen, que serán aquellos que has definido en tu consulta SQL.

Siguiente paso. Sobre el campo FORMA_PAGO haz click, y en Object Inspector selecciona los eventos. Tendrás el evento OnGetText y ahí pones el código que te puse anteriormente.

Y ya está. Con esto en tiempo de ejecución obtendrás el resultado esperado.

__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
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: 23
gluglu Va por buen camino
Tampoco ví la respuesta de Neftalí. Pero creo que lo más fácil e inmediato es lo que he detallado en mi respuesta anterior.

Yo al menos lo utilizo en innumerables ocasiones de dicha manera.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #5  
Antiguo 26-09-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 20
Gabo Va por buen camino
Funciona muy bien con ese sistema, no lo conocía.

Gracias gluglu!!! Gracias Neftalí!!!
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #6  
Antiguo 26-09-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Alguien lo ha comentado ya, pero aquí va más detallado:

Crea una tabla Formapago con los campos idformapago autoincrement y Formapago de tipo varchar(20).

Crea una vista (View) que una la tabla Cliente y formapago.
Usa un TIBQuery para consultar esa vista enlazado a un TIBUpdateSql.

El query se usa para seleccionar un registro de la vista, (que ya incluye los campos idFormaPago y FormaPago) y el UpdateSql, se encarga de modificar la tabla cliente estableciendo el idformapago que se haya elegido de un DBLookUpComboBox.

La tabla formapago, puedes dejarla oculta para el usuario (o crear un simple Form que permita añadir formas de pago ... ya esto depende del tiempo que tengas). La forma de pago puede cambiar: cheque, efectivo, pagaré, por internet, etc, y solo tendrás que añadir un registro a esa tabla para que todo funcione sin problemas.

Si usas un carácter, después tienes que interpretar ese número en el código delphi y/o en consultas sqls, tendrás que modificar el código fuente y las sqls para añadir una nueva forma de pago.

Ten en cuenta que la tabla Formapago tendrá 4 o 5 registros como mucho, no supone mucha carga extra, pero simplifica muchisimo actualizaciones, borrados, etc, estableciendo la integridad referencial.

Por otra parte haces un correcto diseño de la Base de Datos, en cuanto a Normalización (por ejemplo).

Saludos

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
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: 23
gluglu Va por buen camino
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.

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;

En cualquier caso, Gabo sabrá usar la que a él mejor le interese con las diferentes opciones que le estamos dando.
__________________
Piensa siempre en positivo !
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
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 12:56:34.


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