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 - Numeracion de factura repetido
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Numeracion de factura 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: Numeracion de factura repetido Responder citando

Buenas estoy generando un numero de orden lo hago consultando el ultimo registro de una tabla y le sumo uno, pero el problema es que a veces me repite el numero mas que todo cuando se hace una orden desde otra estación el sistema funciona en 10 maquinas. aca el codigo que uso para calcular el numero.
Código:
procedure Todespacho.BitBtn1Click(Sender: TObject);
        var
        AccExclusivo:Boolean;
        proximonumero:Integer;
        numero:Integer;
        tord:Real;
        tpart:Real;
   begin

    Data.sqcaval.Close;
         Data.sqcaval.SQL.Clear;
         Data.sqcaval.SQL.Add('SELECT idorden ');
     Data.sqcaval.SQL.Add('from cartaavaleulalia');
     Data.sqcaval.SQL.Add('ORDER BY idorden ASC');
     Data.sqcaval.Open;
         Data.sqcaval.Last;
         proximonumero:= Data.sqcaval.FieldByname('idorden').Value + 1;
         numero:=0;
MensajePublicado:
Vie Feb 25, 2011 1:25 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Numeracion de factura repetido Responder citando



Anuncios



webmasterplc escribió:
Buenas estoy generando un numero de orden lo hago consultando el ultimo registro de una tabla y le sumo uno, pero el problema es que a veces me repite el numero mas que todo cuando se hace una orden desde otra estación el sistema funciona en 10 maquinas. aca el codigo que uso para calcular el numero.
Código:
procedure Todespacho.BitBtn1Click(Sender: TObject);
        var
        AccExclusivo:Boolean;
        proximonumero:Integer;
        numero:Integer;
        tord:Real;
        tpart:Real;
   begin

    Data.sqcaval.Close;
         Data.sqcaval.SQL.Clear;
         Data.sqcaval.SQL.Add('SELECT idorden ');
     Data.sqcaval.SQL.Add('from cartaavaleulalia');
     Data.sqcaval.SQL.Add('ORDER BY idorden ASC');
     Data.sqcaval.Open;
         Data.sqcaval.Last;
         proximonumero:= Data.sqcaval.FieldByname('idorden').Value + 1;
         numero:=0;


Te hemos contestado aquí:

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

De todas formas tienes que evitar que la inserción te de error. Una de las soluciones es usar una tabla adicional para almacenar los contadores. Es decir, en vez de usar la consulta SQL para obtener el último IDORDEN con un MAX, tal vez te sea mejor usar una tabla adicional llamada "contador" donde guardarás el nombre de la tabla en un campo y el contador actual en otro, por lo tanto cuando insertes un nuevo registro, justo antes de hacer el post (validación), utilizas una función que obtenga el contador de esa tabla y lo incremente. Normalmente así no suele producir errores de claves duplicadas.

En este enlace tienes una función para obtener el contador de una tabla adicional:

http://www.ajpdsoft.com/modules.php?name=Content&pa=showpage&pid=200
MensajePublicado:
Sab Sep 03, 2011 9:00 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