Excel + SQL Server + Azure | Azure SQL Database


Esta vez veremos una alternativa más de cómo podemos gestionar nuestros datos, y es creando una base de datos con Azure SQL Database.
Estas bases de datos no se gestionan dentro de una máquina virtual en particular, sino que son administradas directamente en el portal de Azure, y podremos acceder remotamente a ella desde nuestro proyecto cliente de Excel, mediante un servidor SQL que crearemos en el proceso.

Para este ejercicio, seguiremos utilizando los procedimientos almacenados que hemos visto en los capítulos anteriores, y además, he creado otros procedimientos almacenados que nos pueden servir de base para construir un sistema de facturación.

Aquí les dejo el query que contiene el Script completo que nos permitirá manejar los registros en el Servidor SQL de Azure.

create table productos
(
id_Cod int identity primary key,
cod_prod varchar(4) not null,
descripcion varchar(50)not null,
existencia int not null,
)
GO
insert into productos values('A001','MEMORIA USB 32GB',175);
insert into productos values('A002','DISCO DURO 2TB',15);
insert into productos values('A003','AIRE COMPRIMIDO',250);
insert into productos values('A004','ESPUMA LIMPIADORA',300);
insert into productos values('A005','FUNDA MONITOR',500);
insert into productos values('A006','FUNDA TECLADO',700);
insert into productos values('A007','SILLA ERGONÓMICA',11);
insert into productos values('A008','ALFOMBRILLA PARA SILLA',25);
insert into productos values('A009','LÁMPARA ESCRITORIO',7);
insert into productos values('A010','MONITOR LED 18 PULGADAS',45);
insert into productos values('A011','LIBRERO',20);
GO

CREATE PROCEDURE SP_RegistrarProducto
@CodProd varchar(4),
@Descripcion varchar(50),
@Existencia int
AS
begin
insert into productos  values(@CodProd, @Descripcion, @Existencia)
end
GO

CREATE PROCEDURE SP_ModificarProducto
@CodProd varchar(4), 
@Descripcion varchar(50), 
@Existencia int
AS
update productos  set cod_prod =@CodProd, descripcion=@Descripcion, existencia=@Existencia
where
cod_prod=@CodProd
GO

CREATE PROC SP_EliminarProducto
@CodProd as varchar(4)
AS
delete from productos WHERE cod_prod=@CodProd 
GO

CREATE PROC SP_RestarExistencia
@CodProd as varchar(4),
@Cantidad as int
AS
UPDATE productos SET existencia=existencia-@Cantidad 
WHERE cod_prod=@CodProd 
GO

CREATE PROC SP_SumarExistencia
@CodProd as varchar(4),
@Cantidad as int
AS
UPDATE productos SET existencia=existencia+@Cantidad 
WHERE cod_prod=@CodProd 
GO

CREATE PROCEDURE SP_MostrarDatos
AS
SELECT * FROM productos



Por otra parte, el proyecto de Excel que nos sirve de cliente de conexión, lo he modificado de tal forma que podamos realizar consultas SQL y recuperar los datos directamente en una hoja de cálculo.
El siguiente código hace posible llamar los datos al servidor, desde Excel...


Sub ConsultaSQL()
Dim Fila As Long
Dim i As Long
Dim sql As String

On Error GoTo ErrorHandler

Hoja1.Range("A:D").Clear

    sql = [miConsulta].Text
    
ErrorHandler:
    If Err < 0 Then
        MsgBox Err.Description, vbCritical
        Exit Sub
    End If

     If Err = 3704 Then
         sql = "select * from productos order by cod_prod"
     End If
 
    Set Rst = New ADODB.Recordset
    Rst.Source = sql
    Rst.ActiveConnection = Conn
    Rst.Open sql, Conn

    Fila = 0
        
    For i = 0 To Rst.Fields.Count - 1
        Hoja1.Cells(Fila + 1, i + 1).Value = Rst.Fields(i).Name
    Next i

    Fila = 1
    
    Do While Not Rst.EOF
        For i = 0 To Rst.Fields.Count - 1
            Hoja1.Cells(Fila + 1, i + 1).Value = Rst.Fields(i)
        Next i
        Fila = Fila + 1
        Rst.MoveNext
    Loop
   
End Sub

Te invito a ver el vídeo en YouTube y descubrirás lo simple que es hacer este tipo de implementaciones.


Ver vídeo

Descarga el Proyecto