Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - error a grabar numero de factura (Registro Repetido)
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information error a grabar numero de factura (Registro Repetido)

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
webmasterplc
Excelente usuario


Registrado: Oct 31, 2009
Mensajes: 26

Asunto: error a grabar numero de factura (Registro Repetido) Responder citando

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;

   begin

       Data.orden.Append;
       Data.mtiva.Append;
       Data.ttrans.Append;
       Data.orden.FieldByname('programa').AsString := programa.LookupValue;
       Data.ejecucion.FieldByname('programa').AsString := programa.LookupValue;
       Data.orden.FieldByname('presupuesto').AsString := presupuesto.LookupValue;
       Data.ejecucion.FieldByname('presupuesto').AsString := presupuesto.LookupValue;
MensajePublicado:
Vie Feb 25, 2011 5:01 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: error a grabar numero de factura (Registro Repetido) Responder citando



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;

   begin

       Data.orden.Append;
       Data.mtiva.Append;
       Data.ttrans.Append;
       Data.orden.FieldByname('programa').AsString := programa.LookupValue;
       Data.ejecucion.FieldByname('programa').AsString := programa.LookupValue;
       Data.orden.FieldByname('presupuesto').AsString := presupuesto.LookupValue;
       Data.ejecucion.FieldByname('presupuesto').AsString := presupuesto.LookupValue;


Aquí tienes una posible solución, usando el evento OnPostError:

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&p=516

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:

http://www.ajpdsoft.com/modules.php?name=Content&pa=showpage&pid=4

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.
MensajePublicado:
Sab Sep 03, 2011 8:50 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  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