Asunto: error a grabar numero de factura (Registro Repetido)
estoy tratando de resolver de loq ue se me repite el numero de factura, coloque el campo de la factura como único y ahora cuando se hace la consulta si por casualidad se repite me da un error de que no puede grabarse pero quisiera saber como hago para que al producirse el error limpie la consulta otra vez sin tener que cerrar el programa y abrirlo si no que vuelva a ejecutar la consulta hasta que se logre grabar
Código:
procedure Todespacho.BitBtn1Click(Sender: TObject);
var
AccExclusivo:Boolean;
proximonumero:Integer;
numero:Integer;
tord:Real;
tpart:Real;
begin
with Data.sqcaval do
begin
Close;
SQL.Clear;
SQL.Add('SELECT');
SQL.Add('MAX(IDORDEN) as idorden');
SQL.Add(' FROM cartaavaleulalia');
Open;
proximonumero := FieldByName('IDORDEN').AsInteger +1;
numero := 0;
end;
Asunto: Re: error a grabar numero de factura (Registro Repetido)
Anuncios
webmasterplc escribió:
estoy tratando de resolver de loq ue se me repite el numero de factura, coloque el campo de la factura como único y ahora cuando se hace la consulta si por casualidad se repite me da un error de que no puede grabarse pero quisiera saber como hago para que al producirse el error limpie la consulta otra vez sin tener que cerrar el programa y abrirlo si no que vuelva a ejecutar la consulta hasta que se logre grabar
Código:
procedure Todespacho.BitBtn1Click(Sender: TObject);
var
AccExclusivo:Boolean;
proximonumero:Integer;
numero:Integer;
tord:Real;
tpart:Real;
begin
with Data.sqcaval do
begin
Close;
SQL.Clear;
SQL.Add('SELECT');
SQL.Add('MAX(IDORDEN) as idorden');
SQL.Add(' FROM cartaavaleulalia');
Open;
proximonumero := FieldByName('IDORDEN').AsInteger +1;
numero := 0;
end;
En el ejemplo anterior capturamos el error 1062 equivalente al Key Violation de EZDatabaseError, en tu caso tendrás que cambiar "EZDatabaseError" por el correspondiente al componente de acceso a datos que uses.
Aquí tienes otra positibidad, en el evento OnPostError:
Aunque no es recomendable usar el evento OnPostError para volver a intentar hacer un post (validación) ó insert (nuevo registro), pues puedes provocar un "bucle infinito". Lo ideal es que consigas que el código de inserción de nuevo registro nunca te dé el error de clave duplicada.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A