Buscar en el blog

lunes, 25 de agosto de 2014

En este artículo, continuaremos programando diferentes funciones que nos permitirán realizar diferentes procesos dentro de nuestros formularios. Vamos a ver como agregar registros, modificarlos y eliminarlos de cualquier tabla que tenagamos en nuestra base de datos.

Lo primero que debemos de saber es que la realización de estos procesos, se realizan llamando a una consulta sql. Estas consultas tienen diferentes formas de construcción que veremos a continuación:

Para insertar registros:
"INSERT INTO Nombre de la tabla (campo1,campo2,campo3)VALUES(valor1,valor2,valor3)"

Para eliminar registros:
"DELETE * FROM Nombre de la tabla WHERE Condición"

Para Actualizar registros:
"UPDATE Nombre de la tabla SET Campo1=Valor1,Campo2=Valor2,Campo3=Valor3 WHERE Condicion"

Y ahora vamos a verlo en programación, de forma que tendremos las siguientes funciones. Volvemos a lo mismo, las funciones que programaremos devolverán de resultado booleano, es decir, verdadero o falso.
Verdadero si se realiza correctamente el proceso y falso si no se realiza correctamente.
Vamos a verlo y con esto nos despedimos en este artículo para continuar en el siguiente.

'Debajo de la variable Conex, declararemos las siguientes variables:

  Public Comando As OleDbCommand 'Comando que se encarga de ejecutar consultas SQL
    Public nRegistros As Integer 'Almacenamos en esta variable el número de registros insertados, actualizados o eliminados
    Public ConsultaSQL As String 'Almacena una consulta SQL

'Y ahora si, programamos la función para agregar registros a la base de datos.A esta función le vamos a pasar como parámetro una consulta SQL completa. Más tarde, cuando empecemos con la programación de los botones veremos como se hace, por el momento, estamos programando cosas generales. Vamos con la función para agregar registros.
 Function AgregarRegistros(ConsultaSQL As String) As Boolean
        Try
            'Primero debemos conectarnos a la base de datos
            Call Conectar()

            'Creamos un nuevo comando pasandole dos parametros: La consulta que en este caso será una consulta de Inserción (Insert Into)
            'y la conexión que se va a utilizar, en este caso será la conexión que apunta a la base de datos llamada Agenda multiusuario

            Comando = New OleDbCommand(ConsultaSQL, Conex)

            'Establecemos las características del comando

            With Comando
                .CommandText = ConsultaSQL
                .CommandType = CommandType.Text
                nRegistros = .ExecuteNonQuery()
            End With

            'El ExecuteNonQuery siempre devuelve el número de registros insertados, eliminados o actualizados por eso
            'al llamar a ese procedimiento asignamos su valor a la variable nRegistros, de esta forma, ahora podemos crear
            'una condición con la variable nRegistros, y lo haremos de la siguiente manera:

            'Si nRegistros es mayor que cero, quiere decir que inserto registros, en caso contrario, quiere decir que no
            'inserto ningun registro

            If nRegistros > 0 Then
                Call Desconectar()
                MsgBox(nRegistros & " registo(s) se ha(n) insertado correctamente", vbInformation, "Inserción realizada")
                Return True
            Else
                MsgBox("No se ha insertado ningún registro", vbCritical, "Inserción no realizada")
                Call Desconectar()
                Return False
            End If
        Catch ex As Exception
            'Si ejecuta el catch es que existio un error y por tanto no inserto nada, así que en este caso mostraremos un mensaje
            Call Desconectar()
            MsgBox("No se ha podido insertar el registro solicitado" & vbCr & ex.ToString, vbCritical, "Inserción de registros fallida")
            Return False
        End Try
    End Function
