Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=6618)

NeWsP 15-01-2004 12:03:32

Ayuda con consulta SQL
 
Buenos dias.

Tengo un pequeño problema que no se por donde coger... os cuento:

- Tengo una tabla de EQUIPOS y otra de PRECIOS.

en la de EQUIPOS hay el nombre del equipo y las mecacnicas por la que esta compuesto dicho equipo ejemplo:

EQUIPO | PLANO | DESCRIPCCION
prueba PM0001 plano numero 1
prueba PM0002 plano numero 2
prueba1 PM0003 Plano de otro equipo

la de precioes es asi

PLANO | PROVEEDOR | PRECIO
PM0001 Taller1 5
PM0001 Taller2 10


lo q tengo es un dbgrid con una consulta q muestra la mecanica y el precio para cada equipo, lo hago asi :

query1.SQL.Add('select PLANO_M AS PLANO,DESCR_M,PROVEEDOR,MATERIAL,PRECIO from EQUIPOS a, PRECIOS b where a.PLANO_M = b.PLANO and upper(a.EQUIPO) = upper('+quotedstr(nombre_equipo)+')');

Lo que a mi me interesaria es que cuando un plano lo hacen 2 proveedores, solo me mostrara 1 y puediera cambiar el proveedor con una dblookupcombo

poner el combo se,q me muestre lo que quiero tb.

Lo que no se hacer es que solo me muestre 1 campo cuando sean 2 proveedores y q cuando cambie la combo cambie el precio.

Espero que este claro :) y que alguien me puede hechar una mano

Muchas gracias :)

haron 15-01-2004 17:19:52

no se si he entendido bien.

creo que es cuestion de organizarse.
vamos a ver. seleccionemos un equipo: 'nombre_equipo'.

los proveedores que han trabajado en este equipo son:

Código:

select p.proveedores
from equipos e, precios p
where e.nombre_equipo=:nombre_equipo
and e.plano=p.plano

ese conjunto de proveedores debes colocarlo no en dblookupcombobox, sino en un combo normal y corriente. en el evento 'onChange' de dicho combo capturas el proveedor seleccionado y lanzas la siguiente consulta, refrescando el grid:

Código:

select e.plano, e.descripcion, e.material, p.precio
from equipos e, precios p
where e.nombre_equipo=:nombre_equipo
and p.proveedor=:proveedor
amd e.plano=p.plano

el campo 'p.proveedor' lo he quitado del grid porque ya aparece en el combo.

NeWsP 15-01-2004 18:20:28

Asias por contestar :)

Pero no se eso esactamente aunque me soluciona una parte ;)

el problema es que en la tabla esta puesto asi :

EQUIPO MECANICA PROVEEDOR PRECIO

equipo1 PM0001 taller1 5
equipo1 PM0001 taller2 10

no se si me entiendes, tal y como tu me lo has dicho me mostraria las dos mecanicas con los dos proveedores, ya que el numero de mecanica es el mismo

ese es el problema q quiero q solo me muestre 1 vez el PM0001 pero pueda cambiar de proveedor.

asias otra vez :)

eduarcol 15-01-2004 19:02:44

mira utiliza un TQuery y un ttable la consulta del tquery seria:

select disticnt * from equipos

y la ttable la utilizas como master detail siendo el master el tquery y el detail la tabla

en el ttable iria porsupuesto la de precio y el campo de enlace seria el numero de plano

Pruebalo y suerte

NeWsP 17-01-2004 23:25:13

hola otra vez
He hecho eso que me has comentado
pero en el grid no me sale la lista de todas las mecanicas de las q esta compueto el equipo.

Solo me sale la primera mecanica del equipo seleccionado

Sabes a q puede ser debido?

gracias

eduarcol 18-01-2004 18:25:54

mira lo que pasa es losiguiente, en el grid te va a moostrar una linea por equipo que segun me dices te lo hace, pero debes programar para cambiar el precio activo cada vez que lo seleccionen del combo...

al utilizar la funcion distintc en el sql conectado al grid, el grid te muestra solo la lista de equipos y en el combo al seleccionar un registro del grid te deben aparecer los distintos precios del seleccionado, eso fue lo que te entendi que querias hacer

NeWsP 18-01-2004 21:02:14

uhmmmm a ve, creo q no nos hemos acabado de enter, te explico otra vez, a ve si nos entendemos :) ante todo GRACIAS por ayudarme :)

Imaginate un EQUIPO, compuesto por MECANICAS y cada MECANICA la puede hacer dos talleres

por eso en este grid necesito mostrar todas las MECANICAS que forman un equipo.

y por cada mecanica solo se mostrara un taller, y con el combo cambiar el taller. ( q se cambiara el precio de ESA MECANICA )

las demas se verian igual.

Seria un grid con una lista no solo con 1.

Si hace falta te pego algo de codigo ;)

muchas gracias.

eduarcol 20-01-2004 20:11:38

creo que me cuesta entenderte por que por mas que leo siempre entiendo desde el principio. mira Tienes una tabla equipos y otra llamada precios por lo que entendi la clave que las relaciona es el numero de plano por lo que reitero si haces lo que te explique en un master detail el master equipos y el detail precios, a cada linea en el equipo le corresponde n lineas en precios(eso es lo que entend que querias hacer)


La franja horaria es GMT +2. Ahora son las 12:51:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi