Ver Mensaje Individual
  #1  
Antiguo 11-10-2004
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 21
gluglu Va por buen camino
Maestro-Detalle 'virtual' con una sola tabla

Hola Amigos,

Tengo una tabla ('CATEGORIES') definida con los siguientes campos claves :
Código:
'CATEGORYNO'
'SUBCATEGORYNO'
junto con otros campos más que ahora no creo que importen.

Voy a tener 'Grupos' donde CATEGORYNO tendrá un valor y SUBCATEGORYNO siempre = 0.

Voy a tener 'Subcategorías' donde CATEGORYNO será igual a la clave del 'Grupo' correspondiente y varios posibles valores en SUBCATEGORYNO.

Tengo dos DBGrid's con dos IBQuery's asociados corretamente:
Para el DBGrid1 y su IBQuery1 asociado
Código:
select
  CATEGORYNO,
  SUBCATEGORYNO,
  ....
from CATEGORIES
  where SUBCATEGORYNO = 0
y para el DBGrid2 con su IBQuery2 asociado
Código:
select
  SUBCATEGORYNO
  ....
from CATEGORIES
where 
  CATEGORYNO = :CATEGORYNO and
  SUBCATEGORYNO <> 0
En el DBGrid2 no muestro 'CATEGORYNO' ya que en el mismo Form veo los dos DBGrid's.

Tengo, claro está, también asociados dos DataSource independientes para cada DBGrid, y el segundo relacionado con el primer DataSource mediante
Código:
IBQuery2.DataSource := DataSource1
Todo esto me funciona correctamente hasta que INSERTO un nuevo registro en el DBGrid2 mediante un IBUpdateSQL asociado:
Código:
insert into CATEGORIES
  (CATEGORYNO, SUBCATEGORYNO, ...)
values
  (:CATEGORYNO, :SUBCATEGORYNO, ...)
Esto no funciona porque me toma el valor para CATEGORYNO = null.

Mi pregunta es: Tiene solución mi problema? Lo que quiero es que me 'Inserte' en el numero registro que añado al DBGrid2 los valores CATEGORYNO del DBGrid1 elegido y el nuevo valor de SUBCATEGORYNO que acabo de introducir en el DBGrid2.

Algo así como :
Código:
insert into CATEGORIES
  (CATEGORYNO, SUBCATEGORYNO, ...)
values
  (DBGrid1.Columns[0].Value, :SUBCATEGORYNO, ...)
ó
  (IBQuery1CATEGORYNO.Value, :SUBCATEGORYNO, ...)
Claro está que estas dos instrucciones arriba indicadas me dan error.
Se puede hacer? o debería descartar esta idea y crearme dos tablas diferentes con una referencia externa?.

Saludos a todos.
Responder Con Cita