Software de Cuenta Cobro VB6 #2 Procedimientos Almacenados SQL Server

Este tema de Procedimientos Almacenados en muy pero muy importante nos ayuda mucho a la hora hacer varias acciones pero que se ejecuten en la base de datos.

Por ejemplo: En el software de ventas cuando se realizaba una venta se ingresaba en la tabla detalle el registro del producto pero también había que guardar en la tabla Kardex el movimiento de ese producto, era 2 procesos por cada producto ingresado.

Con un procedimiento almacenada y usando algo llamado TRIGGER podemos realizar esa acción de manera automática que cada vez que se ingrese un producto a la tabla detalle automáticamente agregue un registro a la tabla kardex.

Y hay muchas cosas que se pueden hacer del lado de la base de datos que mejorarían todas las operaciones en el software.

¿Cómo se crea un procedimiento almacenado en SQL Server?

El primer paso es abrir la base de datos luego de esto vamos a la opción Programación, desplegamos y aparece un Item llamado Procedimientos almacenados cómo en la siguiente imagen:

Luego de seleccionar la Opción de Procedimiento almacenado nos aparece la siguiente pantalla:

Mucho código pero no es para asustarse muchas cosas son comentarios y explicaciones de como se deben implementar estos procedimientos.

El primer procedimiento que se va a desarrollar es el de crear cuenta de cobro para poder explicarles cada parte y vean que no es complicado es como programar pero se usa código SQL.

Creando el Primero Procedimiento Almacenado

Lo primero es poner el nombre del procedimiento se modifica y la parte de CREATE PROCEDURE y debe quedar de la siguiente manera:

CREATE PROCEDURE GuardarCuentaCobro

Lugo de esto vienes los parámetros de entrada:

@valorCuenta money,
  @IdEmpresa int,
  @IdUsuario int

Se declaran tres variables que son  necesarias :

declare @IDcuenta int;
  declare @Empresa int;
  declare @Usuario int;

Se consulta el ultimo Id de la tabla tblCuentasCobro y se le suma uno para el Id siguiente que se necesita para guardar en la tabla

set @IDcuenta = (Select max(id_cuentacobro) + 1 from tblcuenta_cobros);
if @IDcuenta is null
    set @IDcuenta = 1;

Se consulta el ultimo Id se le suma uno y se guarda en la variable  @IDcuenta por esa razón se utiliza la palabra set para asignar el valor, esto no es muy diferente de hace un procedimiento en Visual Basic.

En casi de que no exista datos en la tabla la variable queda como null en ese caso se valida si es null y se le asigna el valor de uno a esa variable.

Para el procedimiento se necesita validar que el Id Empresa que se esta recibiendo si exista en la tabla tblEmpresas para eso se consulta y se valida con un condicional:

set @Empresa = (Select id_empresa from tblempresas where id_empresa = @IdEmpresa);
  
  if @Empresa is null
     GOTO ErrorEmpresa;

De igual manera se valida el usuario que se recibe como parámetro:

set @Usuario = (Select id_usuario from tblusuarios where id_usuario = @IdUsuario);

  if @Usuario is null
     GOTO ErrorUsuario;

Luego de hacer todas la validaciones correspondientes se procede a insertar este registro en la tabla:

insert into tblcuenta_cobros (id_cuentacobro, fecha_cuenta, valor_cuenta, id_empresa, id_usuario)
  values (@IDcuenta, GETDATE(), @valorCuenta, @IdEmpresa, @IdUsuario)

  if @@ROWCOUNT > 0 
     select 1 as cod, @IDcuenta as id;
  else
     select 0 as cod, 'Error al guardar' as mensaje;
    
  Return 0;

@@ROWCOUNT  esta función devuelve cuantos registro se vieron afectados con la operación anterior, esto nos sirve para devolver 1 en caso de que la inserción  se hiciera con éxito por eso el select 1 en caso contrario se devuelve un cero.

El código siguiente es en los casos que la validación reportara error por eso el uso de GOTO para saltar de un lugar a otro y el return para salir del procedimiento.

ErrorEmpresa:
     select 0 as cod, 'Error la Empresa no existe, verifique' as mensaje;
     return 0;

    ErrorUsuario:
     select 0 as cod, 'Error El Usuario no existe, verifique' as mensaje;

El código completo del procedimiento es el siguiente:

USE [dbcuentas_cobros]
GO
/****** Object:  StoredProcedure [dbo].[GuardarCuentaCobro]    Script Date: 12/10/2022 11:43:16 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[GuardarCuentaCobro]
  -- Add the parameters for the stored procedure here
  @valorCuenta money,
  @IdEmpresa int,
  @IdUsuario int
AS
BEGIN
  
  declare @IDcuenta int;
  declare @Empresa int;
  declare @Usuario int;

  SET NOCOUNT ON;

  set @IDcuenta = (Select max(id_cuentacobro) + 1 from tblcuenta_cobros);

  set @Empresa = (Select id_empresa from tblempresas where id_empresa = @IdEmpresa);
  
  if @Empresa is null
     GOTO ErrorEmpresa;

  set @Usuario = (Select id_usuario from tblusuarios where id_usuario = @IdUsuario);

  if @Usuario is null
     GOTO ErrorUsuario;

      
  if @IDcuenta is null
     set @IDcuenta = 1;
  
  insert into tblcuenta_cobros (id_cuentacobro, fecha_cuenta, valor_cuenta, id_empresa, id_usuario)
  values (@IDcuenta, GETDATE(), @valorCuenta, @IdEmpresa, @IdUsuario)

  if @@ROWCOUNT > 0 
     select 1 as cod, @IDcuenta as id;
  else
     select 0 as cod, 'Error al guardar' as mensaje;
    
  Return 0;

  ErrorEmpresa:
     select 0 as cod, 'Error la Empresa no existe, verifique' as mensaje;
     return 0;

    ErrorUsuario:
     select 0 as cod, 'Error El Usuario no existe, verifique' as mensaje;
END

El video explicativo es el siguiente:

síguenos en el sitio web: https://www.programaresfacil.co/

Canal de Youtube: https://www.youtube.com/ProgramarEsFacil

Grupo de Telegram: https://t.me/+FS_lXODpHt-6z_J7

 

 

También te podría interesar:

Total Page Visits: 1827 - Today Page Visits: 5

Deja una respuesta