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 09-08-2004
juziel juziel is offline
Miembro
 
Registrado: ago 2004
Ubicación: Morelia
Posts: 27
Poder: 0
juziel Va por buen camino
Question Como selecciono datos de otra tabla

Hola a todos

Necesito de su ayuda, estoy haciendo un pequeño programa en delphi 6 y firebird 1.5, tengo varias tablas en una tengo las claves de productos y los datos de estos productos (clave, descripcion, unidad, etc.) en otra tabla tengo (clave_vendedor, nombre, etc) y en otra tengo (id_vendedor, id_producto, cantidad, etc). Quiero hacer una consulta que seleccionando de un dbcombo al vendedor en el dbgrid aparezcan la clave del producto, la cantidad, etc. Como le hago?

gracias de antemano

Última edición por juziel fecha: 11-08-2004 a las 01:38:40.
Responder Con Cita
  #2  
Antiguo 10-08-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por juziel
... tengo varias tablas en una tengo las claves de productos y los datos de estos productos TABLA1 (clave, descripcion, unidad, etc.) en otra tabla tengo TABLA2(clave_vendedor, nombre, etc) y en otra tengo TABLA3(id_vendedor, id_producto, cantidad, etc). Quiero hacer una consulta que seleccionando de un dbcombo al vendedor en el dbgrid aparezcan la clave del producto, la cantidad, etc. Como le hago?
Se trata de "enganchar" al grid un TQuery/TIBQuery y configurarle una SQL que te haga la JOIN de las tres tablas. Lo importante es tener claro cómo las tienes relacionadas; Sería algo así (te lo pongo de memeria, así que si hay algún error me avisas...)

NOTA: Te pongo todos los datos en el SELECT para que lo veas más claro, luego tú puedes eliminar los que no te interesen.

Código SQL [-]
select tabla1.clave, tabla1.descripcion, tabla1.unidad,
tabla2.clave_vendedor, tabla2.nombre,
tabla3.id_vendedor, tabla3.id_producto, tabla3.cantidad
from 
((tabla3.id_producto inner join tabla1.clave on tabla3.id_producto)
  inner join tabla2 on tabla2.clave_vendedor=tabla3.id_vendedor)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 10-08-2004
juziel juziel is offline
Miembro
 
Registrado: ago 2004
Ubicación: Morelia
Posts: 27
Poder: 0
juziel Va por buen camino
gracias por responder, voy a probarlo y luego te cuento si funciona, estoy utilizando FIBPlus. Gracias de nuevo
Responder Con Cita
  #4  
Antiguo 11-08-2004
juziel juziel is offline
Miembro
 
Registrado: ago 2004
Ubicación: Morelia
Posts: 27
Poder: 0
juziel Va por buen camino
no funciono como dices me daba algunos errores

Código SQL [-]
select tabla1.clave, tabla1.descripcion, tabla1.unidad,
tabla2.clave_vendedor, tabla2.nombre,
tabla3.id_vendedor, tabla3.id_producto, tabla3.cantidad
from 
((tabla3.id_producto inner join tabla1.clave on tabla3.id_producto)
inner join tabla2 on tabla2.clave_vendedor=tabla3.id_vendedor)
en vez de eso hice esto
Código SQL [-]
select tabla1.clave_producto, tabla1.descripcion, tabla1.unidad,
tabla2.clave_vendedor, tabla2.nombre,
tabla3.id_vendedor, tabla3.id_producto, tabla3.cantidad
from 
((tabla3 inner join tabla1 on tabla3.id_producto = tabla1.clave_producto)
inner join tabla2 on tabla2.clave_vendedor=tabla3.id_vendedor)
el problema es que me aparecen todas las claves de los vendedores y yo quiero que aparezcan solo las claves de los productos del vendedor seleccionado en un DblookUpcombo

gracias

Última edición por juziel fecha: 11-08-2004 a las 01:39:34.
Responder Con Cita
  #5  
Antiguo 11-08-2004
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 20
Rufus Va por buen camino
Tu consulta está bien, sólo te falta un WHERE especificando qué es concretamente lo que quieres seleccionar dentro de ese conjunto que has creado.

Lo mejor es hcerlo con un parámetro.

Código SQL [-]
...WHERE tabla2.nombre = :vendedor

y antes de lanzar la consulta, en el evento OnChange del DBCombobox, hacer:

Código:
 DataSet.ParamByName('vendedor').AsString := DBComboBox.Text;
  Dataset.Close;
  Dataset.Open;
__________________
Milo
Responder Con Cita
  #6  
Antiguo 11-08-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por juziel
no funciono como dices me daba algunos errores...
Ok, se me escapó el nombre del campo dónde no debía.

Cita:
Empezado por juziel
...el problema es que me aparecen todas las claves de los vendedores y yo quiero que aparezcan solo las claves de los productos del vendedor seleccionado en un DblookUpcombo
Una vez que los tienes todos lo que te queda es añadir un WHERE para filtrar sólo los datos que te interesan. Si quieres filtrar por un ID_vendedor, deberás añadir al final de la sentencia algo así:

Código SQL [-]
...vendedor=tabla3.id_vendedor) WHERE tabla3.id_vendedor = 1234

Si además quieres añadir una ordenación deberás añadir un ORDER BY:

Código SQL [-]
...vendedor=tabla3.id_vendedor) WHERE tabla3.id_vendedor = 1234 ORDER BY tabla3.id_vendedor

Haz algunas pruebas añadiendo diferentes campos y valores al WHERE.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 12-08-2004
juziel juziel is offline
Miembro
 
Registrado: ago 2004
Ubicación: Morelia
Posts: 27
Poder: 0
juziel Va por buen camino
gracias a amigos por su ayuda
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


La franja horaria es GMT +2. Ahora son las 23:51:29.


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