lunes, 21 de abril de 2014

Migración de la Base No Normalizada

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 17:00 Hora Fin: 19:00
Horas Trabajadas: 2

Se realizó la migración de datos de una base no normalizada. Se tuvo que arreglar los datos propiciados por el profesor, puesto que no estaban bien y no eran muy útiles. Luego de arreglar los datos, se crearon los procedures para que se migren los datos.

GO
CREATE PROCEDURE MIGRAR_MIEMBROS
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [MEMBRESIACANCIONES].[dbo].[MC_MIEMBRO]
SELECT DISTINCT N.[Nombre del cliente], N.Correo, N.Cuenta, N.Contraseña, N.Saldo, N.[Cantidad Compras], N.[Miembro Activo], N.[Post By], N.[Post In], N.[Post Date]
FROM [DatosPruebaCanciones].[dbo].[CancionesXMiembro] AS N
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE MIGRAR_ADMINISTRADORES
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO MEMBRESIACANCIONES.dbo.MC_ADMINISTRADOR
SELECT DISTINCT N.[Nombre Administrador], N.Contraseña
FROM [DatosPruebaCanciones].[dbo].[Administradores] AS N
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE MIGRAR_INTERPRETES
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO MEMBRESIACANCIONES.dbo.MC_INTERPRETE
SELECT DISTINCT N.Interprete, N.Activo, N.[Post By], N.[Post In], N.[Post Date]
FROM [DatosPruebaCanciones].[dbo].[CancionesXMiembro] AS N
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE MIGRAR_CANCIONES
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO MEMBRESIACANCIONES.dbo.MC_CANCION
SELECT I.ID, N.Cancion, CAST(CAST(N.Logo AS VARCHAR(64)) AS IMAGE), N.[Fecha Operacion], N.[Cantidad vendida], N.Activo, N.[Post By], N.[Post In], N.[Post Date]
FROM [DatosPruebaCanciones].[dbo].[CancionesXMiembro] AS N
INNER JOIN MEMBRESIACANCIONES.dbo.MC_INTERPRETE AS I ON I.NOMBRE = N.Interprete
END
GO

-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE SP_MIGRACION
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION
EXEC MIGRAR_MIEMBROS
EXEC MIGRAR_ADMINISTRADORES
EXEC MIGRAR_INTERPRETES
EXEC MIGRAR_CANCIONES
COMMIT TRANSACTION
END
GO

EXEC SP_MIGRACION
-----------------------------------------------------------------------------------------------------------------------

domingo, 20 de abril de 2014

Conexión: Base de Datos y Aplicación de Escritorio Final


Creador del post: Edward Ovares Villegas.
Inicio: 17:00 Fin: 22:30
Horas trabajadas: 4.5

Se finalizó las conexiones entre la Base de Datos y la Aplicación de escritorio. También se realizó la comunicación entre el Model, View y Controller.

Finalización de la conexión con la base de datos

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 16:00 Hora Fin: 20:30
Horas Trabajadas: 4.5

Se realizó la conexión con el último procedure, compra de canción. Este presentó problemas a la hora de probarlo, ya que los movimientos que este creaba no eran accesibles o tiraba problemas con la transacción. Se le realizó un cambio y con esto se logró hacer funcionar. Luego de esto se realizó la conexión.

sábado, 19 de abril de 2014

Conexión: Base de Datos y Aplicación de Escritorio 4


Creador del post: Edward Ovares Villegas.
Inicio: 18:30 Fin: 23:00
Horas trabajadas: 4.5

Se terminó de realizar el Controller de Canciones así como las conexiones de este. También se trabajó en la comunicación entre el Model, View y Controller correspondientes a la canción y se solucionaron unos errores anteriores de la conexión entre la base de datos y la aplicación.

Continuación con la conexión a la base de datos

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 15:00 Hora Fin: 18:00
Horas Trabajadas: 3

