Ver Mensaje Individual
  #1  
Antiguo 11-11-2003
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Reputación: 21
Giniromero Va por buen camino
guardar registros en un IBDataSet que es consulta a varias tablas??

Hola,

Estoy trabajando con IB 7, en dialecto SQL 3, con Delphi 6.

En la aplicación necesito tener una consulta a varias tablas de mi base de datos. Los registros resultantes de esta consulta se muestran en un DBGrid, y en unos DBEdit. Pero luego necesito que, en el mismo IBDataSet, se guardan nuevos registros o se modifiquen los ya existentes.

El motivo de hacer la consulta, es por que la tabla principal, tiene guardado en sus campos, solo códigos. Estos códigos, que son numéricos, tienen su significado o interpretación definidos en las tablas "secundarias", a las que llama, para que se muestre en el programa, no el campo con el código numérico, sino el campo de la tabla secundaria con el significado escrito vinculado a este código.

Al insertar o modificar, necesito que, lo que aparece en los dbEdit esto es, los campos descriptivos, de alguna manera, busquen en las tablas secundarias correspondientes, el código que tienen asociado y escriba dicho código, en el campo asociado, de la tabla principal.

El código que tengo para esto en SelectSQL es:

select D1.NUMALU, D1.CODIGO, D1.NUMGRUP, D1.FECINI, D1.CAUBAJA,
D1.FECFIN, D1.CODVTO, D1.NUMEMPLEADO, D2.PRODUCTO, D2.ALIAS,
D2.NUMGRUP, D3.PRODUCTO, D3.DESCRIP, D4.CODIGO, D4.DESCRIPCION,
D5.NUMGRUP, D5.DESCRIPCION, D5.CODVTO, D6.NUMEMPLEADO, D6.PROFESOR
from MATRI D1
inner join GRUPOS D2 on (D2.NUMGRUP = D1.NUMGRUP)
inner join CAUBAJA D4 on (D4.CODIGO = D1.CAUBAJA)
inner join PROFE D6 on (D6.NUMEMPLEADO = D1.NUMEMPLEADO)
inner join PRODU D3 on (D3.PRODUCTO = D2.PRODUCTO)
inner join VTOS D5 on (D5.NUMGRUP = D1.NUMGRUP and D5.CODVTO = D1.CODVTO)
where
(D1.NUMALU=:NUMALU)
order by D1.NUMALU, D1.CODIGO


Por ejemplo. El campo, d1.numgrup (de la tabla principal TbMatri), busca, su valor actual, en el campo D2.numgrup (de la tabla secundaria grupos). En la aplicación se muestra este campo, d2.alias, que es la descripción del valor que tiene d1.numgrup.

Lo que necesito es que, cuando el usuario, a través del programa inserte un registro nuevo, o modifique el valor del campo d2.Alias, se identifique el valor que tiene en d2.numgrup en ese registro y lo guarda en d1.numgrup.

Lo que tengo en InsertSQL es:

insert into MATRI
(NUMALU, CODIGO, NUMGRUP, FECINI, CAUBAJA, FECFIN, CODVTO, NUMEMPLEADO)
values
(:NUMALU, :CODIGO, :NUMGRUP, :FECINI, :CAUBAJA, :FECFIN, :CODVTO, :NUMEMPLEADO)


y lo que tengo en ModifySQL es:


set
NUMALU = :NUMALU,
CODIGO = :CODIGO,
NUMGRUP = :NUMGRUP,
FECINI = :FECINI,
CAUBAJA = :CAUBAJA,
FECFIN = :FECFIN,
CODVTO = :CODVTO,
NUMEMPLEADO = :NUMEMPLEADO
where
NUMALU = :OLD_NUMALU and
CODIGO = :OLD_CODIGO


Espero haberme explicado suficientemente bien, pues el tema es algo farragoso.


Muchas gracias, de ante mano, por la ayuda.

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
Responder Con Cita