Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2007
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
Ayuda con consulta de combinación entre tablas.

Un abrazo al foro.
En realidad no se trata de una simple consulta. Me gustaría que analizaran el siguiente caso y me dieran algunas ideas.
Resulta que tendo dos tabla. Una que contiene las áreas de mi empresa y otra que contiene todas las partidas que deben ser planificadas. Por ejemplo el petroleo, productos químicos, gasolina, carbon, entre otros 300 aproximadamente.
El caso es que hay areas que no deben planificar el petróleo, por ejemplo.
yo necesito que cuando el usurio especifique su area, en una tabla aparescan las partidas que le corresponden a esa area.

Les hago un dibujo de cada tabla para que tengan una mejor idea :

Tabla de areas:
id nombre
1 instrumentacion
2 laboratorio central
3 computacion
4 seguridad
5 recursos humanos

Tabla de partidas
id Partida
1 Petroleo
2 Amoniaco
3 papel
4 salario
5 aceites
.
.
.

Resumen: quiero que cuando escriba recursos humanos me salga la siguiente tabla :
id partida
3 papel
4 salario

ESPERO me hallan entendido...Espero alguna idea mucho más censilla que las tantas que tengo en la cabeza.
Gracias de antemanos.
Responder Con Cita
  #2  
Antiguo 13-04-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tendrás que crear una tercera tabla en donde se grabará.

id nombre----->id Partidas

Ejemplo.

5 - 3
5- 4

ó

5 - Papel
5 - Salario


Un Saludo.


__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 13-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Necesitas una tercera tabla de configuracion, por ejemplo:

Tabla: ConfigAreas
Dos campos que son clave ajena de las tablas Areas y partidas, y además juntas, forman la clave primaria de esta nueva tabla.
Código:
 IdArea  idPartida
   5      3 
   5      4
Creas una ventana para manipular esa configuración.

A partir de ahora, cuando quieras ver las partidas de un área determinado, haces una consulta como esta:
Código SQL [-]
select * from partidas
where idpartida in (select idpartida from ConfigAreas where idArea = 5)

Vaya, marcos se me ha adelantado

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 13-04-2007
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
Bueno!!!

Gracias...Ahora se me ocurre administrar esta tercera tabla desde un formulario delphi. Suponiendo que el administrador introdusca el area y en un DbGrid que contenga todas la partidas, el administrador iria marcando las apartidas que esa area debe planificar. Se me ocurre poder tener un checkbox a la izquierda de cada partida. Si es marcada ya ustedes saben y luego...
Me pregunto como puedo lograr lo del CheckBox...
Gracias de antemanos.
Responder Con Cita
  #5  
Antiguo 13-04-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Aquí tienes código que utilizo para poner un DbCheckbox que inicialmente estará como no visible y conectado al campo de la tabla que pretendenmos modificar, sobra algo de código pero te lo pego tal cual. A la rejilla para mayor claridad le ha renombrado Reja.
Código Delphi [-]
procedure TfrConAlbaran.RejaColEnter(Sender: TObject);
begin

  if Estado = 2 then
  begin
    if Reja.Columns [Reja.SelectedIndex].
        Field = DmHH.AlbCobrado  then
      DbchkCobrado.Visible := True
    else
      DbchkCobrado.Visible := False;
  end;

end;



procedure TfrConAlbaran.RejaDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
   if DmHH.Albcobrado.Value = false then
   begin
   Reja.Canvas.Brush.Color :=clAqua;
   Reja.Canvas.Font.Color:=clRed;
   Reja.DefaultDrawColumnCell(Rect,Datacol,Column,State);
   end;

  if Estado = 2 then
  begin
    if (gdFocused in State) and
        (Column.Field = DmHH.AlbCobrado) then
      begin
        DbchkCobrado.SetBounds (
          Rect.Left + Reja.Left + 1,
          Rect.Top + Reja.Top + 1,
          Rect.Right - Rect.Left,
          Rect.Bottom - Rect.Top);
      end;
  end;

end;

procedure TfrConAlbaran.RejaKeyPress(Sender: TObject; var Key: Char);
begin
  if Estado = 2 then
  begin
    if DbchkCobrado.Visible and (Ord (Key) > 31) then
    begin
      Key := #0;
      DmHH.Alb.Edit;
      DbchkCobrado.Checked := not
        DbchkCobrado.Checked;
      DbchkCobrado.Field.AsBoolean :=
      DbchkCobrado.Checked;
      end;
    end;
end;


Una aclaración la variable estado la utilizo para saber si la fuente de datos está en modo edición o consulta antes de abrir la rejilla y segun que en el menú de la aplicación se elija consultas o modificar Estado es igual a 3 ó 2, puesto que el uno lo utilizo para las altas.
Un Saludo
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 13-04-2007 a las 17:59:54.
Responder Con Cita
  #6  
Antiguo 13-04-2007
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
Ohhhh!!!!

Lo siento pero me siento un novato delante de este código...
Me preguntaba si este código me coloca un CheckBox al lado de cada registro en la tabla de partidas. Así selecciono el area y marco las partidas para esta area. Luego quedaría construir la tabla 3.
GRACIAS ...
Responder Con Cita
  #7  
Antiguo 13-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Yo quizás hubiera usado un Listbox, por aquello de que tiene multiSelección y puede ser más cómodo para el usuario, elige con CTRL o Shift todas las partidas y después las pasa a otro Listbox, es más trabajo para tí, pero piensa en el pobre usuario dando clics a todos los checkbox cuando tenga las 300 partidas que comentas y 20 áreas.

Delphi trae un Form ya diseñado con 2 listbox, donde se puede arrastrar y soltar y pasar de unos a otros, File -> new -> Dialogs (me parece que es la pestaña).

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 13-04-2007
Roilo Roilo is offline
Miembro
 
Registrado: nov 2005
Ubicación: Mayarí, Cuba
Posts: 143
Poder: 19
Roilo Va por buen camino
Ok!!!

Creo que me quedo con esta Lepe...
Gracias a todos.
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
Diferencia entre dos tablas... raffagia SQL 3 08-02-2008 03:06:53
ayuda con una consulta de 2 tablas y dar resultado en un dbgrid Goyo SQL 2 23-08-2006 07:40:34
xml-rpc, php, mysql, es buena convinacion? sakuragi PHP 1 07-12-2005 10:18:17
Ayuda consulta sql con dos tablas.... ronimaxh SQL 1 29-11-2005 14:15:18
Convinacion teclas que cuelga Windows 200 athal Windows 2 12-01-2005 13:23:31


La franja horaria es GMT +2. Ahora son las 23:12:32.


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