![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Cita:
COD_FACTURA INT, COD_CLIENTE INT, CONDICION PAGO VARCHAR, PTJE_DESC FLOAT, TOTAL_FACTURA FLOAT, Y TENGO OTRA TABLA FACTURA_DETALLE CON LOS SIGUIENTES CAMPOS: COD_FACTURAD INT COD_ARTCULO VARCHAR, CANTIDAD FLOAT, PRECIO FLOAT, IMPORTE FLOAT, AHORA BIEN LO K NECESITO HACER ES QUE CUANDO ESTE CAPTURANDO SUPONGAMOS LA FACTURA 1 EN LA TABLA FACTURA_ENCA NECESITO QUE TAMBIEN SE CAPTURE LA FACTURA 1 EN LA TABLA FACTURA_DETALLE PARA PODER LUEGO HACER EL INNER JOIN QUE ME DEVUELVA LOS REGISTROS DE LA FACTURA PERO EN REALIDAD NO SE COMO HACERLO, CUAL ES TU SUGERENCIA? |
|
#2
|
|||
|
|||
|
hola,
si es para edición de un maestro-detalle, primero me deberias decir con que base de datos trabajas, es decir, ¿ es Firebird ? Si es así, mirate el tema del DataSetProvider y los tipos de campos tDataSetField, que no es otra cosa, que la tabla detalle. Como montarlo, pues dos tSQLQuery, uno para el maestro y otro para el detalle, relacionados los dos por un tDataSource, el tSQLQuery de la cabecera de la factura conectado a un tDatasetProvider, luego dos tClientDataSet conectando el de cabecera al tDatasetProvider, y el tClientDataSet del detalle se conectará al tClientDataSet de la cabecera mediante un campo del tClientDataSet de la cabecera ( del tipo tDataSetField ). Para que lo veas claro, te pongo un ejemplo según tus tablas: tSQLQueryCab.SQL( 'SELECT * FROM factura_enca ORDER BY COD_FACTURA' ); tDataSourceCab.DataSet := tSQLQueryCab; tSQLQueryDet.SQL( 'SELECT * FROM FACTURA_DETALLE where ( COD_FACTURAD = :COD_FACTURA ) ORDER BY COD_ARTCULO' ); donde :COD_FACTURA significa que es un parametro que recibe del componente tSQLQueryCab al estar relacionado tSQLQueryDet mediante la propiedad DataSource, es decir tSQLQueryDet.DataSource := tDataSourceCab; Luego tDataSetProviderCab.DataSet := tSQLQueryCab; Luego tClientDSCab.ProviderName := tDataSetProviderCab; Activas tClientDSCab con tClientDSCab.Active := TRUE; Añades los campos de la tabla al componente tClientDSCab ( botón derecho Fields Editor, luego botón derecho Add All Fields ). Fijate que el ultimo campo es del tipo tDataSetField, cojes el nombre de este campo y seleccionas el componente tClientDSDet y se lo asignas a la propiedad DataSetField. Ahora desactiva la tabla tClientDSCab y vuelvela a activar, verás que se activan tanto la tabla cabecera como detalle. Espero te sirva, en el foro hay muchos hilos al respecto, pero qte queria introducir un poco, si desconocias esto. Un saludo |
|
#3
|
|||
|
|||
|
ok
ok jose muchisimas gracias por el ejemplo, se me olvido mencionarte que estoy utilizando sql server 2000 como base de datos, de todas maneras tratare de adaptar el ejemplo k me haz dado, gracias por todo hermano...
![]() |
|
#4
|
|||
|
|||
|
de nada, te aconsejo te bajes la cara oculta de delphi 6. Aqui verás mas ejemplos sobre el tema.
Un saludo |
|
#5
|
||||
|
||||
|
Cita:
jeje... será "La cara oculta de Delphi 4" que es libre, la 6 tendrá que comprarla. http://www.terawiki.clubdelphi.com/a...elphi4.pdf.zip
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#6
|
|||
|
|||
|
es verdadm no recordaba cual era la gratuita.
|
|
#7
|
|||
|
|||
|
hola como estan, ya he logrado mi objetivo de hacer lo de la factura_detalle k comentaba mas arriba, la solucion fue en caso de k alguien le suceda lo mismo fue usar un componente llamado kbmMemTable no c si alguien lo conoce, bueno el caso es k este componente funciona como una tabla virtual en el cual tu mismo le escribes los campos y el tipo, y su funcion es como la de un tquery normar la diferencia es k trabaja desconectado de la bd, entonces el codigo que use para capturar en mi tabla factura_detalle fue el siguiente:
while not kmemtable1.eof do begin qfdetalle.close; qf.detalle.sql.clear; qfdetalle.sql.add('insert into factura_detalle'); qfdetalle.sql.add('values(' + quotedsrt(edit1.text) ......); qfdetalle.executesql; end; de manera que guardara en la factura_detalle tantos valores como haya en el grid.... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Enter como Tab en StrinGrid | m.ruiz | Varios | 2 | 18-07-2007 17:08:45 |
| Usar Enter como el tabulador | susy | Varios | 27 | 09-08-2006 09:39:17 |
| Validar/Grabar linea de un DBGrid con Enter | jadelphi | Varios | 4 | 26-05-2005 00:40:46 |
| Enter como Tab | tutuk | OOP | 7 | 19-12-2004 20:02:31 |
| Utilizar la tecla enter como el Tab | ckaki | Varios | 3 | 02-10-2003 17:25:42 |
|