PDA

Ver la Versión Completa : mostrar datos de varias tablas relacionadas


marcos_0586
05-10-2010, 02:30:00
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
...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í:


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
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
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:

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í:

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:

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. :)