PDA

Ver la Versión Completa : violation of PRIMARY or UNIQUE KEY


StartKill
11-02-2004, 23:21:17
Hola amigos :cool:

Estoy muy contento de que mi aplicacion se "autocontrole" cuando repito algun codigo.... (Tengo entendido que el servidor de encarga de eso). :p

El problema que tengo es: Que en todos mis formularios cuando repito algun codigo me envia "violation of PRIMARY or UNIQUE KEY..." cosa que es correcta, pero tengo otro formulario que cuando repito el codigo no envia el error pero si controla que no se duplique es decir no hace el insert.

Si no me explique bien: No me estoy quejando que envie el error, mas bien me estoy quejando de que no envie el error----pero sí el server controla que no se repita dos codigo iguales... :(

Your Friend

StartKill :cool:
Lima-Perú

StartKill
27-02-2004, 18:36:24
Hola,
Cuando hablaba de codigo repetido me referia al codigo/valor de un campo/clave... por si no me deje entender :rolleyes:

En mi formulario tengo un bottom para grabar mi registro nuevo.

procedure TfrmRuteos_Single.BitBtn1Click(Sender: TObject);
begin
__try
____frmRuteos.IBQuery1.Post;
____frmRuteos.IBTransaction1.CommitRetaining;
____frmRuteos.close;
__except
____frmRuteos.IBTransaction1.RollbackRetaining;
____frmRuteos.IBQuery1.Edit;
____raise; // esta linea me faltó escribir
__end;
end;

Si omitia la linea "RAISE" el ejecutable no emitia el error del server y el usuario no sabia que habia pasado.

Ahora, tengo otra consulta:
No quise abrir otro Hilo, por que creo que es del mismo, Como personalizo mis errores...?

Gracias,

Your Friend :cool:

StartKill
Lima-Perú

__cadetill
28-02-2004, 02:25:55
por ejemplo


try
except
on E:Exception do
ShowMessage('mi error personalizado. Mensaje de error:'#13#13 + E.Message);
end;


Por supuesto puedes capturar el tipo de error que quieras y, sino lo es, lanzar el raise

try
except
on E:EDivByZero do
ShowMessage('mi error personalizado. Mensaje de error:'#13#13 + E.Message)
else raise
end;

ramiretor
01-03-2004, 21:14:10
Hola:
Aparte de lo que te dice Cadetill, puedes usar un archivo que guarde el error, pero para agarrar el error lo pones en un try. Por ejemplo:

var
Mensaje: TStringList;

begin
....


try
except on E:Exception do
begin
Mensaje.Add(E.Message);
Mensaje.SaveToFile('miarchivo.txt');
end;
end;

StartKill
03-03-2004, 02:04:35
Gracias, muy buena sus acotes.. sin menospreciar lo que indica nuestro amigo Cadetill, ...me gusto la idea de Ramiretor de guardar los errores en un archivo. :)

Your friend :cool:

StartKill
Lima-Perú