Se realizó la conexión de 2 procedures más, la consulta de movimientos y la bajada de una canción.

 public DataSet consultaMovimientos(String pMiembro)
        {
            try
            {
                conection.Open();
                procedure = new SqlCommand("CONSULTA_MOVCANCXMIEMBRO", conection);
                procedure.CommandType = CommandType.StoredProcedure;
                adapter = new SqlDataAdapter();
                procedure.Parameters.Add("@MIEMBRO", SqlDbType.VarChar, 50, "@MIEMBRO");
                procedure.Parameters["@MIEMBRO"].Value = pMiembro;
                adapter.SelectCommand = procedure;
                procedure.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                procedure.ExecuteNonQuery();
                int cod = (int)procedure.Parameters["@RETURN_VALUE"].Value;
                conection.Close();
                if (cod > 0)
                {
                    data = new DataSet();
                    adapter.Fill(data);
                    return data;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception)
            {
                conection.Close();
                return null;
            }
        }

        public int bajadaCancion(int pID, String pIP, String pPostBy, String pPostIn)
        {
            try
            {
                conection.Open();
                procedure = new SqlCommand("BAJADA_CANCION", conection);
                procedure.CommandType = CommandType.StoredProcedure;
                procedure.Parameters.Add("@ID_MOVCANCION", SqlDbType.Int);
                procedure.Parameters["@ID_MOVCANCION"].Value = pID;
                procedure.Parameters.Add("@IP", SqlDbType.VarChar, 50, "@IP");
                procedure.Parameters["@IP"].Value = pIP;
                procedure.Parameters.Add("@POST_BY", SqlDbType.VarChar, 30, "@POST_BY");
                procedure.Parameters["@POST_BY"].Value = pPostBy;
                procedure.Parameters.Add("@POST_IN", SqlDbType.VarChar, 30, "@POST_IN");
                procedure.Parameters["@POST_IN"].Value = pPostIn;
                procedure.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                procedure.ExecuteNonQuery();
                int cod = (int)procedure.Parameters["@RETURN_VALUE"].Value;
                conection.Close();
                if (cod > 0)
                {
                    return 1;
                }
                else
                {
                    return -1;
                }
            }
            catch (Exception)
            {
                conection.Close();
                return -1;
            }
        }

viernes, 18 de abril de 2014

Continuación de la conexión con la base de datos

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 14:00 Hora Fin: 20:00
Horas Trabajadas: 6

Se realizó al conexión de 3 Procedures más, la selección de las 10 más vendidas, el login de usuario y el insertar usuario.

public DataTable top10Canciones()
        {
            try
            {
                conection.Open();
                procedure = new SqlCommand("ORDENAR_CANCIONES", conection);
                procedure.CommandType = CommandType.StoredProcedure;
                adapter = new SqlDataAdapter();
                adapter.SelectCommand = procedure;
                procedure.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                procedure.ExecuteNonQuery();
                int cod = (int)procedure.Parameters["@RETURN_VALUE"].Value;
                conection.Close();
                if (cod > 0)
                {
                    datos = new DataTable();
                    adapter.Fill(datos);
                    return datos;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception)
            {
                conection.Close();
                return null;
            }
        }

        public int loginUsuario(String pUsername, String pPassword)
        {
            try
            {
                conection.Open();
                procedure = new SqlCommand("LOGIN_USUARIO", conection);
                procedure.CommandType = CommandType.StoredProcedure;
                procedure.Parameters.Add("@USERNAME", SqlDbType.VarChar, 50, "@USERNAME");
                procedure.Parameters["@USERNAME"].Value = pUsername;
                procedure.Parameters.Add("@PASSWORD", SqlDbType.VarChar, 30, "@PASSWORD");
                procedure.Parameters["@PASSWORD"].Value = pPassword;
                procedure.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                procedure.ExecuteNonQuery();
                int cod = (int)procedure.Parameters["@RETURN_VALUE"].Value;
                conection.Close();
                if (cod > 0)
                {
                    return 1;
                }
                else
                {
                    return -1;
                }
            }
            catch (Exception)
            {
                conection.Close();
                return -1;
            }
        }

        public int insertarUsuario(String pNombre, String pEmail, String pCuenta, String pClave, String pNumTarjeta, String pFechaExp, String pPostBy, String pPostIn)
        {
            try
            {
                conection.Open();
                procedure = new SqlCommand("INSERTAR_USUARIO", conection);
                procedure.CommandType = CommandType.StoredProcedure;
                procedure.Parameters.Add("@NOMBRE", SqlDbType.VarChar, 50, "@NOMBRE");
                procedure.Parameters["@NOMBRE"].Value = pNombre;
                procedure.Parameters.Add("@EMAIL", SqlDbType.VarChar, 50, "@EMAIL");
                procedure.Parameters["@EMAIL"].Value = pEmail;
                procedure.Parameters.Add("@CUENTA", SqlDbType.VarChar, 50, "@CUENTA");
                procedure.Parameters["@CUENTA"].Value = pCuenta;
                procedure.Parameters.Add("@CLAVE", SqlDbType.VarChar, 30, "@CLAVE");
                procedure.Parameters["@CLAVE"].Value = pClave;
                procedure.Parameters.Add("@NUM_TARJETA", SqlDbType.VarChar, 20, "@NUM_TARJETA");
                procedure.Parameters["@NUM_TARJETA"].Value = pNumTarjeta;
                procedure.Parameters.Add("@FECHA_EXP", SqlDbType.VarChar, 20, "@FECHA_EXP");
                procedure.Parameters["@FECHA_EXP"].Value = pFechaExp;
                procedure.Parameters.Add("@POST_BY", SqlDbType.VarChar, 20, "@POST_BY");
                procedure.Parameters["@POST_BY"].Value = pPostBy;
                procedure.Parameters.Add("@POST_IN", SqlDbType.VarChar, 20, "@POST_IN");
                procedure.Parameters["@POST_IN"].Value = pPostIn;
                procedure.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                procedure.ExecuteNonQuery();
                int cod = (int)procedure.Parameters["@RETURN_VALUE"].Value;
                conection.Close();
                if (cod > 0)
                {
                    return 1;
                }
                else
                {
                    return -1;
                }
            }
            catch (Exception)
            {
                conection.Close();
                return -1;
            }
        }

jueves, 17 de abril de 2014

Conexión: Base de Datos y Aplicación de Escritorio 3


Creador del post: Edward Ovares Villegas.
Inicio: 13:30 Fin: 18:00
Horas trabajadas: 4.5

Se trabajó en el Controller, en si en la conexión de datos en la parte correspondiente a la canción, así como en la comunicación entre el Model, View y Controller de la aplicación. También se solucionaron errores anteriores de la aplicación.

Inicio de la conexión con la base de datos, aplicación web

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 14:00 Hora Fin: 17:00
Horas Trabajadas: 3

Se inició la conexión a la base de datos. Primero se crearon una capa de acceso a datos y otra capa lógica, ya con esto se inició la conexión. Solo se creo la conexión con el procedure de Búsqueda por Patrón.

public DataTable BusquedaPatronCancion(String pPatron)
        {
            try
            {
                conection.Open();
                procedure = new SqlCommand("BUSQUEDA_PATRON_CANCION", conection);
                procedure.CommandType = CommandType.StoredProcedure;
                adapter = new SqlDataAdapter();
                procedure.Parameters.Add("@Patron", SqlDbType.VarChar, 50, "@Patron");
                procedure.Parameters["@Patron"].Value = pPatron;
                adapter.SelectCommand = procedure;
                procedure.Parameters.Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                procedure.ExecuteNonQuery();
                int cod = (int)procedure.Parameters["@RETURN_VALUE"].Value;
                conection.Close();
                if (cod > 0)
                {
                    datos = new DataTable();
                    adapter.Fill(datos);
                    return datos;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception)
            {
                conection.Close();
                return null;
            }
        }

miércoles, 16 de abril de 2014

Conexión: Base de Datos y Aplicación de Escritorio 2


Creador del post: Edward Ovares Villegas.
Inicio: 16:30 Fin: 21:00
Horas trabajadas: 4.5

Se continuó en el desarrollo del Controller en la parte de Intérprete, también se trabajó en la solución de unos errores de anteriores de la conexión en login. Y se desarrolló en la conexión entre el Model, View y Controller de lo hecho hasta el momento.

Finalización de la interfaz de la aplicación web

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 13:00 Hora Fin: 17:00
Horas Trabajadas: 4

Se terminó de realizar la interfaz de la aplicación web con páginas más, una para que muestre el presente blog y otra donde el usuario se loguea con su nombre de usuario y contraseña.

martes, 15 de abril de 2014

Conexión: Base de Datos y Aplicación de Escritorio


Creador del post: Edward Ovares Villegas.
Inicio: 19:30 Fin: 23:00
Horas trabajadas: 3.5


Se inició la conexión entre la base de datos y la aplicación de escritorio. En si se comenzó a trabajar en el la parte de la capa de Controller, en si se realizaron las conexiones en la parte de Login y Parámetros, también se inició levemente la de Interprete.

Creación de la aplicación web

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 10:00 Hora Fin: 17:30
Horas Trabajadas: 7.5

Se inició la página web, basándose en una plantilla en aspx para crear la página principal y las pestañas. Se crearon 5 pestañas, de las cuales solo se desarrollaron 3, la página de inicio, la página de consulta de cuenta y la página de registro.

lunes, 14 de abril de 2014

Creación de la Aplicación de Escritorio 3


Creador del post: Edward Ovares Villegas.
Inicio: 18:00 Fin: 23:00
Horas trabajadas: 5

Se trabajó en la aplicación de escritorio en la parte del diseño de la View, en si se terminó esta. También se realizó las conexiones entre los diferentes componentes de la View, eso si no funcionales en la aplicación. Y se agregaron ciertos eventos de la View.

domingo, 13 de abril de 2014

Creación de la Aplicación de Escritorio 2


Creador del post: Edward Ovares Villegas.
Inicio: 20:30 Fin: 23:00
Horas trabajadas: 2.5

Se siguió trabajando en el diseño de la View de la aplicación, en si en los diferentes contenedores (Paneles) para cada una de las consultas, más específicamente el de parámetros e intérpretes.

Finalización de Porcedures para la Aplicación Web

Creador del Post: Javier Gómez Madrigal
Hora Inicio: 15:00 Hora Fin: 20:15
Horas Trabajadas: 5

Se terminó de hacer los procedures para la aplicación web de Bajada de Canción, Ordenar Canciones, Login Usuario, Insertar Usuario, Búsqueda por Patrón por Interprete, Consultar Cliente y Consultar Canción.

GO
CREATE PROCEDURE BAJADA_CANCION
(@ID_MOVCANCION INT,
@IP VARCHAR(50),
@POST_BY VARCHAR(30),
@POST_IN VARCHAR(30))
AS
BEGIN
BEGIN TRY
INSERT INTO MC_BAJADA
VALUES (@ID_MOVCANCION, CAST(getdate() as DATETIME), @IP, @POST_BY, @POST_IN, CAST(getdate() as DATE))
UPDATE MC_MOVIMIENTOCANCION
SET CANTIDADBAJADAS = CANTIDADBAJADAS + 1
WHERE ID = @ID_MOVCANCION
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE ORDENAR_CANCIONES
AS
BEGIN
BEGIN TRY
SELECT TOP 10 C.ID, I.ID, C.NOMBRE, I.NOMBRE
FROM MC_CANCION AS C
INNER JOIN MC_INTERPRETE AS I ON I.ID = C.FK_INTERPRETE
WHERE (C.ACTIVO != 0)
ORDER BY C.CANTIDADVENDIDA DESC
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE LOGIN_USUARIO
(@USERNAME VARCHAR(50),
@PASSWORD VARCHAR(30))
AS
BEGIN
BEGIN TRY
IF EXISTS (SELECT U.ID
FROM MC_MIEMBRO AS U
WHERE ((@USERNAME = U.CUENTA) AND (@PASSWORD = U.CLAVE) AND (U.ACTIVO = 1)))
RETURN 1
ELSE
RETURN -1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE INSERTAR_USUARIO
(@NOMBRE VARCHAR(50),
@EMAIL VARCHAR(50),
@CUENTA VARCHAR(50),
@CLAVE VARCHAR(30),
@NUM_TARJETA VARCHAR(20),
@FECHA_EXP VARCHAR(20),
@POST_BY VARCHAR(20),
@POST_IN VARCHAR(20))
AS
BEGIN
DECLARE @TIEMPO DATE;
BEGIN TRY
IF EXISTS(SELECT M.NOMBRE FROM dbo.MC_MIEMBRO AS M WHERE M.NOMBRE = @NOMBRE)
RETURN -1;
ELSE
INSERT INTO MC_MIEMBRO
VALUES  (@NOMBRE, @EMAIL, @CUENTA, @CLAVE, 1000, 0, 1, @POST_BY, @POST_IN, CAST(getdate() as DATE))
SET @TIEMPO = CONVERT(DATE, @FECHA_EXP, 106)
INSERT INTO dbo.MC_MEDIOPAGO
VALUES (@NUM_TARJETA, @TIEMPO)
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE BUSQUEDA_PATRON_INTERPRETE
(@PATRON VARCHAR(50))
AS
BEGIN
DECLARE @POSICION TABLE(POSICION INT IDENTITY(1,1), FK_CANCION INT)
INSERT INTO @POSICION
SELECT C.ID
FROM MC_CANCION AS C
WHERE (C.ACTIVO = 1)
ORDER BY C.CANTIDADVENDIDA DESC
    BEGIN TRY
SELECT N.ID, I.ID, N.NOMBRE, N.FECHAINGRESO, N.CANTIDADVENDIDA, I.NOMBRE, P.POSICION
FROM MC_CANCION AS N
INNER JOIN MC_INTERPRETE AS I ON I.ID = N.FK_INTERPRETE
INNER JOIN @POSICION AS P ON P.FK_CANCION = N.ID
WHERE ((I.NOMBRE LIKE '%'+@PATRON+'%') AND (N.ACTIVO = 1))
ORDER BY I.NOMBRE DESC
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE CONSULTAR_CLIENTE
(@ID INT)
AS
BEGIN
SELECT *
FROM MC_MIEMBRO AS M
WHERE M.ID = @ID
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE CONSULTAR_CANCION
(@ID INT)
AS
BEGIN
SELECT *
FROM MC_CANCION AS C
WHERE C.ID = @ID
END
GO


-----------------------------------------------------------------------------------------------------------------------

Creación de la Aplicación de Escritorio


Creador del post: Edward Ovares Villegas.
Inicio: 10:30 Fin: 14:00
Horas trabajadas: 3.5


Se comenzó a trabajar el desarrollo de la aplicación de escritorio siguiendo el patrón de MVC. En esta etapa se trabajó principalmente en el desarrollo de la capa del Model, también en una parte de la capa del View, específicamente en la ventana de login y la ventana principal.

sábado, 12 de abril de 2014

Creación de Procedures para la aplicación de Escritorio 3


Creador del post: Edward Ovares Villegas.
Inicio: 17:30 Fin: 23:00
Horas trabajadas: 5.5

Se crearon los procedures de AddCancion, GetCancion, GetCancionA, UpdateCancion, UpdateEstadoCancion.

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_AddCancion]
@Interprete INT,
@Nombre VARCHAR(50),
@Logo IMAGE,
@FechaIngreso DATETIME,
@POST_BY VARCHAR(20),
@POST_IN VARCHAR(20),
@ReturnValue INT OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
IF(EXISTS (SELECT * FROM [dbo].[MC_CANCION] AS C
WHERE (C.FK_INTERPRETE = @Interprete AND
C.Nombre = @Nombre)
))
BEGIN
PRINT 'LA CANCION YA EXISTE';
SET @ReturnValue = 0;
END
ELSE
BEGIN
INSERT INTO [MC_CANCION]
([FK_INTERPRETE],[Nombre],[Logo],[FechaIngreso],[CantidadVendida],[Activo],[POST_BY],[POST_IN],[POST_DATE])
VALUES(@Interprete,@Nombre,@Logo, @FechaIngreso,0,1,@POST_BY,@POST_IN, GETDATE());
PRINT 'SE HA INGRESADO EL LA CANCION';
SET @ReturnValue = 1;
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_AddCancion';
SET @ReturnValue = -1;
RETURN @@ERROR*-1;
END CATCH;
END

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_GetCancion]
@ret int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY --Inicio del TRY
BEGIN TRANSACTION
SELECT * FROM [dbo].[MC_CANCION];
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- COMMIT of transaction
PRINT 'Commit transaction.';
SET @ret = 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_GetCancion';
--RETURN @@ERROR*-1;
SET @ret = -1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_GetCancionA]
@ret int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY --Inicio del TRY
BEGIN TRANSACTION
SELECT * FROM [dbo].[MC_CANCION] WHERE [Activo]=1;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- COMMIT of transaction
PRINT 'Commit transaction.';
SET @ret = 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_GetCancionA';
--RETURN @@ERROR*-1;
SET @ret = -1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_UpdateEstadoCancion]
@ID INT,
@ACTIVO BIT,
@ReturnValue INT OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
UPDATE [dbo].[MC_CANCION]
SET [Activo]=@ACTIVO
WHERE [ID]=@ID;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
SET @ReturnValue = 1;
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_UpdateEstadoCancion';
SET @ReturnValue = -1;
RETURN @@ERROR*-1;
END CATCH;
END

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_UpdateCancion]
@ID INT,
@Interprete INT,
@Nombre VARCHAR(50),
@Logo IMAGE,
@ReturnValue INT OUTPUT
AS
SET @ReturnValue = 0;
BEGIN
BEGIN TRY
BEGIN TRANSACTION
UPDATE [dbo].[MC_CANCION]
SET [FK_INTERPRETE] =
CASE
WHEN [FK_INTERPRETE]!=@Interprete THEN @Interprete
ELSE [FK_INTERPRETE]
END,
[Nombre] =
CASE
WHEN [Nombre]!=@Nombre THEN @Nombre
ELSE [Nombre]
END,
[Logo] =
CASE
WHEN [Logo]!=@Logo THEN @Logo
ELSE [Logo]
END
WHERE ID=@ID;

IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_UpdateCancion';
SET @ReturnValue = -1;
RETURN @@ERROR*-1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

Creación de Procedures para la aplicación web

Creador del post: Javier Gómez Madrigal.
Inicio: 14:00 Fin: 18:00
Horas trabajadas: 4

Se crearon los procedures de Búsqueda por patrón, Consulta de saldo, Compra de Canción, Consulta de cantidad de bajadas y Consulta de movimientos canción por miembro.

GO
CREATE PROCEDURE BUSQUEDA_PATRON_CANCION
(@PATRON VARCHAR(50))
AS
BEGIN
DECLARE @POSICION TABLE(POSICION INT IDENTITY(1,1), FK_CANCION INT)
INSERT INTO @POSICION
SELECT C.ID
FROM MC_CANCION AS C
WHERE (C.ACTIVO = 1)
ORDER BY C.CANTIDADVENDIDA DESC
    BEGIN TRY
SELECT N.ID, I.ID, N.NOMBRE, N.FECHAINGRESO, N.CANTIDADVENDIDA, I.NOMBRE, P.POSICION
FROM MC_CANCION AS N
INNER JOIN MC_INTERPRETE AS I ON I.ID = N.FK_INTERPRETE
INNER JOIN @POSICION AS P ON P.FK_CANCION = N.ID
WHERE ((N.NOMBRE LIKE '%'+@PATRON+'%') AND (N.ACTIVO = 1))
ORDER BY N.NOMBRE DESC
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


