http://pabletoreto.blogspot.com/2012/07/clase-acme-en-vb.html
Para empezar, puesto que estoy utilizando SQL Xpress 2008, haré los procedimientos almacenados sobre mi base de datos llamada registro utilizando el Microsoft SQl Server Management 2008
esta es la tabla empleado que utilizaremos, se encuentra en la base de datos registro
Lo que sigue es crear una nueva consulta y a continuación esta el código T-SQL para crear los procedimientos almacenados en la base de datos registro sobre la tabla empleado
Procedimiento Almacenado
AgregarDatos
Este será el procedimiento almacenado que se utilizara para
agregar registros de un nuevo empleado a la base de datos, se tiene un parámetro
output que regresa un mensaje dependiendo si la acción de insertar datos se realizó
con éxito o si hubo algún problema.
Se muestra el uso de TRANSACTION aunque se trabaja sobre una
sola tabla, se puede omitir el uso de este pero en caso se trabaje con base de
datos relacionales puede venir en uso.
USE registro
GO
IF OBJECT_ID('AgregarDatos','p')is not null
DROP PROCEDURE AgregarDatos
GO
CREATE PROCEDURE AgregarDatos
@nombres varchar(50),
@cargo varchar(50),
@departamento varchar(50),
@jefe varchar(50),
@mensaje varchar(100) output
AS
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
INSERT INTO empleado VALUES(@nombres, @cargo, @departamento, @jefe)
COMMIT
SELECT @mensaje='Registro ingresado correctamente en Base de Datos !!!'
END TRY
BEGIN CATCH
ROLLBACK
SELECT @mensaje='Registro no ingresado en Base de Datos !!!'
END CATCH
Procedimiento Almacenado
ModificarDatos
Este será el procedimiento almacenado que se utilizara para
modificar registros de empleados existentes en la base de datos, se tiene un parámetro
output que regresa un mensaje dependiendo si la acción de modificar datos se realizó
con éxito o si hubo algún problema.
USE registro
GO
if OBJECT_ID('ModificarDatos','p') is not null
DROP PROC ModificarDatos
GO
CREATE PROC ModificarDatos
@codigo int,
@nombres varchar(50),
@cargo varchar(50),
@departamento varchar(50),
@jefe varchar(50),
@mensaje varchar(100) output
AS
SET NOCOUNT ON
IF exists (select * from empleado where Codigo=@codigo)
BEGIN TRY
BEGIN TRAN
UPDATE empleado SET Nombres=@nombres, Cargo=@cargo, Departamento=@departamento, Jefe=@jefe WHERE Codigo=@codigo
COMMIT
SET @mensaje='El registro fue actualizado correctamente !!!'
END TRY
BEGIN CATCH
ROLLBACK
SET @mensaje='El registro no fue actualizado !!!'
END CATCH
ELSE
BEGIN
SET @mensaje='El registro no existe en la base de datos !!!'
END
Procedimiento Almacenado
EliminarDatos
Este será el procedimiento almacenado que se utilizara para
eliminar registros de empleados existentes en la base de datos, se tiene un parámetro
output que regresa un mensaje dependiendo si la acción de eliminar datos se realizó
con éxito o si hubo algún problema.
USE registro
GO
IF OBJECT_ID('EliminarDatos','p')is not null
DROP PROC EliminarDatos
GO
CREATE PROCEDURE EliminarDatos
@codigo int,
@mensaje varchar(100) output
AS
SET NOCOUNT ON
IF EXISTS (select * from empleado where Codigo=@codigo)
BEGIN TRY
BEGIN TRANSACTION
DELETE FROM empleado WHERE Codigo=@codigo
COMMIT
SELECT @mensaje='Registro eliminado correctamente de Base de Datos
!!!'
END TRY
BEGIN CATCH
ROLLBACK
set @mensaje='Registro no fue eliminado de la Base de Datos !!!'
END CATCH
ELSE
BEGIN
SET @mensaje='Registro no se puede eliminar pues no existe !!!'
END
ahora muestro el formulario que utilizare, algo a tomar en cuenta es que los datos de la conexión a la base de datos los guardo en un app.config, aquí dejo el link que lo explica: http://pabletoreto.blogspot.com/search/label/App.Config
Evento Form_Load
Al cargar el formulario lo primero que se hará es llenar el DataGridView con los datos de la tabla empleado y habilitar el Bindingnavigator
para poder moverse a través de los registros de la tabla, esto se logra
invocando al método CargarDatos el cual además crea un enlace entra el
BindingNavigator y los textBox para mostrar la información correspondiente
Private
Sub Form1_Load(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
MyBase.Load
CargarDatos()
End Sub
Función
Connectar()
Lo único que hace esta función es realizar la conexión a la
base de datos y regresar un objeto tipo SqlConnection obteniendo la información
del app.config tal como muestra el connectionstrings
<connectionStrings>
<add name="conexion" connectionString="Data Source=.\LINGONET;Initial
Catalog=registro;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Y este es el código VB para la función Connectar()
Private
Function Connectar() As
SqlConnection
Dim cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("conexion").ConnectionString)
cnn.Open()
Return cnn
End
Function
Cargar datos de la
tabla empleado en DataGridView
Private
Sub CargarDatos()
Dim bs As New BindingSource
Dim
cargardatos As String
= "select * from empleado"
Dim cnn
As SqlConnection
= Connectar()
Dim da As New SqlDataAdapter(cargardatos,
cnn)
Dim dt As New DataTable
da.Fill(dt)
bs.DataSource = dt
BindingNavigator1.BindingSource = bs
DGV.DataSource = bs
CodigoText.DataBindings.Clear()
CodigoText.DataBindings.Add(New Binding("text", bs, "Codigo"))
Noento Form Load()mbresText.DataBindings.Clear()
NombresText.DataBindings.Add(New Binding("text", bs, "Nombres"))
CargoText.DataBindings.Clear()
CargoText.DataBindings.Add(New Binding("text", bs, "cargo"))
DptoText.DataBindings.Clear()
DptoText.DataBindings.Add(New Binding("text", bs, "departamento"))
JefeText.DataBindings.Clear()
JefeText.DataBindings.Add(New Binding("text", bs, "jefe"))
cnn.Close()
End Sub
Evento click botón
AgregarRegistro
Private
Sub BAgregar_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
BAgregar.Click
Try
Dim cnn As SqlConnection = Connectar()
Dim cmd As New SqlCommand("AgregarDatos", cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@nombres",
SqlDbType.VarChar).Value = NombresText.Text
cmd.Parameters.Add("@cargo", SqlDbType.VarChar).Value
= CargoText.Text
cmd.Parameters.Add("@departamento",
SqlDbType.VarChar).Value = DptoText.Text
cmd.Parameters.Add("@jefe",
SqlDbType.VarChar).Value = JefeText.Text
cmd.Parameters.Add("@mensaje",
SqlDbType.VarChar, 100)
cmd.Parameters("@mensaje").Direction
= ParameterDirection.Output
cmd.ExecuteNonQuery()
Dim mensaje As String =
cmd.Parameters("@mensaje").Value
MessageBox.Show(mensaje)
cnn.Close()
cmd.Dispose()
CargarDatos()
Catch
ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Evento click botón
ModificarRegistro
Private
Sub BModificar_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
BModificar.Click
Try
Dim cnn As SqlConnection =
Connectar()
Dim cmd As New SqlCommand("ModificarDatos")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = cnn
cmd.Parameters.Add("@codigo",
SqlDbType.Int).Value = CodigoText.Text
cmd.Parameters.Add("@nombres",
SqlDbType.VarChar).Value = NombresText.Text
cmd.Parameters.Add("@cargo",
SqlDbType.VarChar).Value = CargoText.Text
cmd.Parameters.Add("@departamento",
SqlDbType.VarChar).Value = DptoText.Text
cmd.Parameters.Add("@jefe",
SqlDbType.VarChar).Value = JefeText.Text
cmd.Parameters.Add("@mensaje",
SqlDbType.VarChar, 100)
cmd.Parameters("@mensaje").Direction
= ParameterDirection.Output
cmd.ExecuteNonQuery()
Dim mensaje As String =
cmd.Parameters("@mensaje").Value
MessageBox.Show(mensaje)
cnn.Close()
cmd.Dispose()
CargarDatos()
Catch
ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Evento click botón EliminarRegistro
Private
Sub BEliminar_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
BEliminar.Click
Try
Dim cnn As SqlConnection =
Connectar()
Dim cmd As New SqlCommand("EliminarDatos",
cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@codigo", CodigoText.Text)
cmd.Parameters.Add("@mensaje",
SqlDbType.VarChar, 100)
cmd.Parameters("@mensaje").Direction
= ParameterDirection.Output
cmd.ExecuteNonQuery()
Dim mensaje As String =
cmd.Parameters("@mensaje").Value
MessageBox.Show(mensaje)
cnn.Close()
cmd.Dispose()
CargarDatos()
Catch
ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub