![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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 ! |
|
#2
|
||||
|
||||
|
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 ! |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
||||
|
||||
|
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.
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 ! |
|
#6
|
||||
|
||||
|
Cita:
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:
Cita:
![]() 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. |
|
#7
|
||||
|
||||
|
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 ! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|