Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-08-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
DBGrid combinacion de tablas

Estoy haciendo una aplicacion en la que combino dos tablas mediante un campo, por ejemplo Clientes.Codigo de la tabla Clientes con Comprob.Cliente de la tabla Comprobantes en un componente DBEdit de un form (que esta relacionado con la tabla Comprobantes) lleno con el Codigo del cliente, luego visulizo los datos en un DBGrid, el problema es que en el DBGrid se visuliza obviamente el código del cliente y no su nombre, y quiero que lo que se visualice sea el nombre del mismo.
Espero puedan ayudarme, saludos y gracias.-

S.D.P.
Responder Con Cita
  #2  
Antiguo 15-08-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Creo que lo estas haciendo con dos tablas y para visualizar los datos del nombre que esta en otra tabla tienes que hacerlo con un query
saludos
Responder Con Cita
  #3  
Antiguo 16-08-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 19
anghell77 Va por buen camino
Tal como te dice Caral, necesitas realizarlo con una consulta.
Me supongo que en la tabla Clientes, tienes el Código y el Nombre, más los demás atributos.
Un código más o menos rápido del SQL

Código SQL [-]
Select *from Clientes, Comprobantes
where Codigo.Clientes=Comprobantes.Clientes
and Comprobantes.CLientes=:entrada

Al ejecutar la consulta:
Código Delphi [-]
Query.Close;
Query.ParamByName('entrada').AsString:=trim(DBEdit.Text);//Aquí especificar el número del DBEdit o el nombre del campo. 
Query.Open;

EL DBGrid, debe estar asociado al DataSource de dicha consulta y a éste, puedes cargarle sólo las columnas que requieras...Sí se te hacen muchos campos, selecciona, los campos en la consulta:

Código SQL [-]
Select Codigo, Nombre from Clientes, comprobantes...y lo demás

Ojalá te sirva..

{Saludos}
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #4  
Antiguo 16-08-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Me parece muy bien mas claro el agua, creo que con esto ya puedes hacer la consulta completa, solo que yo lo haria en vez de un dbedit con un DBComboBox para que se visualice el cliente o numero directamente y sin tener que escribirlo, que piensas.
saludos
Responder Con Cita
  #5  
Antiguo 16-08-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
DBGrid combinación de tablas

Si esta bien eso funciona perfecto y se los agradezco, pero se me presenta otro problema: el form con que actualizo esta relacionada con la tabla Comprobantes y no con el query, como hago cuando tengo que agregar un registro???
Gracias.-
Responder Con Cita
  #6  
Antiguo 16-08-2006
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Depende de cómo quieras hacerlo. ¿En el propio grid? ¿En edits?...
Responder Con Cita
  #7  
Antiguo 16-08-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Yo lo haria de mil maneras, es muy dificil entender el problema sin verlo pero creo que facilmente o lo actualizas en el grid como dice Kuan, si lo tienes en el mismo form y si no haces un enlace con: bien sea otro query u otro grid.
La respuesta esta en la puta de la nariz,lo facil funciona muy bien esto es lo bonito de Delphi su simpleza.
saludos
Responder Con Cita
  #8  
Antiguo 16-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Yo si que no entiendo ahora mismo cual es el problema....

Tienes:
- tabla Clientes
- tabla Comprobantes
- consulta de union de ambas.

En el mismo Form, puedes poner el grid (ReadOnly a true) conectado a la consulta y despues los DBEdits conectados a sus tablas correspondientes. Al insertar un registro lo haces directamente en las tablas (Clientes.Insert). Cuando haces el Post de la tabla, cierras la consulta y la vuelves a abrir para refrescar los datos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 16-08-2006
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
DBGrid combinación de tablas

Es dificil comprender para Uds. como lo es tanto para mi explicar lo que quiero hacer, pero lo que tengo es esto:

- Tabla Clientes (codigo, nombre, domicilio, etc.)
- Tabla Comprobantes (numero, cod_cliente, fecha, importe, estado, fech_pago)

