Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2007
djanp djanp is offline
Miembro
 
Registrado: nov 2007
Posts: 17
Poder: 0
djanp Va por buen camino
unir dos tablas

mmm no se si conseguire explicarme,
primero hola a todos y gracias por ayudar

estoy haciendo un programa de facturacion en delphi, sobre access
tengo un form con un pagecontrol, y 2 pestañas
la 1ª es una tabla con las facturas del año
la 2ª es con los datos de la factura elegida antes y otra tabla sobre los articulos vendidos en esa factura

pues mi duda es como accedo al valor actual del registro de la tabla de facturas, para utilizarlo en la busqueda de los articulos de esa factura
alguien sabe el codigo a usar?
me explique o es un caos??
Responder Con Cita
  #2  
Antiguo 28-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Creo que lo que necesitas es unir los DataSets a travez del DataSource.

- Supongamos que la cabecera tiene un campo ID_CABECERA que identifica a cada registro.
- Supongamos que el detalle de la factura tiene un campo ID_CABECERA en el que guarda cual es la cabecera a la que corresponde.

TCabecera - Tabla cabecera. Es un DataSet, TTable
SQL='SELECT ID_CABECERA,NOMBRE,DIRECCION,IMPORTE,... FROM CABECERA_FACTURA'

DSCabecera - DataSource
DataSet=TCabecera

TDetalle - Tabla detalle. Es un DataSet, TTable
SQL='SELECT ARTICULO,CANTIDAD,IMPORTE,... FROM DETALLE_FACTURA WHERE ID_CABECERA=?ID_CABECERA'
DataSource=DSCabecera

DSDetalle - DataSource de TDetalle
DataSet=TDetalle

De este modo, cuando te muevas a la siguiente cabecera, automaticamente se moverá la tabla de detalle, mostrándote los detalles de esa factura.
Nota: El parámetro ?ID_CABECERA se debe llamar igual que el campo en la cabecera.

De todos modos, si quieres acceder a los datos de la tabla de facturas solo debes ver que es lo que tiene TCabecera.
TCabecera.FieldByName('NOMBRE').AsString, por ejemplo.

Última edición por duilioisola fecha: 28-11-2007 a las 11:24:01.
Responder Con Cita
  #3  
Antiguo 28-11-2007
djanp djanp is offline
Miembro
 
Registrado: nov 2007
Posts: 17
Poder: 0
djanp Va por buen camino
No se si es q no me entero o q no me sale


a ver, yo tengo una tabla "Cabecera Facturacion"(que seria tcabecera en tu ejemplo)
doy por hecho, que este hace su propia sql, dado que lo saca solo, no me molesto en hacerlo

de ahi, lo llevo a un DataSource DStabla

por otro lado esta Query "Lineas Facturacion"(esta la tengo como una Query, dado q quiero sacar solo los que cumplen una condicion)

select * from "Lineas Facturacion" L
where L.Numero = ?Numero

y una Datasource DSquery
por ultimo un dbgrid que coge info de DSquery

Pues me da error al poner esa consulta en el query Parameter not set in query string.

probe ha poner otra Query en vez de la tabla, pero aun asi da el mismo error, y ni idea de porque
Responder Con Cita
  #4  
Antiguo 28-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
No sé si me estoy perdiendo algo, pero en un SQL, un parámetro se especifica mendiante los dos puntos seguido de un nombre, ustedes usan el carácter interrogación

Código Delphi [-]
query1.sql.text := 'select * from "Lineas Facturacion" L where L.Numero = :Numero';
query1.Parambyname('Numero').asinteger := 3;  // **ver abajo
query1.Open;

** En caso de usar relaciones Maestro detalle en 2 consultas, puede omitirse esa línea, siempre y cuando la consulta maestra tenga el mismo nombre para ese campo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 28-11-2007 a las 14:06:33.
Responder Con Cita
  #5  
Antiguo 28-11-2007
djanp djanp is offline
Miembro
 
Registrado: nov 2007
Posts: 17
Poder: 0
djanp Va por buen camino
si ahora q lo dices yo he visto por ahi q se utilizan los 2 puntos, pero di por hecho q sabiais mas que yo y seria una forma de hacerlo

acabo de resolver el problema de esta forma

2 tablas: 1 sobre cabeceras
otra sobre detalles
en la segunda puse como dijo lepe relaciones Maestro...o como se diga, la cosa es q he conseguido q se haga un join por el campo numero y ya me aparece bien, gracias a los 2 por la ayuda, veamos si no me vuelve a asaltar la duda
Responder Con Cita
  #6  
Antiguo 28-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Perdón por liarte con el tema del interrogante en los parámetros.
Yo trabajo con Firebird y los componentes FreeIB y utilizo este símbolo.
De todos modos, creo que también funciona con "dos puntos".

Felicitaciones por haberlo solucionado!
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
Unir dos tablas en interbase Manuel Firebird e Interbase 4 03-12-2007 23:20:33
Unir varias tablas en una sola maravert SQL 1 04-01-2007 01:42:22
necesito unir varias tablas karla SQL 2 31-12-2006 11:49:23
unir dos tablas en una consulta paradox 7 Jorge Taveras Tablas planas 1 01-03-2005 07:29:24
unir tablas Mario1980 Conexión con bases de datos 8 22-10-2004 10:36:45


La franja horaria es GMT +2. Ahora son las 08:08:35.


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