PDA

Ver la Versión Completa : excepcion con ado


raffagia
04-02-2008, 05:59:59
Hola, despues de haber leido la mayoria de los post en cuanto al manejo de excepciones sigo sin poder resolver el problema.
Tengo ke insertar tuplas en una tabla pero no repetir tuplas existentes.
o sea ,, es un insert ke hago sin revisar ke la clave primaria no se repita, lo ke kiero es poder manejar la exepcion de CLAVE REPETIDA.
uso, Sqlserver 2000 y ADO conection.
el codigo es:
Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TForm1.Button2Click(Sender: TObject);
begin insert.Close; insert.Parameters.ParamByName('id').value:= 10;
insert.Parameters.ParamByName('nombre').value:= 10;
insert.Parameters.ParamByName('telefono').value:= 10;
insert.Parameters.ParamByName('email').value:= 10;
insert.Prepared;

try insert.ExecSQL

except on e:Exception do begin MessageDlg('El registro que desea editar, ya está',mtError, [mbOK], 0);
raise;
end;


end;
end;


haciendo esto , no se porke nunca catura la excepcion y siempre se detiene el programa y sale el cartel de error del debuger "EOLEEXCEPTION"..

gracias por leer.
saludos

RAFFA

Al González
04-02-2008, 06:49:59
¡Hola Raffa!

De entrada se recomienda algo más de propiedad a la hora de hacer las preguntas. Ya sabes, no usar "k"s y revisar la semántica del texto para que quede amigablemente legible. Hacer esto es una muestra de respeto hacia los demás y habla bien de ti.

Respondiendo a tu pregunta, es probable que lo que estás viendo sea el mensaje que muestra el depurador cuando se compila y ejecuta una aplicación desde el entorno de Delphi y ocurre una excepción. Dicho mensaje es para ti, pero al usuario no le aparecerá. El usuario verá el que viene en seguida y que has colocado en la sección Except.

Podrás distinguir la diferencia si ejecutas el archivo .exe generado desde fuera de Delphi (aunque hay otra forma de evitar los mensajes de excepción del depurador). De cualquier manera, no es algo que moleste demasiado. Si le das continuar observarás que aparece el mensaje que tú programaste.

Claro, todo esto siempre y cuando la excepción OLE esté siendo disparada por la sentencia "insert.ExecSQL", como se infiere que es a falta de mayor información de tu parte.

Mucho éxito en tu proyecto, no dejes de comentarnos sobre tus avances.

Al González.

raffagia
12-02-2008, 02:23:31
gracias por la respuesta. la verdad que nunca imagine que podria resultar diferente la ejecucion desde el compilador y desde el propio ejecutable.

muchisimas gracias por la pronta respuesta. y pido disculpas por lo escrito.
saludos
RAFFA