Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   violation of PRIMARY or UNIQUE KEY (https://www.clubdelphi.com/foros/showthread.php?t=7332)

StartKill 11-02-2004 23:21:17

violation of PRIMARY or UNIQUE KEY
 
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

Código:

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
Código:

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ú


La franja horaria es GMT +2. Ahora son las 15:49:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi