• Jueves 14 de Noviembre de 2024, 23:58

Autor Tema:  Error Unique Primary Key  (Leído 1927 veces)

jander.atlas

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Error Unique Primary Key
« en: Viernes 25 de Agosto de 2006, 17:19 »
0
Hola.Tengo una aplicación en la que tengo una base de datos hecha en Interbase.
La inserción de valores la realizo bien, pero el problema viene en que hay valores (tuplas) que no se pueden repetir.Para ello está definida la clave primary.
Ahora lo que yo hacer es que cuando el usuario trate de meter unos valores que ya existan, que en vez de aparecer la excepcion de "Error unique primary key.." que pueda  aparecer un mensaje diciendo por ejemplo "Valores repetidos" sin que rompa el programa.
Lo que no se es donde ni como se trata, si es con el builder o con el interbase...
Gracias.

Linspire

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
    • http://www.cedrela.com.mx
Re: Error Unique Primary Key
« Respuesta #1 en: Viernes 25 de Agosto de 2006, 17:30 »
0
Bueno, en mi caso nunca he hecho tablas en Interbase pero supongo que puedes hacer una consulta SQL en donde busques el campo introducido en la tabla y si ya existe que le mande un mensaje.

algo así como

SELECT Nombre FROM tabla
WHERE Nombre="+campo+"

AnsiString campo=Edit1->Text;
if(Query1->SQL->Free()==true)
tabla->Post();
else ShowMessage("Este nombre ya existe");

Bueno, es solo una idea, espero pueda servirte  :kicking:  :comp:
[size=109]My Blog de Programación[/i][/b][/size]
´


[size=109]Tan solo quiero pensar que todo es un sueño y que no quiero despertar
porque quiero controlarlo como yo quiera.
[/size]

Todo es posible, lo imposible solo cuesta un poco más. Dan Drown.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Error Unique Primary Key
« Respuesta #2 en: Viernes 25 de Agosto de 2006, 17:30 »
0
Con lo que tu llamas el builder.

usa una sentencia try catch para capturar el error en la instruccion que se genera.

Sino sabes muy bien como capturar excepciones en C++ con las sentencias que te dije, aca tienes el manual:

http://c.conclase.net/curso/index.php?cap=043

 :smartass:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

jander.atlas

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Error Unique Primary Key
« Respuesta #3 en: Viernes 25 de Agosto de 2006, 17:35 »
0
Gracias a los dos por una respuesta tan rápida.Voy a echarle un ojo y ya os contaré.Muchas gracias.

jander.atlas

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Error Unique Primary Key
« Respuesta #4 en: Lunes 28 de Agosto de 2006, 13:18 »
0
Hola, ya lo he solucionado finalmente.Utilice el tratamiento de excepciones ke me comentaba juanK utilizando este codigo:

          //Cada vez que tratamos de ejecutar la consulta de insercion de datos
           try{
                   IBQuery1->Prepare();
                   IBQuery1->Open();
                 }



             catch(...)

                {
                 
                  ShowMessage ("SE ESTAN INSERTANDO VALORES DUPLICADOS");
                }

Pero para que no te aparezca el mensaje de la excepción antes del nuestro he hecho lo siguiente:

seleccionaremos Tools | Debuggber Options y abriremos la carpeta OSExceptions.
Ahí debemos desmarcar la casilla de abajo a la izquierda que pone integrated debugging.
Con esto indicamos al depurador de C++ Builder que nuestro programa se encargará de manejar las excepciones C++ que ocurran.