Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-03-2009
Avatar de MichelH
MichelH MichelH is offline
Miembro
 
Registrado: jul 2005
Ubicación: jalisco mexico
Posts: 44
Poder: 0
MichelH Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 06-03-2009
Avatar de MichelH
MichelH MichelH is offline
Miembro
 
Registrado: jul 2005
Ubicación: jalisco mexico
Posts: 44
Poder: 0
MichelH Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 06-03-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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:

Código SQL [-]
SELECT ID, NOMBRE, DIRECCION, CIUDADES.NOMBRE NOMBRE_CIUDAD, TELEFONO
FROM CLIENTES
JOIN CIUDADES ON (CLIENTES.CIUDAD_ID=CIUDADES.ID)

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||
Responder Con Cita
  #4  
Antiguo 07-03-2009
Avatar de MichelH
MichelH MichelH is offline
Miembro
 
Registrado: jul 2005
Ubicación: jalisco mexico
Posts: 44
Poder: 0
MichelH Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 07-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por AzidRain Ver Mensaje
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.
Yo creo que sí es posible hacer la edición sobre el mismo grid, nada más que hay que especificar de alguna forma la consulta de actualización. En algunos caso se hace con un componente extra y en otros es una propiedad del mismo dataset. Por ejemplo, con un IBQuery, puede usarse un IBUpdateQuery. Es cierto que a fin de cuentas se trata de un segunda consulta, pero permite hacer ediciones in situ.

// Saludos
Responder Con Cita
  #6  
Antiguo 07-03-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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.
Responder Con Cita
  #7  
Antiguo 07-03-2009
Avatar de MichelH
MichelH MichelH is offline
Miembro
 
Registrado: jul 2005
Ubicación: jalisco mexico
Posts: 44
Poder: 0
MichelH Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 16-03-2009
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Totalmente correcto
__________________
¿Microsoft? No, gracias..
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
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


La franja horaria es GMT +2. Ahora son las 07:51:28.


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