'Bien ahora quíero que os fijeis en las otras dos funciones que vienen a continuación, la de eliminar y la de actualizar registros. Vereis, si os deteneis a echar un vistazo al código que es exactamente igual, lo único que cambiará será la sentencia SQL y los parametros que se le pasarán a la función y claro está, logicamente los msgbox que aparecerán al usuario.
'Vamos con la función de eliminación de registros:
Function EliminarRegistros(Tabla As String, Condicion As String) As Boolean
'Aquí en esta consulta le pasamos: La tabla de la cual queremos eliminar el registro y la condición que debe cumplir para poder ser eliminado. Fijaros que la Tabla y la Condición son parámetros que se le pasan a la función de EliminarRegistros.
        ConsultaSQL = "DELETE * FROM " & Tabla & "WHERE " & Condicion

        'La consulta dice: Elimina todos los campos (por esto el *) de la tabla que le pasemos donde se cumpla una condicion
        'que le pasaremos tambien
        Try
            'Nos conectamos a la base de datos
            Call Conectar()

            'Creamos un nuevo comando pasandole dos parametros: La consulta que en este caso será una consulta de Eliminación
            '(DELETE)
            'y la conexión que se va a utilizar, en este caso será la conexión que apunta a la base de datos llamada Agenda multiusuario

            Comando = New OleDbCommand(ConsultaSQL, Conex)

            'Establecemos las características del comando

            With Comando
                .CommandText = ConsultaSQL
                .CommandType = CommandType.Text
                nRegistros = .ExecuteNonQuery()
            End With

            'El ExecuteNonQuery siempre devuelve el número de registros insertados, eliminados o actualizados por eso
            'al llamar a ese procedimiento asignamos su valor a la variable nRegistros, de esta forma, ahora podemos crear
            'una condición con la variable nRegistros, y lo haremos de la siguiente manera:

            'Si nRegistros es mayor que cero, quiere decir que en este caso, eliminó registros,
            'en caso contrario, quiere decir que no elimino ningun registro

            If nRegistros > 0 Then
                Call Desconectar()
                MsgBox(nRegistros & " registo(s) ha(n) sido eliminado(s) correctamente", vbInformation, "Eliminación realizada")
                Return True
            Else
                Call Desconectar()
                MsgBox("No se ha eliminado ningún registro", vbCritical, "Eliminación no realizada")
                Return False
            End If
        Catch ex As Exception
            Call Desconectar()
            'Si ejecuta el catch es que existio un error y por tanto no inserto nada, así que en este caso mostraremos un mensaje
            MsgBox("No se ha podido eliminar el registro solicitado" & vbCr & ex.ToString, vbCritical, "Eliminación de registros fallida")
            Return False
        End Try
    End Function
'y ahora con la función de actualización de registros:
Function ActualizarRegistros(Tabla As String, Campos As String, Condicion As String) As Boolean
'Aquí le pasamos tambien la Tabla que queremos actualizar, los campos que queremos actualizar (junto con los valores con los cuales queremos acutalizar la tabla, esto lo veremos más claro cuando comencemos a programar los botones de los formularios) y la condición que se debe cumplir para poder actualizar el registro
        ConsultaSQL = "UPDATE " & Tabla & "SET " & Campos & " WHERE " & Condicion

        'La consulta dice: Actualiza en la tabla que le pasemos, los campos que le pasemos con los valores correspondientes
        'donde se cumpla una condicion

        Try
            'Nos conectamos a la base de datos
            Call Conectar()
            'Creamos un nuevo comando pasandole dos parametros: La consulta que en este caso será una consulta de Actualización
            '(UPDATE)
            'y la conexión que se va a utilizar, en este caso será la conexión que apunta a la base de datos llamada Agenda multiusuario

            Comando = New OleDbCommand(ConsultaSQL, Conex)

            'Tener en cuenta que en este caso, se utiliza tambien la palabra SET para que los campos puedan ser actualizados
            'Establecemos las características del comando

            With Comando
                .CommandText = ConsultaSQL
                .CommandType = CommandType.Text
                nRegistros = .ExecuteNonQuery()
            End With

            'El ExecuteNonQuery siempre devuelve el número de registros insertados, eliminados o actualizados por eso
            'al llamar a ese procedimiento asignamos su valor a la variable nRegistros, de esta forma, ahora podemos crear
            'una condición con la variable nRegistros, y lo haremos de la siguiente manera:

            'Si nRegistros es mayor que cero, quiere decir que en este caso, actualizó registros,
            'en caso contrario, quiere decir que no actualizo ningun registro

            If nRegistros > 0 Then
                Call Desconectar()
                MsgBox(nRegistros & " registo(s) ha(n) sido actualizado(s) correctamente", vbInformation, "Actualización realizada")
                Return True
            Else
                Call Desconectar()
                MsgBox("No se ha actualizado ningún registro", vbCritical, "Actualización no realizada")
                Return False
            End If
        Catch ex As Exception
            Call Desconectar()
            'Si ejecuta el catch es que existio un error y por tanto no inserto nada, así que en este caso mostraremos un mensaje
            MsgBox("No se ha podido actualizar el registro solicitado" & vbCr & ex.ToString, vbCritical, "Actualización de registros fallida")
            Return False
        End Try

    End Function

0 comentarios:

Publicar un comentario

 
Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies. OK | Más información