SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: jander.atlas en Viernes 25 de Agosto de 2006, 17:19
-
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.
-
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:
-
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 (http://c.conclase.net/curso/index.php?cap=043)
:smartass:
-
Gracias a los dos por una respuesta tan rápida.Voy a echarle un ojo y ya os contaré.Muchas gracias.
-
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.