示例#1
0
        // Registra un nuevo usuario del personal.
        // Se puede registrar solamente el usuario,
        // o el usuario y además vincular una tarjeta.
        #region InsertaNuevoPersonal
        public static int InsertaNuevoPersonal(string nombre, int hSemanales, int hAnuales, string idTarjeta)
        {
            // Registra un nuevo usuario del personal.
            // Guarda datos en tres tablas:
            // 1. Tabla Personal: Genera un random ID, guarda nombre y apellidos
            // 2. Tabla Horario: Guarda los horarios y el ID personal
            // 3. Tabla Tarjeta: Guarda el ID de la tarjeta registrada con el usuario

            #region Declaración OleDbCommands
            OleDbCommand insertaPersonalCmd = new OleDbCommand
            {
                CommandText = String.Format("INSERT INTO Personal (PersonalNombre) VALUES ('{0}')", nombre),
                Connection  = dbConnection
            };

            OleDbCommand insertaHorarioCmd = new OleDbCommand
            {
                CommandText = String.Format("INSERT INTO Horario (PersonalId, NumHorasSemanales, NumHorasAnuales) VALUES (X, {0}, {1})", hSemanales, hAnuales),
                Connection  = dbConnection
            };

            OleDbCommand insertaTarjetaCmd = null;

            if (idTarjeta != "")
            {
                insertaTarjetaCmd = new OleDbCommand
                {
                    CommandText = String.Format("INSERT INTO Tarjeta (TarjetaId, PersonalId) VALUES ('{0}', X)", idTarjeta),
                    Connection  = dbConnection
                };
            }

            OleDbCommand selectComprovacionTarjetaCmd = new OleDbCommand
            {
                CommandType = CommandType.Text,
                CommandText = String.Format("SELECT * FROM Tarjeta WHERE TarjetaId LIKE '{0}'", idTarjeta),
                Connection  = dbConnection
            };

            OleDbCommand selectIdPersonalCmd = new OleDbCommand
            {
                CommandType = CommandType.Text,
                CommandText = "SELECT TOP 1 * FROM Personal ORDER BY PersonalId DESC",
                Connection  = dbConnection
            };
            #endregion

            try
            {
                if (dbConnection.State != ConnectionState.Open)
                {
                    dbConnection.Open();
                }

                // Comprueba que la tarjeta que se quiere
                // vincular no esté ya registrada
                OleDbDataReader dataReaderTarjeta = selectComprovacionTarjetaCmd.ExecuteReader();

                if (dataReaderTarjeta.HasRows)
                {
                    return(-1);
                }

                // Si no lo está, inserta el usuario
                insertaPersonalCmd.ExecuteNonQuery();

                // Después recoge el ID para poder insertarlo en las otras tablas
                int             idPersonal = -2;
                OleDbDataReader dataReader = selectIdPersonalCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    insertaHorarioCmd.CommandText = insertaHorarioCmd.CommandText.Replace("X", dataReader.GetValue(0).ToString());
                    if (insertaTarjetaCmd != null)
                    {
                        insertaTarjetaCmd.CommandText = insertaTarjetaCmd.CommandText.Replace("X", dataReader.GetValue(0).ToString());
                    }
                    idPersonal = (int)dataReader.GetValue(0);
                }

                // Y finalmente inserta el horario y
                // la tarjeta (en caso de que tenga)
                insertaHorarioCmd.ExecuteNonQuery();
                if (insertaTarjetaCmd != null)
                {
                    insertaTarjetaCmd.ExecuteNonQuery();
                }

                dbConnection.Close();

                return(idPersonal);
            }
            catch (OleDbException ex)
            {
#if Debug
                GlobalData.PrintDebug("EXCEPCIÓN BD", ex.Message);
                GlobalData.PrintDebug("EXCEPCIÓN BD", ex.StackTrace);
#endif

                return(-3);
            }
            catch (InvalidOperationException ex)
            {
#if Debug
                GlobalData.PrintDebug("EXCEPCIÓN BD", ex.Message);
                GlobalData.PrintDebug("EXCEPCIÓN BD", ex.StackTrace);
#endif

                return(-4);
            }
        }
