viernes, 28 de octubre de 2016

Fundamentos de Bases de Datos: Módulo 03: Laboratorio Copia Seguridad

Copia de Seguridad de la Base de Datos









Restaurar la Copia de Seguridad de la Base de Datos








Copia de Seguridad (SistNotas.BAK)

https://drive.google.com/open?id=0B7Ct7K_LTJvSSC1PcUc2R0ZLcXM


Script para cambiar seguridad al nuevo SA

USE SistemaNotas3;
GO
ALTER AUTHORIZATION ON DATABASE::SistemaNotas3 TO sa;


miércoles, 26 de octubre de 2016

Fundamentos de Bases de Datos: Módulo 02: Ejemplos Procedimientos Almacenados (Stored Procedure)



Script Tabla PagoHoraExtra


https://drive.google.com/open?id=0B7Ct7K_LTJvSM0QzWjh2bkVRbkk



Procedimiento Almacenado


-- =============================================
-- Author:        Daniel
-- Create date: 26/10/2016
-- Description:   Cálculo de Horas Extras
-- =============================================
ALTER PROCEDURE paCalcHoras
      -- Add the parameters for the stored procedure here
      @Anio int = 2016,
      @Mes int = 12
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

    -- INSERTE LINEAS DE CODIGO
      DECLARE @Contador INT;  -- DECLARAR VARIABLE
      SET @Contador = 0;           -- ASIGNAR VALOR
      -- CUENTA LAS FILAS DE LA TABLA
      SELECT @Contador = COUNT(*)
            FROM HorasExtras
            WHERE YEAR(HorasExtras.Fecha) = @Anio
            AND MONTH(HorasExtras.Fecha) = @Mes;
      -- ESTRUCTURA DECISION
      IF (@Contador = 0)
      BEGIN
            SELECT 'NO EXISTEN HORAS EXTRAS: ',
                  @Mes, '/', @Anio;
      END
      ELSE
      BEGIN
            -- ANTES DE REALIZAR EL INSERT VALIDAR
            -- QUE NO HAYAN DATOS PARA ESA FECHA
            SET @Contador = 0;
            SELECT @Contador = COUNT(*)
                  FROM PagoHoraExtra
                  WHERE Anio = @Anio
                  AND Mes = @Mes;
            -- SI @Contador > 0 entonces SI HAY DATOS
            IF(@Contador>0)
            BEGIN
                  SELECT 'Período YA FUE Calculado: ',
                        @Mes, '/', @Anio;
            END
            ELSE
            BEGIN
                  INSERT INTO PagoHoraExtra
                        (CodEmpleado, HorasTotales,
                         Anio, Mes, MontoPagado)
                  SELECT CodigoEmpleado AS CodEmpleado,
                        SUM(Cantidad) AS HorasTotales,
                        YEAR(Fecha) AS Anio,
                        MONTH(Fecha) AS Mes,
                        SUM(Cantidad) * 11.70 AS MontoPagado
                  FROM HorasExtras
                  WHERE YEAR(Fecha) = @Anio
                  AND MONTH(Fecha) = @Mes
                  GROUP BY CodigoEmpleado,
                        YEAR(Fecha), MONTH(Fecha);
            END   -- IF(@Contador > 0)
                 
      END   -- IF (@Contador=0)

      SELECT @Anio, @Mes
END   -- BEGIN PROC

GO


martes, 25 de octubre de 2016

Fundamentos de Bases de Datos: Módulo 02: Ejemplos INSERT, UPDATE, DELETE y VIEW



USE SistemaNotas2;
GO

INSERT


INSERT INTO Departamentos
      (Codigo, Nombre)
      VALUES
      (1, 'Financiero X');

INSERT INTO Departamentos
      (Nombre, Codigo)
      VALUES
      ('Ventas X', 12);

/* Comentario */
-- Comentario2
INSERT INTO Departamentos
      (Codigo, Nombre)
VALUES
      (13, 'IT Y'),
      (14, 'Contabilidad Y'),
      (15, 'Operaciones Y');

-- NO SE INCLUYE Columna CODIGO
-- PORQUE ES UN VALOR Identity
INSERT INTO Empleados
      (CUI, NombrePrimero, ApellidoPrimero,
      FechaNacimiento, CodigoDepartamento,
      NIT)
VALUES
      ('3206995851111', 'Esteban', 'Samayoa',
      '1998/12/25', 4,
      '808013-8');

SELECT *
      FROM Empleados
      WHERE CodigoDepartamento = 4
      AND ApellidoPrimero LIKE 'S%';



UPDATE 


SELECT *
      FROM Empleados
      WHERE CodigoDepartamento = 4
      AND ApellidoPrimero LIKE 'S%';

-- MODIFICA EL NOMBRE SEGUNDO DEL EMPLEADO
-- CON CODIGO = 8,
-- LA INSTRUCCION UPDATE SIEMPRE DEBE LLEVAR
-- WHERE
UPDATE Empleados
      SET NombreSegundo = 'Romero'
      WHERE Codigo = 8;

-- UPDATE DEBE LLEVAR WHERE
UPDATE Empleados
      SET NombreSegundo = 'Carlos',
      ApellidoSegundo = 'Perez'
      WHERE Codigo = 252;


SELECT *
      FROM Empleados   
      WHERE ApellidoPrimero = 'Samayoa';


DELETE 