--------------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE CONSULTA_SALDO
(@ID INT)
AS
BEGIN
BEGIN TRY
SELECT M.SALDO
FROM MC_MIEMBRO AS M
WHERE M.ID = @ID
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO

EXEC dbo.COMPRA_CANCION 3, 1001, '1234567812345678', 1, '1237DKFLJSAKDHFKJSA', 'JDKSLFJKASDHFJSAHDF', 1000
--------------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE COMPRA_CANCION
(@ID_CANCION INT,
@ID_MIEMBRO INT,
@NUM_TARJETA VARCHAR(20),
@ID_TIPOMOV INT,
@POST_IN VARCHAR(20),
@POST_BY VARCHAR(20),
@MONTO MONEY)
AS
BEGIN
DECLARE @ID_MEDIOPAGO INT
DECLARE @LASTID INT
SET @ID_MEDIOPAGO = (SELECT TOP 1 P.ID
FROM MC_MEDIOPAGO AS P
WHERE P.NUMTARJETA = @NUM_TARJETA)
BEGIN TRY
INSERT INTO MC_MOVIMIENTOMIEMBRO (FK_MEDIOPAGO, FK_MIEMBRO, FK_TIPOMOVIMIENTO, FECHA,MONTO, POST_BY, POST_IN, POST_DATE)
VALUES (@ID_MEDIOPAGO, @ID_MIEMBRO, 1, CAST(getdate() as DATE), @MONTO, @POST_BY, @POST_IN, CAST(getdate() as DATE))
SET @LASTID = @@IDENTITY
INSERT INTO MC_MOVIMIENTOCANCION (FK_MOVIMIENTOMIEMBRO, FK_CANCION, FECHA, CANTIDADBAJADAS, POST_BY, POST_IN, POST_DATE)
VALUES (@LASTID, @ID_CANCION, CAST(getdate() as DATE), 0, @POST_BY, @POST_IN, CAST(getdate() as DATE))
UPDATE MC_CANCION
SET CANTIDADVENDIDA = CANTIDADVENDIDA + 1
WHERE ID = @ID_CANCION
UPDATE MC_MIEMBRO
SET SALDO = SALDO - @MONTO, CANTIDADCOMPRAS = CANTIDADCOMPRAS + 1
WHERE ID = @ID_MIEMBRO
RETURN 1;
END TRY
BEGIN CATCH
RETURN @@ERROR*-1;
END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE CONSULTA_CANTIDADBAJADAS
(@ID INT)
AS
BEGIN
BEGIN TRY
SELECT M.CANTIDADBAJADAS
FROM MC_MOVIMIENTOCANCION AS M
WHERE M.ID = @ID
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO


-----------------------------------------------------------------------------------------------------------------------
GO
CREATE PROCEDURE CONSULTA_MOVCANCXMIEMBRO
(@MIEMBRO VARCHAR(50))
AS
BEGIN
DECLARE @ID_MIEMBRO INT
SET @ID_MIEMBRO = (SELECT D.ID FROM MC_MIEMBRO AS D WHERE D.CUENTA = @MIEMBRO)
BEGIN TRY
SELECT C.ID, U.NOMBRE, C.FECHA, F.NOMBRE, M.MONTO, C.CANTIDADBAJADAS
FROM MC_MIEMBRO AS U
INNER JOIN MC_MOVIMIENTOMIEMBRO AS M ON M.FK_MIEMBRO = @ID_MIEMBRO
INNER JOIN MC_MOVIMIENTOCANCION AS C ON C.FK_MOVIMIENTOMIEMBRO = M.ID
INNER JOIN MC_CANCION AS F ON F.ID = C.FK_CANCION
WHERE U.ID = @ID_MIEMBRO
RETURN 1
END TRY
    BEGIN CATCH
RETURN @@ERROR*-1
    END CATCH;
END
GO

domingo, 6 de abril de 2014

Creación de Procedures para la aplicación de Escritorio 2


Creador del post: Edward Ovares Villegas.
Inicio: 15:30 Fin: 20:00
Horas trabajadas: 4.5

