Acciones [Actualizar y Eliminar] en base de datos SQL Compact 4.0
Siguiendo con Sql Compact 4.0 en esta publicación, vamos a editar los datos mediante el uso de un cuadro de dialogo personalizado y también vamos a eliminar datos directamente desde la grid mediante la posición del puntero en la fila respectiva.
Tomando la base de Datos "Northwind. sdf " le hecho unas pequeñas modificaciones que incluyen la eliminación de algunas tablas que estaban referenciadas para que se más practica para el presente ejemplo, en la cual se incluirá en el zip en la parte final de este post.
Para empezar necesitamos los controles mostrados en esta captura:
Como he dicho en post anterior yo les muestro una de las muchas formas que se podrían usar las acciones sobre un BD(base de datos) en SQL. Siendo asi pense en eliminar valores directamente de la grid conectada a la BD.
en esta captura les muestro como:
Como he dicho en post anterior yo les muestro una de las muchas formas que se podrían usar las acciones sobre un BD(base de datos) en SQL. Siendo asi pense en eliminar valores directamente de la grid conectada a la BD.
en esta captura les muestro como:
Para usar la edición use un cuadro de dialogo creado para efecto:
Como ya mostrado anteriormente le pongo la cadena de conexión para la BD la sintaxis sobre el modulo es:
Module Module1
Public path As String = Form1.lbldir.Text
Public conn As New SqlServerCe.SqlCeConnection("Data Source=" & path + ";Max Database Size=4091")
Public sql As String
Public cmd As New SqlServerCe.SqlCeCommand(sql, conn)
Public Sub conectarse()
Try
conn.Open()
' MsgBox("Conexion exitosa")
Catch ex As Exception
MsgBox(ex.ToString())
End Try
' conn.Close()
End Sub
End Module
y dentro del form de edición:Public Class FormControl
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
Sub asignardatos()
Try
Dim i As Integer = Form1.grid.CurrentRow.Index ' indica la fila actual como numero(index)
txtproductid.Text = Form1.grid.Item(0, i).Value ' asigna valores a los textbox desde la grid
txtsupplierid.Text = Form1.grid.Item(1, i).Value
txtcategoryid.Text = Form1.grid.Item(2, i).Value
txtproduct_name.Text = Form1.grid.Item(3, i).Value
txtenglish_name.Text = Form1.grid.Item(4, i).Value
txtquantity.Text = Form1.grid.Item(5, i).Value
txtunida_price.Text = Form1.grid.Item(6, i).Value
txtunits_stock.Text = Form1.grid.Item(7, i).Value
txtUnits_On_Order.Text = Form1.grid.Item(8, i).Value
txtreorder_level.Text = Form1.grid.Item(9, i).Value
cbodiscontinued.Text = Form1.grid.Item(10, i).Value
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
actualizar()
Form1.cargar_datos()
End Sub
Sub actualizar()
Try
' edita en funcion de la key primary
conectarse()
cmd.CommandType = CommandType.Text
cmd.Connection = conn
sql = "UPDATE PRODUCTS SET "
sql += "[SUPPLIER ID] ='" & txtsupplierid.Text & "',"
sql += "[CATEGORY ID] = '" & txtcategoryid.Text & "',"
sql += "[PRODUCT NAME]= '" & txtproduct_name.Text & "',"
sql += "[ENGLISH NAME] = '" & txtenglish_name.Text & "',"
sql += "[QUANTITY PER UNIT] = '" & txtquantity.Text & "',"
sql += "[UNIT PRICE] = '" & txtunida_price.Text & "',"
sql += "[UNITS IN STOCK] = '" & txtunits_stock.Text & "',"
sql += "[UNITS ON ORDER] = '" & txtUnits_On_Order.Text & "',"
sql += "[REORDER LEVEL] = '" & txtreorder_level.Text & "',"
sql += "[DISCONTINUED] = '" & cbodiscontinued.Text & "'"
sql += "WHERE [PRODUCT ID] =" & txtproductid.Text
cmd.CommandText = sql
cmd.ExecuteNonQuery()
MsgBox("Registro actualizado satisfactoriamente", vbExclamation)
Me.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
conn.Close()
End Sub
Private Sub txtcategoryid_TextChanged(sender As Object, e As EventArgs) Handles txtunits_stock.TextChanged, txtUnits_On_Order.TextChanged, txtunida_price.TextChanged, txtsupplierid.TextChanged, txtreorder_level.TextChanged, txtquantity.TextChanged, txtproduct_name.TextChanged, txtenglish_name.TextChanged, txtcategoryid.TextChanged
btnAceptar.Enabled = True
End Sub
Private Sub btncancelar_Click(sender As Object, e As EventArgs) Handles btncancelar.Click
Me.Close()
End Sub
End Class
Al final sobre el Form principal:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
cargar_datos() '...................habilita los botones de acciones
btnactualizar.Enabled = True
btnborrar.Enabled = True
End Sub
Sub cargar_datos() ' procedimiento para cargar los datos
Try
conectarse()
Dim ds As New DataSet
Dim dt As New DataTable
Dim strSql As String = "SELECT* FROM PRODUCTS "
Dim adp As New SqlServerCe.SqlCeDataAdapter(strSql, conn)
adp.Fill(dt)
grid.DataSource = dt
Catch ex As Exception
ex.ToString()
End Try
conn.Close()
contar()
End Sub
Sub contar() ' cuenta las filas del grid
Dim i As Integer = grid.Rows.Count
lblcounter.Text = "Número de items =" & i
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnactualizar.Click
FormControl.txtproductid.Enabled = False ' en modo edicion desabilita el texbox que contiene la key primary
FormControl.asignardatos() ' asigna los datos de la grid a las cajas de texto
FormControl.ShowDialog() ' por ultimo muestra el form Control
End Sub
Private Sub btnborrar_Click(sender As Object, e As EventArgs) Handles btnborrar.Click
eliminaritem() ' elimina valores llamado al procedimiento
End Sub
Sub eliminaritem()
Dim indice As String
'------------ELIMINA VALORES BUSCADOS-----------
Try
If grid.Rows.Count = 0 Then
MsgBox("No se puede eliminar no existen registros", vbCritical)
ElseIf MessageBox.Show("¿Esta seguro eliminar el registro?", Me.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
conectarse()
Dim row As Integer
row = grid.CurrentRow.Index
indice = grid.Item(0, row).Value
cmd.CommandType = CommandType.Text
sql = "DELETE FROM PRODUCTS WHERE [PRODUCT ID] = '" & indice & "'" ' & '
cmd.CommandText = sql
cmd.ExecuteNonQuery()
MsgBox("Registro eliminado satisfactoriamente", vbExclamation)
Else
MsgBox(" Proceso cancelado", vbCritical)
End If
Catch ex As Exception
MsgBox(" Proceso cancelado. Error al ejecutar tarea", vbCritical)
End Try
conn.Close()
cargar_datos()
'---------------------FINALIZA ELIMINADO------------------
End Sub
End Class
Y eso es todo, mi ejemplo queda al final del post, sus comentarios mas abajo o dirigir a mi correo..gracias! y nos vemos.https://mega.nz/#!BBdVjDjA!m4e4HgSkAMQ-_8TyYfxvV1RUafZVdbTjzF_xQUGMBoA



Comentarios
Publicar un comentario