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 Moduley 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 ClassAl 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 ClassY 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