-- DELETE FROM Tabla
-- WHERE Una Condición (Siempre debe llevar WHERE)Cod
DELETE FROM Empleados
      WHERE ApellidoPrimero = 'Samayoa';

SELECT *
      FROM Empleados
      WHERE ApellidoPrimero = 'ramos';

SELECT * FROM HorasExtras
      WHERE CodigoEmpleado = 500;

-- NO PERMITE EL DELETE
-- PORQUE EL EMPLEADO TIENE HORAS EXTRAS
DELETE FROM Empleados
      WHERE ApellidoPrimero = 'Ramos';



 VIEW



CREATE VIEW [dbo].[vHExEmpxMes]
AS
SELECT        CodigoEmpleado, YEAR(Fecha) AS Año, MONTH(Fecha) AS Mes, SUM(Cantidad) AS TOTAL
FROM            dbo.HorasExtras

GROUP BY CodigoEmpleado, YEAR(Fecha), MONTH(Fecha)



USE SistemaNotas
GO
-- CREAR UNA NUEVA VISTA
CREATE VIEW vEmpleadosxDepartamentos
AS
      SELECT Dep.Codigo AS CodDepartamento,
      Dep.Nombre AS Departamento,
      Emp.Codigo AS CodEmpleado,
      Emp.ApellidoPrimero, Emp.NombrePrimero,
      Emp.CUI, Emp.FechaNacimiento
      FROM Departamentos Dep
      INNER JOIN Empleados Emp
      ON Dep.Codigo = Emp.CodigoDepartamento;




USE SistemaNotas
GO


SELECT vEmpleadosxDepartamentos.Departamento,
      vEmpleadosxDepartamentos.ApellidoPrimero,
      vEmpleadosxDepartamentos.NombrePrimero,
      vHExEmpxMes.Año, vHExEmpxMes.Mes,
      vHExEmpxMes.TOTAL,
      vHExEmpxMes.TOTAL * 11.70 AS MontoHorasExtras
      FROM vEmpleadosxDepartamentos
      INNER JOIN vHExEmpxMes
      ON vEmpleadosxDepartamentos.CodEmpleado = vHExEmpxMes.CodigoEmpleado
      WHERE vHExEmpxMes.Año = 2015 AND
      vHExEmpxMes.Mes = 7
      ORDER BY vEmpleadosxDepartamentos.Departamento,
      vEmpleadosxDepartamentos.ApellidoPrimero,

      vEmpleadosxDepartamentos.NombrePrimero;


viernes, 21 de octubre de 2016

Programación en C#: Módulo 02: Métodos y Manejo de Excepciones: Ejemplo

Métodos:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo5
{
    class Program
    {
        static bool EsPar(int Numero)
        {
            bool Bandera = false;
            int Residuo = 0;
            Residuo = Numero % 2;

            if (Residuo == 0)
                Bandera = true;
            else
                Bandera = false;

            return Bandera;
        }

        static bool EsPar(string sNumero)
        {
            bool EsNumero = false; int Num = 0;
            bool bRetorno = false;

            EsNumero = int.TryParse(sNumero, out Num);
            if (EsNumero)
            { bRetorno = EsPar(Num); }
            else
            { bRetorno = false; }

            return bRetorno;
        }

        static void AnalizarNumero()
        {
            int N = 0; string sNum = "";
            Console.WriteLine("Ingrese un número entero?");
            sNum = Console.ReadLine();

            N = int.Parse(sNum);
            if(EsPar(N))
            { Console.WriteLine("{0} Es Par", N); }
            else
            { Console.WriteLine("{0} Es ImPar", N); }
        }

        static void AnalizarNumero2()
        {
            string sNum = "";

            Console.WriteLine("Ingrese un número entero?");
            sNum = Console.ReadLine();

            if ( EsPar(sNum) )
            { Console.WriteLine("{0} Es Par", sNum); }
            else
            { Console.WriteLine("{0} Es ImPar", sNum); }
        }

        static bool EsBisiesto(int Anio, out string Mensaje)
        {
            bool bValor = false; int Residuo = 0;
            string MiMensaje = ""; int Res100 = 0;

            Residuo = Anio % 4;
            if (Residuo==0)
            {
                Res100 = Anio % 100;
                if (Res100 == 0)
                {
                    bValor = false;
                    MiMensaje = "No es un Año Bisiesto";
                }
                else
                {
                    bValor = true;
                    MiMensaje = "Es un Año Bisiesto";
                }
            }
            else
            {
                bValor = false;
                MiMensaje = "No es un Año Bisiesto";
            }

            //Retorna Valores
            Mensaje = MiMensaje;
            return bValor;
        }

        static void AnioBisiesto()
        {   //Variables
            string sNum = "", sMensaje="";int Anio = 0;
            //Ingreso de Datos
            Console.WriteLine("Ingrese un año?");
            sNum = Console.ReadLine();
            //Procesar Datos
            Anio = int.Parse(sNum);
            if (EsBisiesto(Anio, out sMensaje))
            { Console.WriteLine("{0:D} {1}", Anio,sMensaje); }
            else
            { Console.WriteLine("{0:D} {1}", Anio, sMensaje); }
        }

        static void Main(string[] args)
        {
            //AnalizarNumero();
            //AnalizarNumero2();
            AnioBisiesto();

            Console.ReadKey();
        }

    }

}