Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2004
melanthea melanthea is offline
Miembro
 
Registrado: jun 2004
Posts: 19
Poder: 0
melanthea Va por buen camino
Problemas violación clave ajena desde Builder

Hola a todos!

Es el primer mensaje que pongo en este foro... A ver si alguien sabe por qué me se me lanza una excepción en mi programa. Estoy haciendo una aplicación en la cual en un determinado momento, quiero poner a null un campo en la tabla y ese campo es clave ajena pero no es un campo obligatorio en la tabla que estoy modificando.
Es decir, yo tengo una tabla "Equipo" donde idEquipo es un smallint y es la clave primaria de esa tabla (y por lo tanto, es not null). Luego tengo una tabla jugador, donde idequipo es foreign key, pero no la declaro como obligatoria en esa tabla.
El hecho es que si quiero quitar a un jugador de un equipo, accedo a la tabla jugadores y hago
Código:...
TablaJugador->Edit();
TablaJugador->FieldValues["IDEQUIPO"]=NULL;
TablaJugador->Post();
...

Builder me lanza una excepción cuando hago el Post diciendo que violo la clave ajena de la tabla jugador... Sin embargo, desde Interbase que es la base de datos que estoy utilizando, puedo acceder a los campos de la tabla y borrar el idequipo del jugador sin ningún problema, dejándolo a null tal y como yo quiero.

Estoy ya tirándome de los pelos, porque llevo liada con este problema no sé ya cuanto tiempo y no se me ocurre ninguna manera de solucionarlo. Si me pudieses ayudar estaría enormemente agradecida

Gracias por vuestra atención
Responder Con Cita
  #2  
Antiguo 13-06-2004
santana santana is offline
No confirmado
 
Registrado: nov 2003
Posts: 1.030
Poder: 0
santana cantidad desconocida en este momento
Hola, melanthea.
Recibe la bienvenida a los foros y deja de tirarte de los pelos

Prueba a ver si deja de darte la excepción no utilizando la relación maestro-detalle, anulando las asignaciones de MasterSource y MasterFields en tus objetos Ttable.

Saludos.

Última edición por santana fecha: 13-06-2004 a las 19:26:51.
Responder Con Cita
  #3  
Antiguo 13-06-2004
melanthea melanthea is offline
Miembro
 
Registrado: jun 2004
Posts: 19
Poder: 0
melanthea Va por buen camino
No tengo mis objetos IBTable con MasterSource y Masterfields asignados. Yo sencillamente lo que hice fue meter las tablas en un Data Module, pero nada más, no establecí ninguna relación entre ellas puesto que las creé directamente en Interbase y por lo tanto las relaciones entre ellas las establecí ahí (con claves ajenas).
Muchas gracias por animarme, pero cómo no me voy a tirar de los pelos si llevo intentando solucionar este problema ya ni me acuerdo cuannto tiempo, y es para la última asignatura que me queda para terminar la carrera....
I need help!
Un saludo
Responder Con Cita
  #4  
Antiguo 13-06-2004
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
Mira a ver si por un casual te funciona esto otro:

Código:
TablaJugador->Edit();
TablaJugadorIDEQUIPO.Clear;
TablaJugador->Post();
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
  #5  
Antiguo 14-06-2004
melanthea melanthea is offline
Miembro
 
Registrado: jun 2004
Posts: 19
Poder: 0
melanthea Va por buen camino
Hola!

Muchiiiiiiiiiiiiiiiiiiiiisimas gracias . Parece que ya me funciona con lo de Clear (en realidad es TablaJugadorIDEQUIPO->Clear() ). De momento, no me dio ningún tipo de excepción como antes, y mirando en el Interbase, si que me guarda el campo a null.

Si al final apruebo, os debo la mitad de la nota jejeje.

En serio que un montonazo de gracias porque estaba atascada con esa historia y tenía que hacerlo en bastantes sitios de la aplicación...

Bueno, aprovechando vuestra amabilidad, otra preguntilla que creo q es más sencilla (pero como decís en la guía de estlos, en otro hilo la pongo )

Saludos
Responder Con Cita
  #6  
Antiguo 25-06-2004
Avatar de barman
barman barman is offline
Miembro
 
Registrado: may 2003
Posts: 139
Poder: 21
barman Va por buen camino
TablaJugador->Edit();
TablaJugador->FieldValues["IDEQUIPO"]=NULL;
TablaJugador->Post();


TablaJugador->Edit();
TablaJugador->FieldByName["IDEQUIPO"] ->Value=NULL;
TablaJugador->Post();
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 08:33:20.


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