Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   crear maestro/detalle en IBExperts y pasarlo a delphi (https://www.clubdelphi.com/foros/showthread.php?t=48692)

José Luis Garcí 02-10-2007 09:03:26

crear maestro/detalle en IBExperts y pasarlo a delphi
 
Hola a todos compañeros, mi primera duda es la siguiente, creo los dominios en IBExperts, creo las tablas y sus indices primarios( en algunas), luego paso a la pestaña mestro/detalle (traduccion muy libre:p) y me dice que no esta creada una especiee de vinculación con otra tabla, paso al menu a relacionar visualmente los campos de las tablas, y los cmpos que quiero que aparezcan, y de resultado me da la visión de la tabla completa no en forma maestro/detalle, que es lo que quiero.

La segunda, es como se hace para pasarlo a mi delphi 6, se hacerlo con tablas paradox, pero ni idea con firebird.

Gracias de antemano por vuestra ayuda.

duilioisola 02-10-2007 10:21:59

No trabajo con IBExperts, pero lo que te está pidiendo cuando dice
Cita:

o esta creada una especiee de vinculación con otra tabla
es que te falta crear la FK (Foreign Key) en las tablas detalle.

Las tablas cabecera deben tener una PK (Primary Key)
Las tablas detale deben tener una FK relacionada con la PK de la cabecera.

Ejemplo:
Código:

cabecera (empresa,ejercicio,nro_doc,dato1,dato2,dato3)
detalle (empresa,ejercicio,nro_doc,linea,detalle1,detalle2,detalle3)

cabeceraPK (empresa,ejercicio,nro_doc)
detallePK(empresa,ejercicio,nro_doc,linea)
detalleFK(empresa,ejercicio,nro_doc --> cabecera(empresa,ejercicio,nro_doc))


duilioisola 02-10-2007 10:27:10

un ejemplo concreto:
Código SQL [-]
create table terceros(
     TERCERO CONTADORES,
     NOMBRE TITULOS,
     ...);

/* Primary Key */

alter table terceros add constraint PK_TERCEROS primary key (TERCERO);

create table terceros_direcciones(
     TERCERO CONTADORES,
     DIRECCION MINI_CONTADORES,
     DIR_NOMBRE TITULOS_40,
     ...);

/* Primary Key */

alter table terceros_direcciones add constraint PK_TERCEROS_DIRECCIONES primary key (TERCERO, DIRECCION);

/* Foreign Key */

alter table terceros_direcciones add constraint FK_TERCEROS_DIRECCIONES_TER foreign key (TERCERO) references TERCEROS(TERCERO);

duilioisola 02-10-2007 10:33:22

Para la segunda cuestión:

- Creas las dos tablas con Cabecera y Detalle.
- Creas un DataSource para cada uno,DSCabecera y DSDetalle (por lo menos para la Cabecera)
- En la tabla detalle pones el origen de datos al Datasource de la Cabecera
--- Detalle.DataSource = DSCabecera
- En el SQL pones :
--- En cabecera "select clave,campo1,campo2,... from cabecera where ..."
--- En el detalle "select clavecab,clavedet,campo1,campo2,... from detalle where clavecab=:clave"

Cuando abras las dos tablas, el detalle se unirá automaticamente al detalle.
Nota el/los campo/s clave de la cabecera se tienen que llamar igual que los parámetros en el where del detalle.

José Luis Garcí 02-10-2007 20:49:47

gracias por tu rapida respuesta duilioisola me ha servido en partepara solucionar el problema la parte del indice FK en la tabla detalle, la segunda parte me perdi, me imagino que te referias a crear en codigo, ya que no especificabas el componente para las tablas, te comento como lo solucione

use dos Ibtables, una para el maestro y otra la parte deldetalle, etableci en cada una su indice en indexname, en la detalle en mastersource hago referencia a la datasource maestro, y en masterfield, estableco el joined fields de los campos del indice y listo.

Espero, me corrijas, si esta mal ocomo lo hubiese echo, por favor especifica componentes, ya que en en firebird, soy neo total.

gracias por tu respuesta.

duilioisola 02-10-2007 21:41:57

De nada, es un placer poder ayudar!

Supongo que está bien com lo haces. Yo uso otros componentes (FreeIB), pero si te funciona correctamente, sigue adelante.
Si te tropiezas con algún otro problema, ya sabes... aquí estamos.


La franja horaria es GMT +2. Ahora son las 04:51:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi