![]() |
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. |
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 |
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
Al ejecutar la consulta:
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:
Ojalá te sirva.. {Saludos} |
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 |
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.- |
Depende de cómo quieras hacerlo. ¿En el propio grid? ¿En edits?...
|
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 |
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 |
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. |
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 |
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 : Más
Donde, el evento onShow de éste Form:
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.
Eso es suponiendo "... En la interfaz de Comprobantes esté el Grid con Los datos de los Clientes?" {Saludos} |
La franja horaria es GMT +2. Ahora son las 22:52:39. |
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