 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Invitado Invitado
|
Publicado: Vie 11 Jun, 2004 10:04 am Asunto: Violación de clave ajena |
|
|
Hola a todos!
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 |
|
| Volver arriba |
|
 |
Invitado Invitado
|
Publicado: Dom 13 Jun, 2004 12:43 pm Asunto: |
|
|
Hola, soy la chica que puso el mensaje. Estoy algo preocupadilla porque parece que nadie sabe cómo solucionar el problema.. O quizá es que no me he expresado bien, o que no es una pregunta adecuada en este foro, o no sé, mil cosas.
La cuestión es que supongo que alguien habrá puesto alguna vez una clave ajena a null, y si me pudiese indicar como hacerlo para que no me diese uuna excepción, o explicarme por qué ocurre la que comento en el anterior mensaje, de veras que me sería de mucha ayuda, puesto que estoy atascada enn ese punto y no puedo continuar programando... |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Dom 13 Jun, 2004 4:06 pm Asunto: |
|
|
Mira, es cuestion que digas. con que componentes accedes desde builder.. y si manejas directamente el Interbase..
mi pregunta es utilizas 2 apliaciones..
1.- es Interbase Natural (sin programa y nada)
2.- estas haciendo un programa con componentes Dataset(cuales son)
para que te pueda indicar. puede que el problema esta dentro del BDE, por donde estas haciendo el enlace..
saludos.. _________________
 |
|
| Volver arriba |
|
 |
Invitado Invitado
|
Publicado: Dom 13 Jun, 2004 5:01 pm Asunto: |
|
|
Pues utilizo el interbase 6, el que viene con el builder, yo lo instalé todo así sin mas
En la aplicación estoy utlizando un data module, donde tengo un IBDataBase, un IBTransaction asociado a la base de datos y una serie de IBTables, a las que accedo incluyendo el data module en la unidad correspondiente y con ModuloDatos->TablaEquipo por ejemplo.
Para hacer lo que comento de poner el idequipo del jugador a null, sencillamente muestro jugadores en una lista, y al pulsar el botón, a partir de cada uno de sus DNI's, hago un locate en la tabla Jugador y luego ya hago lo que comentaba en el primer mensaje.
Espero que sea esto lo que me preguntabas...
Saludos |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 14 Jun, 2004 6:20 am Asunto: |
|
|
NO LE PONGAS NULL..ponle un valor imposible o no usado en tu aplicacion como por ejemplo 99 o -1 o 0
Aun no he entendido por qu etienes que ponerlo a null si es una consulta
SELECT dni,nombre FROM tutabla _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Lun 14 Jun, 2004 6:26 am Asunto: |
|
|
YA ENTENDI..DISCULPA
| Cita: | | El hecho es que si quiero quitar a un jugador de un equipo, accedo a la tabla jugadores y hago |
Ahi esta el kernel del asunto.. pues como puse en el mensaje anterior..jamas vas a poder ponerle null, debido a la definicion de la tabla, pero el mismo efecto haces si por definicion haces que 0 sea igual a "SIN EQUIPO" (como regla de negocio)
Me explico? _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Invitado Invitado
|
Publicado: Lun 14 Jun, 2004 9:21 am Asunto: |
|
|
Ya pero el problema es que no puedo poner el idequipo a 0 puesto que es clave ajena, entonces sólo admite valores que aparezcan en la tabla de equipos. Tampoco es solución crear un equipo con idequipo a 0 puesto que el nombre del equipo, y la categoría son obligatorios en la tabla equipo, y por lo tanto no los puedo dejar vacíos, y si pongo cualquier otra cosa, tendría efectos laterales que no deseo (por ejemplo, en determinados formularios cargo los items de los combobox para escoger partir de una consulta a la tabla...)
Yo ya estoy de los nervios perdida, porque esto es para una asignatura de la universidad (la última que me queda para acabar) y el profesor no tiene ni idea de Builder (es de los de Visual), y no me puede ayudar...
Espero que entre todos podamos ir descubriendo una solución a este problema que me está volviendo loca....
Muchas gracias por vuestra atención. |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Lun 14 Jun, 2004 9:51 am Asunto: |
|
|
Invitado por favor podrías poner, toda la definición de las 2 tablas con las respectivas restricciones de integridad.
Gracias. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
Invitado Invitado
|
Publicado: Lun 14 Jun, 2004 4:50 pm Asunto: |
|
|
Hla!
Soy yo de nuevo. Parece que ya he solucionado el problema...
Al final puse ModuloDatos->TablaJugadorIDEQUIPO->Clear() (o sea, borrar el campo) y no me lanza ninguna excepción y parece que funciona...
No sé por qué no se me había ocurrido antes, supongo que será que me ocequé con lo otro y no era capaz de buscar una solución alternativa.
De todas maneras, un millón de gracias por vuestra ayuda. Si me surge algún otro problemilla al respecto, ya sé donde acudir...
Si de todas maneras quereis que os ponga la definción de las tablas, avisadme....
Un saludo |
|
| Volver arriba |
|
 |
Invitado Invitado
|
Publicado: Lun 14 Jun, 2004 4:50 pm Asunto: |
|
|
Hla!
Soy yo de nuevo. Parece que ya he solucionado el problema...
Al final puse ModuloDatos->TablaJugadorIDEQUIPO->Clear() (o sea, borrar el campo) y no me lanza ninguna excepción y parece que funciona...
No sé por qué no se me había ocurrido antes, supongo que será que me ocequé con lo otro y no era capaz de buscar una solución alternativa.
De todas maneras, un millón de gracias por vuestra ayuda. Si me surge algún otro problemilla al respecto, ya sé donde acudir...
Si de todas maneras quereis que os ponga la definción de las tablas, avisadme....
Un saludo |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|