Se crearon los procedures de AddInterprete,DeleteInterprete,GetInterprete,GetInterpreteA,UpdateInterprete.

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_AddInterprete]
@Nombre VARCHAR(50),
@POST_BY VARCHAR(20),
@POST_IN VARCHAR(20),
@ReturnValue INT OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
IF(EXISTS (SELECT * FROM [dbo].[MC_INTERPRETE] AS I WHERE [Nombre]=@NOMBRE))
BEGIN
PRINT 'EL INTERPRETE YA EXISTE.';
SET @ReturnValue = 0;
END
ELSE
BEGIN
INSERT INTO [MC_INTERPRETE]
([Nombre],[Activo],[POST_BY],[POST_IN],[POST_DATE])
VALUES(@Nombre,1,@POST_BY,@POST_IN,GETDATE());
PRINT 'SE HA INGRESADO EL INTERPRETE.';
SET @ReturnValue = 1;
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_AddInterprete';
SET @ReturnValue = -1;
RETURN @@ERROR*-1;
END CATCH;
END

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_DeleteInterprete]
@ID INT,
@Activo INT,
@ReturnValue INT OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
UPDATE [dbo].[MC_INTERPRETE]
SET [Activo]=@ACTIVO
WHERE [ID]=@ID;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
SET @ReturnValue = 1;
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_DeleteInterprete';
SET @ReturnValue = -1;
RETURN @@ERROR*-1;
END CATCH;
END

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_GetInterprete]
@ret int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY --Inicio del TRY
BEGIN TRANSACTION
SELECT * FROM [dbo].[MC_INTERPRETE];
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- COMMIT of transaction
PRINT 'Commit transaction.';
SET @ret = 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_GetInterprete';
--RETURN @@ERROR*-1;
SET @ret = -1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_GetInterpreteA]
@ret int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY --Inicio del TRY
BEGIN TRANSACTION
SELECT * FROM [dbo].[MC_INTERPRETE] WHERE [Activo] = 1;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- COMMIT of transaction
PRINT 'Commit transaction.';
SET @ret = 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_GetInterpreteA';
--RETURN @@ERROR*-1;
SET @ret = -1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_UpdateInterprete]
@ID INT,
@Nombre VARCHAR(50),
@ReturnValue INT OUTPUT
AS
SET @ReturnValue = 0;
BEGIN
BEGIN TRY
BEGIN TRANSACTION
IF(EXISTS (SELECT * FROM [dbo].[MC_INTERPRETE] AS I
WHERE I.[Nombre] = @Nombre
))
BEGIN
PRINT 'YA EXISTE UN INTERPRETE CON ESOS DATOS.';
SET @ReturnValue = 0;
END
ELSE
BEGIN
UPDATE [dbo].[MC_INTERPRETE]
SET [Nombre] = @Nombre
WHERE [ID]=@ID;
PRINT 'SE HA ACTUALIZADO EL INTERPRETE';
SET @ReturnValue = 1;
END
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_UpdateInterprete';
SET @ReturnValue = -1;
RETURN @@ERROR*-1;
END CATCH;
END

