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 17-04-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 20
perillan Va por buen camino
Insertar Nuevo Registro

Tengo dos tablas (Maestro y detalle) en Interbase.

Cuando intento insertar un registro en la detalle completados los datos del primer registro al darle para que pase al segundo registro me sale el siguiente error y se me
bloquea el programa.

VIOLATION OF FOREINKEY CONSTRAINT "INTEG9" ON TABLE "TABLE"


Las tablas están unidas por dos IBDataSet y la relación entre ellas parece que funciona
bienn ya que en una búsqueda relaciona perfectamente las dos tablas.
Dichas tablas tienen un campo calculado cada una, pero en el primer registro cuando se meten los datos los pone bien.
Un saludo. Agustin

Última edición por perillan fecha: 17-04-2005 a las 17:56:23.
Responder Con Cita
  #2  
Antiguo 17-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues el error que te da, quiere decir que el registro que estás dando de alta en la tabla detalle no casa con el de la tabla maestro, es decir el campo que tienen en comun no es igual, es decir la ForeignKey.

Coloca 2 rejillas para visualizar a la vez maestro y detalle y así verás porque no casan.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 19-04-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 20
perillan Va por buen camino
Marcos:

He colocado otra rejilla y no veo ninguan anomalia. De todas las maneras soy nuevo con Interbase y lo mismo tengo algun problema en su diseño.
Te comento: Esta es una parte de la estructura de las bases de datos que me gustaria que le hechases un vistazo.
Tabla Padre
CREATE TABLE ARTICULOS(
CLAVE VARCHAR(5)NOT NULL,
ARTICLAVE INTEGER NOT NULL,
NOMBRE VARCHAR(70)NOT NULL,
NCODIGO VARCHAR(15),
NNOC VARCHAR(15),
NMATRICULA VARCHAR(17),
CONTROLZ VARCHAR(10),
FECHAALTA DATE,

PRIMARY KEY(ARTICLAVE))


Tabla hijo.
CREATE TABLE IMPLEMENTOS(
IMPLECLAVE INTEGER NOT NULL,
ARTICLAVE INTEGER NOT NULL,
NOMBRE VARCHAR(70)NOT NULL,
NCODIGO VARCHAR(15),
NNOC VARCHAR(15),
NMATRICULA VARCHAR(17),
CONTROLZ VARCHAR(10),
FECHAALTA DATE,
NSERIE VARCHAR(70),
NSERIE1 VARCHAR(70),
NSERIE2 VARCHAR(70),

PRIMARY KEY(IMPLECLAVE),
FOREIGN KEY(ARTICLAVE)REFERENCES ARTICULOS(ARTICLAVE))


Triggerr:
////////
CREATE GENERATOR G_ARTICULOS
//////////
CREATE TRIGGER NEWTRIGGER FOR ARTICULOS
BEFORE INSERT
AS
BEGIN
NEW.ARTICLAVE=GEN_ID(G_ARTICULOS,1);
END

///////////////
CREATE GENERATOR G_IMPLEMENTOS
/////////////
CREATE TRIGGER NEWTRIGGER FOR IMPLEMENTOS
BEFORE INSERT
AS
BEGIN
NEW.IMPLECLAVE=GEN_ID(G_IMPLEMENTOS,1);
END

Como en la rejilla no le veo ningun ploblema, he intentado hacer de nuevo las bases de datos que ves, y lo curioso es que si creo primero el Triggerr de la base articulos despues no medeja crear el de implementos, pero si primero creo el de implementos no me deja crear el de articulos.
Un saludo y muchas gracias
Agustin.

Última edición por perillan fecha: 19-04-2005 a las 21:42:09.
Responder Con Cita
  #4  
Antiguo 24-04-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 20
perillan Va por buen camino
Al final despues de dedicarle mucho tiempo y hacer de nuevo las bases de datos me he dado cuenta de que los trigeer creados con IB_SQL no funcionaban y quitandoselos y activandolos con las IBDataSet deja pasar de una linea a otra en la rejilla. La llave foránea sobre la que se hace el enlace de integridad entre las dos tablas creada con IB_sql la quite.

Pero sigo teniendo un problema:
El la rejilla de la tabla hija, cuando paso linea al siguiente registro del segundo al tercero, me cambia los valores que he metido por los del primer registro, pero despues si miro la base de datos la transacion la ha hecho correstamente metiendo los valores correctos, no los cambiados en la rejilla al cambiar el registro.
Alquien tiene alguna sugerencia ?.
Un saludo.

Última edición por perillan fecha: 26-04-2005 a las 21:56:12.
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 03:40:07.


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