Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   mostrar datos de varias tablas relacionadas (https://www.clubdelphi.com/foros/showthread.php?t=70180)

marcos_0586 05-10-2010 02:30:00

mostrar datos de varias tablas relacionadas
 
hola amigos del foro, les cuento que tengo que hacer unas consultas en delphi 6 y la verdad es que no encontre por ningun lado como hacerlas, bueno el tema es el siguiente, tengo una tabla llamada pedido en la cual tengo cod_pedido,cod_cliente,descripcion; logicamente ademas de esta tabla tengo la tabla cliente que se relaciona con pedido para levantar su codigo, esto seria la estructura de mis tablas ahora el problema. tengo que realizar una consulta en la cual ingresando el codigo de pedido me traiga el dato del mismo pero no con el codigo de cliente sino con su respectivo nombres que se encuentran en la tabla cliente. la verdad es que no se que componente usar ni donde mostrar el dato si en un edit o en un dbedit o en algun otro campo(menos en un dbgrid), bueno espero que me puedan ayudar y desde ya gracias por todo.

Caral 05-10-2010 04:30:54

Hola
Disculpa, tal vez trataste de explicar muchas cosas a la vez, pero no tengo claro que en realidad lo que necesitas.
Tal vez despacito para novatos.
Saludos

Neftali [Germán.Estévez] 05-10-2010 12:16:35

Cita:

Empezado por marcos_0586 (Mensaje 378400)
...tengo que realizar una consulta en la cual ingresando el codigo de pedido me traiga el dato del mismo pero no con el codigo de cliente sino con su respectivo nombres que se encuentran en la tabla cliente.

Vamos por partes...

Por un lado tienes los componentes para realizar la consulta. Dependiendo de la Base de Datos (que noi comentas cual es), deberás usar unos u otros. ADO Para SQL Server, Access, DBase,... IBExpress si usas Interbase, Firebird,...
Lo normal es utilizar un componentes de conexión y uno para la consulta (TQuery, TADOQuery, TIBQuery, TzQuery,...)

En cuanto a la consulta necesitas hacer una JOIN. Revisa la ayuda o algun manual de SQL -o busca en los foros- para ver ejemplos. Básicamente una JOIN te permite relacionar campos de diferentes tablas para obtenerjusto lo que tú necesitas. Algo así:

Código SQL [-]
SELECT * FROM PEDIDO 
INNER JOIN CLIENTES
ON Pedido.Cod_Cliente=Clientes.Codigo

Lo último es dobde mostrar el Dato. Lo más sencillo es que utilices comnponentes da Datos, que para eso están. Si utiñlizas un DBGrid, basta con un conector (TDataSource) y un DBGrid. Igual si lo quieres en un DBEdit. Necesitas un Conector y el componente. El el caso del DBEdit, el conector se "engancha" al TQuery (propiedad DataSet) y el DBEdit al conector con las propiedades (DataSource y DataField).

Pruébalo y si tienes problemas, ya dirás...

marcos_0586 05-10-2010 18:19:10

gracias neftali, yo habia echo una consulta con un componente query pero al parecer la debo haber echo mal ya que cuando quiero relacionar el dbedit con el datafield me aparece en blanco, ahora probare tu opcion y trabajare sobre ella muchas gracias.

BlueSteel 05-10-2010 19:46:31

Cita:

Empezado por marcos_0586 (Mensaje 378464)
gracias neftali, yo habia echo una consulta con un componente query pero al parecer la debo haber echo mal ya que cuando quiero relacionar el dbedit con el datafield me aparece en blanco, ahora probare tu opcion y trabajare sobre ella muchas gracias.


Hola.

Igual seria bueno que indicaras el codigo que utilizastes, y asi te podemos decir que estaba mal.

Salu2

marcos_0586 05-10-2010 22:35:34

Cita:

Empezado por BlueSteel (Mensaje 378479)
Hola.

Igual seria bueno que indicaras el codigo que utilizastes, y asi te podemos decir que estaba mal.

Salu2

Hola, el tema es que no tengo un codigo solamente relacione los dbedit a la tabla solo tengo esto:
Código Delphi [-]
procedure TForm23.Button1Click(Sender: TObject); 
begin  
     if form1.table7.findkey([edit1.Text])= true  then
     panel1.visible:=true; end;

en el cual el edit1.text contendra el numero de pedido buscado, si lo encuentra me muestra los dbedit con sus respectivos datos que estan dentro del panel1, el problema esta que el dbedit de empleado es un valor numerico que hace referencia a la tabla empleado y queria saber la forma para que en lugar del numero me muestre el nombre del empleado

ecfisa 06-10-2010 03:35:19

Hola Marcos.

A ver si te entedí bien...

Tenés dos tablas: PEDIDOS y CLIENTES, supongamos que están definidas así:
Cita:

TABLA PEDIDOS
COD_PEDIDO
COD_CLIENTE
DESCRIPCION

TABLA CLIENTES
COD_CLIENTE
NOMBRE
DIRECCION
Y, dado el número de pedido (que está en un edit) querés obtener los datos de la tabla PEDIDOS más algunos de la tabla CLIENTES ?

Si es eso, haría:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin 
  with IBQuery do
  begin
    Close;
    SQL.Text:= 'SELECT COD_PEDIDO,COD_CLIENTE,DESCRIPCION,NOMBRE,DIRECCION '+
               'FROM PEDIDOS, CLIENTES '+
               'WHERE PEDIDOS.COD_PEDIDO = ' + QuotedStr(Edit1.Text)+
               'AND PEDIDOS.COD_CLIENTE = CLIENTES.COD_CLIENTE';
    Open;
  end;
end;

Saludos. :)


La franja horaria es GMT +2. Ahora son las 11:28:57.

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