--------------------------------------------------------------------------------------------------------------------------

sábado, 5 de abril de 2014

Creación de Procedures para la aplicación de escritorio


Creador del post: Edward Ovares Villegas.
Inicio: 10:00 Fin: 15:15
Horas trabajadas: 5

Se crearon los procedures de CheckAdministrador, AddAdministrador, CheckParametro, GetParametros, UpdateParametro,GetErrorInfo.

--------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[MC_SP_AddAdministrador]
@UserName VARCHAR(50), @Password VARCHAR(30), @ret int OUTPUT
AS
-- Declaraciones de variables
DECLARE @ReturnValue INT;
BEGIN
SET NOCOUNT ON;
BEGIN TRY --Inicio del TRY
BEGIN TRANSACTION

SET @ReturnValue = (SELECT COUNT(MC_ADMINISTRADOR.USUARIO)
FROM [dbo].[MC_ADMINISTRADOR]
WHERE MC_ADMINISTRADOR.USUARIO = @UserName);

IF @ReturnValue = 0 --IF: Usuario no existe
BEGIN
INSERT INTO MC_ADMINISTRADOR --Insert of administrator
VALUES(@UserName,@UserName);
SET @ret = 1;
PRINT 'Insert Administrador successfully.';
END; --END IF
ELSE --ELSE: Usuario existe
BEGIN
PRINT 'WARNING: The user exist.';
SET @ret = 0;
END; --END ELSE
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
SET @ret = 0;
PRINT 'Error: Rolling back transaction AddAdministrador';
RETURN @@ERROR*-1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_CheckAdministrador]
@UserName VARCHAR(50), @Password VARCHAR(30),
@IsValid int OUTPUT,@ID int OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
SET @IsValid = (SELECT COUNT(MC_ADMINISTRADOR.USUARIO)
FROM [dbo].[MC_ADMINISTRADOR]
WHERE MC_ADMINISTRADOR.USUARIO = @UserName AND MC_ADMINISTRADOR.CLAVE = @Password);
IF(@IsValid>=1)
BEGIN
PRINT 'Administrador ID.';
SET @ID = (SELECT ID FROM [dbo].[MC_ADMINISTRADOR]
WHERE MC_ADMINISTRADOR.USUARIO = @UserName AND MC_ADMINISTRADOR.CLAVE = @Password);
END
COMMIT TRANSACTION;
PRINT 'Commit transaction of CheckAdministrador.';
RETURN 1;
END TRY
BEGIN CATCH
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
PRINT 'Error: Rolling back transaction of CheckAdministrador.';
RETURN @@ERROR*-1;
END CATCH;
END
GO

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_CheckParametro]
@NOMBRE VARCHAR(50)
--,@VALOR MONEY OUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
SELECT *
FROM [dbo].[MC_PARAMETRO] AS P
WHERE P.[Nombre]=@NOMBRE;

IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
PRINT 'Error: Rolling back transaction of MC_SP_CheckParametro.';
RETURN @@ERROR*-1;
END CATCH;
END;
GO

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_GetParametro]
@ret int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY --Inicio del TRY
BEGIN TRANSACTION
SELECT * FROM MC_PARAMETRO;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- COMMIT of transaction
PRINT 'Commit transaction.';
SET @ret = 1;
END TRY
BEGIN CATCH --ERROR in the transaction
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION; -- ROLLBACK of trasaction
PRINT 'Error: Rolling back transaction MC_SP_GetParametro';
--RETURN @@ERROR*-1;
SET @ret = -1;
END CATCH;
END;

--------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[MC_SP_UpdateParametro]
@ID INT,
@VALOR VARCHAR(80)
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @MON MONEY
SET @MON = (SELECT PARSE(@VALOR AS MONEY));
UPDATE [dbo].[MC_Parametro]
SET [dbo].[MC_Parametro].[VALOR] = @MON
WHERE [dbo].[MC_Parametro].[ID] = @ID;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION; -- Commit transaction
PRINT 'Commit transaction.';
RETURN 1;
END TRY
BEGIN CATCH
EXEC MC_SP_GetErrorInfo;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
PRINT 'Error: Rolling back transaction of MC_SP_CheckParametro.';
RETURN @@ERROR*-1;
END CATCH;
END;

miércoles, 26 de febrero de 2014

Creación del Modelo Físico

Se creo el modelo físico, basándonos en el modelo conceptual dado por el profesor en clase. Se trabajo el modelo por partes, Edward creando las primeras 6 tablas y Javier haciendo las últimas 6 tablas. Luego de terminar el modelo físico se autogeneró el código de las tablas usadas en la base.
Horas Trabajadas: 1 hora
Autor: Javier Gómez

domingo, 23 de febrero de 2014

Instalación correcta de la plataformas de desarrollo

Se procedió a la actualización de Windows 8 Home Basic a Windows 8 Profesional. También a la instalación de SQL Server 2012 y la del Visual Studio Ultimate 2013. Horas de trabajo: 2.5 horas Autor: Edward Ovares

sábado, 22 de febrero de 2014

Instalación fallida de sql y visual studio

Se realizó la instalación de SQL Server 2008 y Visual Studio 2010 ambos dando errores de compatibilidad con el sistema operativo. Horas de trabajo: 2 horas Autor: Edward Ovares

Instalación de Visual Studio y de SQL Server

Se instaló correctamente el Visual Studio 2012 y el SQL Server 2008 sin presentar ningún inconveniente.
Horas de Trabajo: 1 hora
Autor: Javier Gómez

viernes, 21 de febrero de 2014

Se creo el blog, dándole permisos a mi persona y a Edward Ovares para poder escribir entradas.
Horas de trabajo: 0.5 horas
Autor: Javier Gómez