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 11-10-2004
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 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
  #2  
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
Poder: 21
gluglu Va por buen camino
Acabo de probar otras cosas. Y creo que mi pregunta es mucho más facil de lo arriba mencionado:

Como 'Inserto' en un insert del IBUpdateSQL el campo clave del Maestro sin tener que introducirlo manualmente.

Lo acabo de probar con dos tablas independientes y tampoco logro añadir un registro a la tabla 'detalle' con la referencia correcta al 'maestro'.
Responder Con Cita
  #3  
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
Poder: 21
gluglu Va por buen camino
Creo que yo mismo me voy aclarando. Ya he averiguado que lo tengo que hacer mediante los 'parámetros' del TIBQuery.

La pregunta : qué debo poner en tiempo de diseño en alguna de las propiedad de IBQuery2.Params[0] para que me coja el valor de IBQuery1CATEGORYNO.Value?

Muchas gracias por vuestras ayudas.
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


La franja horaria es GMT +2. Ahora son las 09:36:10.


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