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
|
||||
|
||||
Consultas y Grids, cual seria la mejor solucion?
Hola que tal!
Recien empeze a utilizar Firebird, IBExpert y Delphi2009, despues de años de Delphi5 y Dbase asi que al aprender nuevas tecnicas no se cual seria la mejor opcion. (hecho en Firebird con IBExpert) Tengo dos catalogos CLIENTES y CIUDADES. Campos CLIENTES: ID, NOMBRE, DIRECCION, CIUDAD_ID, TELEFONO Campos CIUDADES: ID, NOMBRE, ESTADO CLIENTES esta asociado a un DBGRID y utilizo el componente TIBDataSet para conexion con componentes, y quiero que la columna "Ciudad" en el DBGrid me muestre el nombre de la ciudad en lugar del ID de la ciudad, este nombre de ciudad se encuentra en la tabla CIUDADES. Que seria lo mejor... 1. ¿Hacer que desde la estructura de la base, osea con el IBExpert, se liguen esos datos? 2. ¿Hacer que se haga la consulta desde el TIDataSet? 3. ¿Hacer en el evento OnDrawColumnCell del Grid de CLIENTES una busqueda en la tabla CIUDADES y sustituir el dato a mostrar? 4. Alguna otra tecnica que ustedes me recomienden. Como siempre agradesco cualquier ayuda que me puedan dar.
__________________
No hay misterios, sólo hay falta de información. Tampoco hay milagros, sólo hay hechos científicos ignorados Última edición por MichelH fecha: 06-03-2009 a las 23:45:14. |
#2
|
||||
|
||||
hoy andan muy callados, esta bien que es viernes pero deberas me interesa saber que seria lo mejor...
__________________
No hay misterios, sólo hay falta de información. Tampoco hay milagros, sólo hay hechos científicos ignorados |
#3
|
||||
|
||||
Te recomiendo para casos como este en donde el grid nos va a mostrar una lista que contiene una tabla con referencias hacia otra utilizar un query para mostrar la lista utilizando joins:
De esta manera el motor se encarga de hacerte la chamba. OJO: En este esquema no es posible usar el grid para editar "a mano" los datos, es mejor utilizar un form para pedir los datos del registro y un query adicional para hacer las modifiaciones.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#4
|
||||
|
||||
AzidRain, te lo agradezco
De hecho es un catalogo donde hago Altas, Edicion y Eliminacion de registro por medio de Form, asi que hacerlo como me lo comentas creo que vendra bien. Solo otra pregunta, puedo hacer esto con el componente que estoy usando, TIDataSet, o tengo que utilizar un componente query?
__________________
No hay misterios, sólo hay falta de información. Tampoco hay milagros, sólo hay hechos científicos ignorados |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
Por supuesto Roman, pero supuse que le sería mas complicado, yo no utilizo FB ni los componentes TIB, mas bien MySQL y ZEos. En el caso de Zeos cuando utiliza uno una consulta multitabla requiere de un componente adiciona (TSQLUpdate) para indicar los querys para modificación.
En el caso de Michel le sirve conque cambie el TIBDataset por el equivalente de un query (IBQuery) y que haga la edición utilizando un query distinto actualizando el query de la lista al terminar la edición. El esquema basico es así: Primero lanzamos nuestro query con todos lo joins que queramos En la forma de la lista o grid ponemos nuestros botones de A B M (Altas Bajas Modificaciones) Cuando se hace click en alguno de ellos corremos un query que nos traiga los datos completos del registro seleccionado, el cual tomamos del primer query. Al terminar de modificar el registro le decimos al primer query que se refresque pq ya modificamos algún dato. Lamento no poder ayudar mas pero repito que no manejo nada de IB, si quieres te pongo un ejemplo con Zeos tal vez te sirva
__________________
AKA "El animalito" ||Cordobés a mucha honra|| Última edición por AzidRain fecha: 07-03-2009 a las 01:01:59. |
#7
|
||||
|
||||
Gracias muchachos en realidad han sido de gran ayuda, en serio es de agradecer.
Aqui les dejo como lo resolvi (con su ayuda, claro) sirve que me dicen si es correcto y si lo es, seguro a otro compañero novato le servirá: Con el mismo TIBDataSet, en las propiedades: SelectSQL: select A.ID, A.NOMBRE, A.DIRECCION, A.COLONIA, A.CP, A.CIUDAD_ID, CIUDADES.NOMBRE CIUDAD, A.TELEFONO1, A.TELEFONO2 from CLIENTES A join CIUDADES on (A.CIUDAD_ID = CIUDADES.ID) where A.ID = :OLD_ID ModifySQL update CLIENTES set CIUDAD_ID = :CIUDAD_ID, CP = :CP, DIRECCION = IRECCION, ID = :ID, NOMBRE = :NOMBRE, TELEFONO1 = :TELEFONO1,TELEFONO2 = :TELEFONO2 where ID = :OLD_ID InsertSQL insert into CLIENTES (CIUDAD_ID, CP, DIRECCION, ID, NOMBRE, EMAIL, TELEFONO1, TELEFONO2) values (:CIUDAD_ID, :CP, IRECCION, :ID, :NOMBRE, :EMAIL, :TELEFONO1, :TELEFONO2) RefreshSQL select A.ID, A.NOMBRE, A.DIRECCION, A.COLONIA, A.CP, A.CIUDAD_ID, CIUDADES.NOMBRE CIUDAD, A.TELEFONO1, A.TELEFONO2, A.EMAIL from CLIENTES A join CIUDADES on (A.CIUDAD_ID = CIUDADES.ID) where A.ID = :OLD_ID Con esto ya se puede editar directo en el DBGrid, aunque yo no lo uso ya que puse un Form para la edicion, pero me sirve para actualizar los datos mediante el procedimiento IBDataSet.Refresh y asi se actualizan los datos en el DBGrid
__________________
No hay misterios, sólo hay falta de información. Tampoco hay milagros, sólo hay hechos científicos ignorados Última edición por MichelH fecha: 07-03-2009 a las 01:25:22. |
#8
|
|||
|
|||
Totalmente correcto
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cual seria el mejor lugar para guardar la contraseña de acceso a mi Aplicacion | JoAnCa | Varios | 3 | 21-02-2009 21:42:36 |
cual seria el motherboard perfecto | kurono | Debates | 24 | 19-05-2008 15:35:14 |
cual seria el componente correcto? | DM2005 | Varios | 0 | 04-07-2006 21:55:39 |
Cual seria lo ideal? | Coco_jac | Gráficos | 1 | 10-06-2005 01:38:42 |
cual seria la mas adecuado base de datos... | ronimaxh | Firebird e Interbase | 8 | 23-04-2004 17:47:15 |
|