La interface de Comprobantes es un form con un DBGrid y cuatro botones (Agregar, Modificar, Eliminar, Cerrar), cuando quiero agregar un registro (click en BtnAgregar) abro otro form con controles para cada campo de la tabla comprobantes y dos botones (Aceptar, Cancelar), en el DBEdit correspondiente a cod_cliente ingreso el codigo del cliente y quiero que al lado de este componente aparezca el nombre del cliente que elegi en el DBEdit (ese es otro problemita), y bueno una vez que llene todos los campos al hacer click en BtnAceptar grabe los datos, cierre éste formulario y quede el formulario que tiene el DBGrid y figure el nuevo registro recien cargado.
Y es asi a grandes rasgos como quiero que funcione esta parte de la aplicacion.
El primer problema que se me presento es que como el campo cod_cliente es de tipo numero en mi DBGrid en lugar de aparecer el nombre del Cliente va a figurar el Codigo del mismo. (que lo levanto de la tabla Clientes)
Espero que ahora les quede un poco mas claro lo que quiero hacer.
Gracias.
Responder Con Cita
  #10  
Antiguo 16-08-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Tienes un form enlazado a estas tablas, abres otro form que tambien tienen que estar enlazados a estas tablas o query bueno:
nunca de un dbedit sacaras eso, porque este enseña lo que esta en la tabla, usa un edti normal y ligalo al dbedit asi-- Edit1.Text:= DBEdit1.text;
con este edit ligado puedes hacer lo que quieras como un query

TQuery1.SQL.Text := ('SELECT * From Clientes, Comprobantes');
TQuery1.SQL.Add('WHERE Clientes.Codigo = '+Edit1.Text+'');
TQuery1.Open;
Con respecto a que aparezca el nombre haces lo mismo con otro edit

Edit2.Text:= DBEdit1.Text;
y en inspector de objetos en borderStyle ponle none y cambiale el color
espero te sirva

saludos
Responder Con Cita
  #11  
Antiguo 16-08-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 19
anghell77 Va por buen camino
A ver si ando bien... En la interfaz de Comprobantes esté el Grid con Los datos de los Clientes?....bueno, si es que es así ojalá te sirva lo siguiente.

Si deseas que al hacer CLick sobre algún Codigo o Nombre de Cliente quieres que aparezca en el Siguiente Form el Código y Nombre de Cliente, entonces creo que el codigo :

Código SQL [-]
Select *from Clientes, Comprobantes where Codigo.Clientes=Comprobantes.Cod_Cliente
and Comprobantes.Cod_Cliente=:entrada
Más

Código Delphi [-]
select_Cliente.Close;
select_Cliente.ParamByName('entrada').AsString:=trim(DBGrid1.SelectedField.Asstring);
select_Cliente.Open;
Form_Detalles.Show;

Donde, el evento onShow de éste Form:


Código Delphi [-]
TablaComprobantes.Close;
TablaComprobantes.ReadOnly:=false;
TablaComprobantes.Open;
TablaComprobantes.Append;
//Abre la tabla comprobantes sin datos visibles para que puedas agregar lo que desees.


y Coloca Dos DBEdit que vengan de la consulta select_Cliente, correspondientes a Codigo Cliente y Nombre. De ésta manera tendrás éstos dos datos visibles sin tener que capturar nuevamente el mismo codigo de cliente ni el nombre.

Ahora, al presionar Guardar o Aceptar.

Código Delphi [-]
if Application.MessageBox('Desea Agregar Otro Registro de Comprobantes para el mismo cliente?', 'Atención', MB_YesNo+Mb_IconQuestion)=IDYes then
begin
TablaComprobantes.Close;
TablaComprobantes.ReadOnly:=false;
TablaComprobantes.Open;
TablaComprobantes.Append;
end
else
Select_Cliente.CLose;//cierra la consulta que se ejecuto mediante el DBgrid
Form_Comprobantes.Close;//Devuelve al formulario original
//Si el DBGrid está ligado al DataSource de la tabla de Comprobantes 
TablaComprobantes.Active:=true;
//Si está ligado a una Consulta que despliegue los datos
Consulta.Close;
COnsulta.Open;//Para que se cargue el dato agregado

Eso es suponiendo "... En la interfaz de Comprobantes esté el Grid con Los datos de los Clientes?"

{Saludos}
__________________
"...Ayer Bastaba un Sueño..."
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
Obtener combinación de Registros de dos consultas independientes gluglu SQL 4 10-07-2006 17:43:57
llamar mi aplicacion con una combinacion de teclas gulder API de Windows 13 05-09-2005 19:56:35
Averiguar si la combinación de dos campos está en uso DarkByte Conexión con bases de datos 18 28-09-2004 16:59:04
Reporte de combinacion de tablas Choclito Impresión 1 19-07-2004 14:02:11
Combinación de teclas Jose_Pérez API de Windows 2 17-06-2003 11:57:30


La franja horaria es GMT +2. Ahora son las 16:37:37.


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