示例#2
0
        // Devuelve el nombre del personal con el ID de tarjeta indicado
        #region NombreDePersonalConIDTarjeta
        public static string NombreDePersonalConIDTarjeta(long tarjetaId)
        {
            string nombre = "";

            OleDbCommand selectPersonalIdCmd = new OleDbCommand
            {
                CommandText = String.Format("SELECT PersonalId FROM Tarjeta WHERE TarjetaId LIKE '{0}'", tarjetaId.ToString()),
                Connection  = dbConnection
            };

            OleDbCommand selectNombreCmd = new OleDbCommand
            {
                CommandText = "SELECT PersonalNombre FROM Personal WHERE PersonalId LIKE X",
                Connection  = dbConnection
            };

            try
            {
                if (dbConnection.State != ConnectionState.Open)
                {
                    dbConnection.Open();
                }

                OleDbDataReader dataReaderPersonalId = selectPersonalIdCmd.ExecuteReader();

                if (dataReaderPersonalId.HasRows)
                {
                    while (dataReaderPersonalId.Read())
                    {
                        selectNombreCmd.CommandText = selectNombreCmd.CommandText.Replace("X", dataReaderPersonalId.GetValue(0).ToString());
                    }
                }
                else
                {
                    return("null");
                }

                OleDbDataReader dataReaderNombre = selectNombreCmd.ExecuteReader();

                if (dataReaderNombre.HasRows)
                {
                    while (dataReaderNombre.Read())
                    {
                        nombre = dataReaderNombre.GetValue(0).ToString();
                    }
                }
                else
                {
                    return("null");
                }

                dbConnection.Close();

                return(nombre);
            }
            catch (OleDbException ex)
            {
                MessageBox.Show("Ha habido un problema con la base de datos. ",
                                "Error", MessageBoxButton.OK, MessageBoxImage.Warning);

#if Debug
                GlobalData.PrintDebug("ERROR ACCESS", "Mensaje: " + ex.Message);
                GlobalData.PrintDebug("ERROR ACCESS", "StackTrace: " + ex.StackTrace);
#endif

                return(null);
            }
            catch (InvalidOperationException ex)
            {
                MessageBox.Show("Ha habido un problema en la escritura a la base de datos. ",
                                "Error", MessageBoxButton.OK, MessageBoxImage.Warning);

#if Debug
                GlobalData.PrintDebug("ERROR ACCESS", "Mensaje: " + ex.Message);
                GlobalData.PrintDebug("ERROR ACCESS", "StackTrace: " + ex.StackTrace);
#endif

                return(null);
            }
        }
示例#3
0
        // Recoge los datos de la lista de tarjetas vinculadas
        #region LeerDatosTarjetas
        public static ObservableCollection <Tarjeta> LeerDatosTarjetas()
        {
            ObservableCollection <Tarjeta> listaTarjetas = new ObservableCollection <Tarjeta>();

            OleDbCommand selectTarjetasCmd = new OleDbCommand
            {
                CommandType = CommandType.Text,
                CommandText = "SELECT * FROM Tarjeta",
                Connection  = dbConnection
            };

            OleDbCommand selectPersonalCmd = new OleDbCommand
            {
                CommandType = CommandType.Text,
                CommandText = "SELECT * FROM Personal",
                Connection  = dbConnection
            };

            try
            {
                if (dbConnection.State != ConnectionState.Open)
                {
                    dbConnection.Open();
                }

                // Lee los resultados de la tabla Tarjetas y crea
                // la lista, sin los nombres

                OleDbDataReader dataReader = selectTarjetasCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    listaTarjetas.Add(
                        new Tarjeta(
                            dataReader.GetValue(0).ToString(),
                            new Personal((int)dataReader.GetValue(1))
                            )
                        );
                }

                // Lee la tabla de Personal y añade los nombres
                // a la lista de tarjetas

                dataReader = selectPersonalCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    foreach (Tarjeta tarjeta in listaTarjetas)
                    {
                        if (tarjeta.Personal.Id == (int)dataReader.GetValue(0))
                        {
                            tarjeta.Personal.Nombre = dataReader.GetValue(1).ToString();
                        }
                    }
                }

                dbConnection.Close();
            }
            catch (OleDbException ex)
            {
                MessageBox.Show("Ha habido un problema en la escritura a la base de datos. " +
                                "No se ha podido insertar la nueva información.", "Error",
                                MessageBoxButton.OK, MessageBoxImage.Warning);

#if Debug
                GlobalData.PrintDebug("ERROR ACCESS", "Mensaje: " + ex.Message);
                GlobalData.PrintDebug("ERROR ACCESS", "StackTrace: " + ex.StackTrace);
                GlobalData.PrintDebug("ERROR ACCESS", "Código error: " + ex.ErrorCode);
#endif
            }

            return(listaTarjetas);
        }