Ir al contenido principal

Procedimiento almacenado para generar correlativo (Pedido, Orden de Compra, etc) evitando la concurrencia en una plataforma multiusuario.

En el presente artículo vamos a explicar una forma de crear un procedimiento almacenado para generar un numero correlativo (Factura, Pedido, Orden de Compra, N° de ticket) en un sistemas multiusuario, evitando la concurrencia.

Crearemos un Procedimiento almacenado con los siguientes parámetros:

@NumSalida: En este parámetro se almacena el numero correlativo generado para ser devuelto a la aplicación.

@NombCampo: Aquí se envía el nombre de la variable del tipo de documento para el cuela se va a generar el correlativo.

@Serie: Aquí se envía el número de serie o el año del correlativo del documento si es que lo tuviera, ejemplo en el caso de las factura hay serie 001, 002, 003, etc.

@Tam: Este valor se utiliza para darle formato al correlativo a un tamaño determinado, ejemplo si se envía Tam=10 y el correlativo que sigue para N° de pedido es 10, el valor devuelto por el procedimiento seria 0000000010.

@MostSelect: Este valor indica si el correlativo se devuelve con una sentencia SELECT o en el parámetro @NumSalida que está declarado como output.

CREATE Procedure [dbo].[proc_MaesSemillasGeneraCodigo]
@NumSalida      Varchar(15) Output,
@NombCampo      VarChar (30), 
@Serie varchar(15),
@Tam int,
@MostSelect Varchar(1)='N'
As
BEGIN
Set nocount on
Declare  @Valor bigint  , @Mens Varchar (150), @NumReg int=0
Set @Mens='No existe semilla '+ @NombCampo
/*Evalua si existe el tipo de documento enviado en la variable @NombCampo*/
If not Exists(Select * From MaesSemillas Where  RTRIM(NombCampo) = @NombCampo AND Serie=@Serie)
 RAISERROR (@Mens, 16, 1);
/*El while es el que se encarga de evitar la concurrencia (Que dos usuarios del sistema generen el mismo correlativo para un mismo tipo de dodumento), evaluado que el valor generado en (1) no haya cambiado hasta llegar el Update (2), ya que es ahí donde se incrementa el contador del correlativo.*/
While @NumReg=0
Begin
   
        Select  @Valor=Valor  From MaesSemillas Where  RTRIM(NombCampo) = @NombCampo AND Serie=@Serie (1)
       
        Set     @NumSalida = Right(Replicate('0',@Tam) + Convert(Varchar,@Valor),@Tam)
        Update MaesSemillas Set Valor= Valor+1 Where  NombCampo= @NombCampo and Valor=@Valor  AND Serie=@Serie (2)
   
        Set @NumReg=@@rowcount
       
        If @MostSelect='S'
                Select @NumSalida;
End
Return 0
END

Comentarios

Entradas populares de este blog

Instalación y Configuración de My Generation.

My Generation es una herramienta de uso libre que permite generar de manera sencilla clases a partir de una estructura de base de datos esto nos permite ahorrar tiempo valioso en el desarrollo de nuestros proyectos de programación en .NET (C#, VB). El proceso de instalación y configuración es sencillo y lo detallamos a continuación: INSTALACIÓN: Descarga del Instalador: Clic Aquí Una vez descargado el instalador se procede a la instalación, es muy intuitiva. Clic en I Agree (Aceptar) Desmarcar el Chek Detect MDAC 2.7++ Clic en Next (Siguiente) Dejamos el directorio de instalación por defecto y clic en Install CONFIGURACIÓN: Pantalla Principal Clic en Default Settings En la sección conection string seleccionamos el motor de base de datos que vamos a utilizar, en nuestro caso seleccionamos SQL Server. Aquí mismo se indican los parámetros de conexión de nuestro servidor SQL que previamente debemos instalar. En mi caso util...

Video Rockola YouTube 2020

Video Rockola YouTube 2020 es Software moderno y fácil de usar que nos permite la implementación de Vídeo Rockolas con acceso a los miles de vídeos de YouTube. Las características principales son: La principal característica y novedad es que se puede tener acceso a los miles de vídeos publicados en YouTube, el único requisito es tener acceso a Internet. Uso con Monitores Convencionales o TouchScreen. Además, se puede almacenar una galería de vídeos de manera local y acceder a ellos. Es de Fácil configuración, permite parametrizar las funcionalidades de acuerdo a las necesidades del cliente. Ver Funcionamiento en YouTube: Ver en Youtube Requisitos para la instalación: Windows 7 o superior. Net Framework 4.0 Contacto: ervize@hotmail.com WhatsApp: (51) 999302985