GESTIÓN DE USUARIOS DE UNA BASE DE DATOS CON VB.NET+MYSQL

October 8, 2017 | Author: jhonedward | Category: Table (Database), Sql, My Sql, Databases, Information Technology Management
Share Embed Donate


Short Description

Download GESTIÓN DE USUARIOS DE UNA BASE DE DATOS CON VB.NET+MYSQL...

Description

GESTIÓN DE USUARIOS DE UNA BASE DE DATOS CON VB.NET+MYSQL

Hola amigos de tecnohackers, en este post he decidido ilustrar con una simple y pequeña aplicacion como gestionar infromacion de una base de datos en mysql realizando operaciones basicas como insert, update, select, delete para guardar, actualizar, buscar, y eliminar datos. Para la realizacion de esta aplicacion haremos uso de visual basic.net 2008 express y mysql 5.0 Bien una vez tengamos todo listo es necesario agregar el conector de mysql con .net al proyecto (lo puedes descargar de: http://dev.mysql.com/downloads/connector/net/), el conector se debe alojar en la carpeta debug del proyecto (ya se encuentra alli para este ejemplo) tal y como se ve en la siguiente imagen:

Bien, despues de esto, pasamos a registrar la libreria, para ello nos vamos al explorador de soluciones (ubicado en la parte derecha de la interfaz de vb.net), presionamos clic derecho sobre la carpeta references y seleccionamos la opcion agregar referencia del menu contextual que aparece, luego, en el cuadro nuevo que se genera te diriges a la pestaña examinar y entras a la carpeta debug del proyecto, luego seleccionas el archivo dll llamado: MySql.Data.dll y presionas el boton aceptar para que la referencia quede correctamente agregada, puedes constatar los pasos a traves de la siguiente imagen:

Posteriormente a este paso realizamos un diseño similar al que se ve en la siguiente imagen:

agregamos 5 botones, 5 textbox y 5 labels para especificar cada campo. Bien hasta aqui nuestra aplicacion esta preparada para aceptar una conectividad con la base de datos, sin embargo aun no hemos creado dicha bd, para ello abrimos nuestro administrador de base de datos preferido, yo en mi caso opto por usar phpmyadmin del appserv para crear la base de datos, la cual se llamara prueba_validar_dato, tendra una tabla llamada usuarios y dicha tabla tendra los siguientes

campos: id, cedula, nombre, apellidos, direccion, email. En la siguiente imagen puedes ver la estructura de la tabla:

puedes crear dicha tabla con el asistente, pero si desean hacerlo a codigo aqui tienen las sentencias sql: CREATE TABLE `usuarios` ( `id` int(11) NOT NULL auto_increment, `cedula` varchar(10) NOT NULL, `nombre` varchar(60) NOT NULL, `apellidos` varchar(50) NOT NULL, `direccion` varchar(80) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`) )

Listo, ahora pasemos nuevamente a nuestro entorno de programacion vb.net y vamos a crear un nuevo modulo en el cual se van a establecer los parametros de conexion con la base de datos, alli se indica el nombre o ip del servidor que posee la base de datos, el usuario de mysql, la contraseña y el nombre de la base de datos, el codigo del modulo es el siguiente:

Imports MySql.Data.MySqlClient Module Modulo_conexion Public cadena As String Public conexion As New MySqlConnection Public sql As String Public mycommand As New MySqlCommand Public myAdapter As New MySqlDataAdapter Public Sub conectarme() 'realizo la conexion' Try 'localhost cadena = "server='localhost'; user id=root; pwd=12345; database=prueba_validar_dato" conexion.ConnectionString = cadena conexion.Open() MsgBox("conexion establecida!!!") Catch ex As Exception MsgBox("No es Posible Establecer Conexion con la Base de Datos Debido a Problemas de Configuracion, Verifique los Parametros de Conexion Por Favor!", MsgBoxStyle.Critical, "Advertencia") End Try End Sub End Module

A continuacion, nos dirigimos a nuestro formulario, hacemos el llamado a la libreria de mysql importandola Imports MySql.Data.MySqlClient

y declaramos una variable como global: Dim encontro As Integer

Luego, pasamos al evento load del formulario para hacer el llamado a la funcion conectarme: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load conectarme() encontro = 0 End Sub

Muy bien, de esa manera siempre que ejecutemos nuestra aplicacion se intentara conectar con la base de datos; ahora creamos algunas funciones para gestionar los datos y el formulario. vamos a crear a la funcion limpiar_cajas_de_texto() que se encargara de colocar en blanco cada uno de los text del formulario al presionar el boton nuevo. Sub limpiar_cajas_de_texto() Me.TextBox_cedula.Clear() Me.TextBox_nombre.Clear() Me.TextBox_apellido.Clear() Me.TextBox_direccion.Clear()

Me.TextBox_email.Clear() End Sub

llamamos a dicha funcion o subrutina en el boton nuevo: Private Sub Button_nuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_nuevo.Click limpiar_cajas_de_texto() End Sub

Ahora vamos a programar en el boton buscar, a traves del cual encontraremos usuarios registrados en la base de datos mediante la cedula, en esta funcion vamos a utilizar una variable indicadora llamada encontro para saber si la busqueda tuvo exito o no, si hay coincidencia, la variable encontro pasara al estado 1 y si no hay coincidencia permanecera en 0, aqui esta el codigo a utilizar:

Private Sub Button_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_buscar.Click encontro = 0 Dim nombre, apellido, direccion, email As String nombre = "" apellido = "" direccion = "" email = "" If conexion.State = ConnectionState.Closed Then conexion.Open() End If mycommand = New MySqlCommand("select *from usuarios where cedula='" & Me.TextBox_cedula.Text & "'", conexion) mycommand.Connection = conexion Dim drcampo As MySqlDataReader drcampo = mycommand.ExecuteReader() Try Do While drcampo.Read encontro = 1 nombre = drcampo.GetString(2) apellido = drcampo.GetString(3) direccion = drcampo.GetString(4) email = drcampo.GetString(5) Loop Catch ex As Exception MsgBox("Ha ocurrido un Error!", MsgBoxStyle.Critical, "Error") End Try conexion.Close() If (encontro = 1) Then Me.TextBox_nombre.Text = nombre Me.TextBox_apellido.Text = apellido

Me.TextBox_direccion.Text = direccion Me.TextBox_email.Text = email MsgBox("Usuario encontrado!", MsgBoxStyle.Information, "Notificacion") Else MsgBox("el usuario que usted esta buscando no se encuentra en la base de datos, verifique!", MsgBoxStyle.Exclamation, "Notificacion") End If End Sub

muy bien amigos ahora vamos a codificar el boton guardar, alli vamos a validar que la cedula del usuario no se repita, es decir que no aparezca mas de 1 vez en la base de datos, para ello vamos a crear una subrutina llamada validar asi: Sub validar() encontro = 0 If conexion.State = ConnectionState.Closed Then conexion.Open() End If mycommand = New MySqlCommand("select *from usuarios where cedula='" & Me.TextBox_cedula.Text & "'", conexion) mycommand.Connection = conexion Dim drcampo As MySqlDataReader drcampo = mycommand.ExecuteReader() Try Do While drcampo.Read encontro = 1 Loop Catch ex As Exception MsgBox("Ha ocurrido un Error!", MsgBoxStyle.Critical, "Error") End Try conexion.Close() If (encontro = 1) Then MsgBox("no se puede Guardar, ya hay un registro con la misma cedula!", MsgBoxStyle.Exclamation, "Notificacion") Else guardar() End If End Sub

en caso tal de que el usuario no este registrado en la base de datos procedemos a guardarlo haciendo el llamado a la funcion o procedimiento guardar: Sub guardar() If conexion.State() = ConnectionState.Closed Then conexion.Open() End If sql = "SELECT * FROM usuarios"

mycommand.Connection = conexion mycommand.CommandText = sql '--------------------------------------------------------------------------------------------------------------------------'procedo a pasar los datos de los textbox a la variable para guardar mycommand.Parameters.Clear() mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text) mycommand.Parameters.AddWithValue("?nombre", Me.TextBox_nombre.Text) mycommand.Parameters.AddWithValue("?apellido", Me.TextBox_apellido.Text) mycommand.Parameters.AddWithValue("?dire", Me.TextBox_direccion.Text) mycommand.Parameters.AddWithValue("?email", Me.TextBox_email.Text)

mycommand.CommandText = "insert into usuarios values(NULL,?ced,?nombre,?apellido,?dire,?email)" Try mycommand.ExecuteNonQuery() MsgBox("Los datos se han guardado Correctamente! ", MsgBoxStyle.Information, "Notificacion") Catch ex As Exception MsgBox("No es posible Guardar, Verifique! " & ex.Message, MsgBoxStyle.Critical, "Error") End Try conexion.Close() End Sub

de esta manera en nuestro boton guardar solo debemos invocar al procedimiento validad de la siguiente manera: Private Sub Button_guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_guardar.Click validar() End Sub

Pasemos ahora al modificar, este proceso es muy sencillo, aqui solamente debemos consultar los datos del usuario a traves de la cedula (en primer lugar), luego en los datos que son visualizados en los text, modificar los que desees excepto la cedula y presionar dicho boton, las sentencias e instrucciones de vb.net a utilizar son: Private Sub Button_modificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_modificar.Click If conexion.State() = ConnectionState.Closed Then conexion.Open() End If sql = "SELECT * FROM usuarios" mycommand.Connection = conexion mycommand.CommandText = sql Try mycommand.Parameters.Clear() mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text) mycommand.Parameters.AddWithValue("?nombre", Me.TextBox_nombre.Text) mycommand.Parameters.AddWithValue("?ape", Me.TextBox_apellido.Text) mycommand.Parameters.AddWithValue("?direccion", Me.TextBox_direccion.Text) mycommand.Parameters.AddWithValue("?email", Me.TextBox_email.Text)

'si actualizo mycommand.CommandText = "Update usuarios set nombre=?nombre,apellidos=?ape,direccion=? direccion,email=?email WHERE cedula=?ced" mycommand.ExecuteNonQuery() MsgBox("Los datos del usuario han sido actualizados con exito!...", MsgBoxStyle.Information, "Notificacion") Refresh() Catch ex As Exception MsgBox("No es posible Actualizar, Verifique! " & ex.Message) End Try conexion.Close() End Sub

Por ultimo, pasamos al boton eliminar, alli nos cersioramos que se haya digitado alguna cedula que realmente aparezca en la base de datos, de ser asi procedemos a borrarlo de forma permanente de la base de datos: Private Sub Button_eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_eliminar.Click If (Me.TextBox_cedula.Text.Trim = "") Then MsgBox("Primero Busque al usuario que desea eliminar escribiendo su cedula y presionando el boton buscar!", MsgBoxStyle.Exclamation, "Notificacion") Else 'realizo la eliminacion If conexion.State() = ConnectionState.Closed Then conexion.Open() End If mycommand.Parameters.Clear() mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text) sql = "delete FROM usuarios where cedula=?ced" mycommand.Connection = conexion mycommand.CommandText = sql Try mycommand.ExecuteNonQuery() MsgBox("Usuario eliminado con exito de la base de datos!", MsgBoxStyle.Information, "Notificacion") Refresh() limpiar_cajas_de_texto() Catch ex As Exception MsgBox("Imposible Eliminar porque...:" & ex.Message) End Try

'Por Ultimo Cierro La conexion conexion.Close() End If End Sub

Podemos poner en marcha la aplicacion y ver que tal funciona: *inicialmente si los parametros de conexion a la bd son correctos veremos un mensaje como el de la imagen siguiente:

*posteriormente si lo deseamos podemos ejecutar cualquier opcion, he deseado hacer una consulta asi que ingrese la cedula 123 y presione el boton buscar, miren el resultado:

*Luego registramos un usuario, ingresamos los datos y presionamos el boton guardar y veremos el siguiente mensaje de confirmacion:

Bueno, se le pueden hacer todas las pruebas que deseen, el programa solo realiza las operaciones de gestion basicas le hacen falta muchas validaciones para establecer algunas normas de integridad en la base de datos, espero y les pueda resultar de guia y orientacion a aquellos que esten interesados en aprender a trabajar con bases de datos. si desean descargar la aplicacion aqui les dejo el link: http://www.4shared.com/archive/YgdG86Y/Ejemplo_Gestion_de_Usuarios_Bd.html http://www.tecnohackers.net/programacion-a-alto-nivel-visual-basic-java-delphi-etc/gestion-deusuarios-de-una-base-de-datos-con-vb-netmysql-(op-sql-basicas)/

Hola System32, si lo que quieres es guardar fotos en una base de datos, debes crear un campo en la tabla de la base de datos de tipo BLOB o LONGBLOG que es para almacenar datos binarios y para registrar dicha operacion de guardado, antes debes convertir la foto de tipo image a binario, para ello debes elaborar una funcion en tu programa de vb.net de la siguiente manera: 'convertir imagen a binario Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte() 'si hay imagen If Not Imagen Is Nothing Then 'variable de datos binarios en stream(flujo) Dim Bin As New MemoryStream

'convertir a bytes Imagen.Save(Bin, Imaging.ImageFormat.Jpeg) 'retorna binario Return Bin.GetBuffer Else Return Nothing End If End Function

Luego, tu funcion guardar te quedara de la siguiente manera: Sub guardar() If conexion.State() = ConnectionState.Closed Then conexion.Open() End If sql = "SELECT * FROM usuarios" mycommand.Connection = conexion mycommand.CommandText = sql '--------------------------------------------------------------------------------------------------------------------------'procedo a pasar los datos de los textbox a la variable para guardar mycommand.Parameters.Clear() mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text) mycommand.Parameters.AddWithValue("?nombre", Me.TextBox_nombre.Text) mycommand.Parameters.AddWithValue("?apellido", Me.TextBox_apellido.Text) mycommand.Parameters.AddWithValue("?dire", Me.TextBox_direccion.Text) mycommand.Parameters.AddWithValue("?email", Me.TextBox_email.Text) img = Imagen_Bytes(Me.Picture_foto.Image) mycommand.Parameters.AddWithValue("?foto", img) mycommand.CommandText = "insert into usuarios values(NULL,?ced,?nombre,?apellido,?dire,?email,? foto)" Try mycommand.ExecuteNonQuery() MsgBox("Los datos se han guardado Correctamente! ", MsgBoxStyle.Information, "Notificacion") Catch ex As Exception MsgBox("No es posible Guardar, Verifique! " & ex.Message, MsgBoxStyle.Critical, "Error") End Try conexion.Close() End Sub

en la anterior funcion la variable img corresponde a una variable global de tipo byte que debe ser declarada al comienzo del programa de la siguiente manera: Dim img() As Byte

y como te puedes dar cuenta realizamos la conversion de imagen a bytes y luego la agregamos a la cadena de texto para incluirla en el insert cuyo nombre es "?foto". Por otra parte, para realizar una consulta, debes convertir los datos en binario que hay en la base de datos a imagen, aqui debes usar la siguiente funcion: 'convertir binario a imagen Private Function Bytes_Imagen(ByVal Imagen As Byte()) As Image Try 'si hay imagen If Not Imagen Is Nothing Then 'caturar array con memorystream hacia Bin Dim Bin As New MemoryStream(Imagen) 'con el método FroStream de Image obtenemos imagen Dim Resultado As Image = Image.FromStream(Bin) 'y la retornamos Return Resultado Else Return Nothing End If Catch ex As Exception Return Nothing End Try End Function

entonces, invocas esta funcion en el buscar del programa, quedando el procedimiento de busqueda de usuario de la siguiente manera:

Private Sub Button_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_buscar.Click encontro = 0 Dim nombre, apellido, direccion, email As String

nombre = "" apellido = "" direccion = "" email = "" If conexion.State = ConnectionState.Closed Then conexion.Open() End If mycommand = New MySqlCommand("select *from usuarios where cedula='" & Me.TextBox_cedula.Text & "'", conexion) mycommand.Connection = conexion Dim drcampo As MySqlDataReader drcampo = mycommand.ExecuteReader() Try Do While drcampo.Read encontro = 1 nombre = drcampo.GetString(2) apellido = drcampo.GetString(3) direccion = drcampo.GetString(4) email = drcampo.GetString(5) Me.Picture_foto.Image = Bytes_Imagen(drusuario.GetValue(6)) Loop Catch ex As Exception MsgBox("Ha ocurrido un Error!", MsgBoxStyle.Critical, "Error") End Try conexion.Close() If (encontro = 1) Then Me.TextBox_nombre.Text = nombre Me.TextBox_apellido.Text = apellido Me.TextBox_direccion.Text = direccion Me.TextBox_email.Text = email MsgBox("Usuario encontrado!", MsgBoxStyle.Information, "Notificacion") Else MsgBox("el usuario que usted esta buscando no se encuentra en la base de datos, verifique!", MsgBoxStyle.Exclamation, "Notificacion") End If End Sub

en la ultima funcion, se puede notar la linea

Me.Picture_foto.Image = Bytes_Imagen(drusuario.GetValue(6))

que es donde convertimos los bytes a imagen y los pasamos a un picturebox. Bueno, espero y te haya podido aclarar tu duda, haz el intento de realizar estas modificaciones al programa y de seguro obtendras un resultado positivo.... si gustas puedes ver un tutorial completo para registrar imagenes en una base de datos aqui: http://ingsistele.wordpress.com/2012/02/03/interactuar-con-webcam-y-base-dedatos/#more-247 Saludos

Hola modifique el code solo por los campos, como no pones un code en el cual se debe insertar el registro, pues pongo el code, yo prefiero tomar la imagen del directorio x y de ahi guardarle en mysql. Podrias ayudarme el code ke me distes si lee la imagen pero cuando la inserto desde mysql, porque tal y como esta el code no me deja insertrar ningun registro. 'Para abrir imagen Código: [Seleccionar] Private Sub BUTEXAM_Click(sender As System.Object, e As System.EventArgs) Handles BUTEXAM.Click Me.OPD.Filter = "Imagenes (jpg)|*.jpg" 'filtro de archivos del OpenFileDialog OPD.ShowDialog() 'MessageBox.Show(NOMBRE) RUTA = OPD.FileName.ToString() 'MessageBox.Show(RUTA) PB1.ImageLocation = RUTA End Sub'Para guaradar registro Código: [Seleccionar] Private Sub BUTGUAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTGUAR.Click 'Llamada para validar el nuevo Registro antes de guardar. ' Call validar() Try sql = "SELECT * FROM empleados" mycommand.Connection = conexion mycommand.CommandText = sql 'Para Imagen en RUTA RUTA = OPD.FileName.ToString() 'MessageBox.Show(RUTA) PB1.ImageLocation = RUTA If conexion.State() = ConnectionState.Closed Then conexion.Open() End If '--------------------------------------------------------------------------------------------------------------------------'procedo a pasar los datos de los textbox a la variable para guardar mycommand.Parameters.Clear() mycommand.Parameters.AddWithValue("?Clave", Me.CBOID.Text) mycommand.Parameters.AddWithValue("?CEmpleado", Me.CBOCE.Text) mycommand.Parameters.AddWithValue("?Nombres", Me.TXTNOM.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Apellidos", Me.TXTAPES.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Departamento", Me.CBODEPTO.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Sexo", Me.CBOSEXO.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Telefono", Me.TXTTEL.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Email", Me.TXTEMAIL.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?D_Trabajados", Me.TXTDTRAB.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Num_periodo", Me.TXTNPER.Text.Trim.ToString) mycommand.Parameters.AddWithValue("?Fecha", Me.DTP1.Text.Trim.ToString)

img = Imagen_Bytes(Me.PB1.Image) mycommand.Parameters.AddWithValue("?imagen", img) PB1.SizeMode = PictureBoxSizeMode.StretchImage 'no se va a programar la visita, entonces el establecimiento quedara en estado listo, que indica que aceptara cualquier visita nueva a programar mycommand.CommandText = "INSERT INTO empleados(Clave, CEmpleado, Nombres, Apellidos, Departamento, Sexo, Telefono, Email, Dias_Trabajados, Num_Periodo, Fecha, imagen) VALUES (?NULL,? Clave,?CEmpleado,?Nombres,?Apellidos,?Departamento,?Sexo,?Telefono,?Email,?Dias_Trabajados,? Num_periodo,?Fecha,?imagen)" '?CEmpleado, ?Nombres, ?Apellidos, ?Departamento, ?Sexo, ?Telefono, ?Email, ?Dias_Trabajados, ? Num_periodo, ?Fecha Try mycommand.ExecuteNonQuery() MsgBox("Los datos se han guardado Correctamente! ", MsgBoxStyle.Information, "Notificacion") Catch ex As Exception MsgBox("No es posible Guardar, Verifique! " & ex.Message, MsgBoxStyle.Critical, "Error") End Try conexion.Close() Catch ex As Exception End Try

Hola System32, la razon de que al insertarla desde mysql si te este leyendo la imagen con tu programa y desde tu codigo no lo este insertando es porque cuando lees el archivo con el open file dialog no estas empleando la propiedad correcta del picturebox para asignar la imagen; te explico: cuando leas la imagen a traves del openfiledialog deberas tener el codigo asi: Código: [Seleccionar] Private Sub BUTEXAM_Click(sender As System.Object, e As System.EventArgs) Handles BUTEXAM.Click Me.OPD.Filter = "Imagenes (jpg)|*.jpg" 'filtro de archivos del OpenFileDialog OPD.ShowDialog() 'MessageBox.Show(NOMBRE) RUTA = OPD.FileName.ToString() 'MessageBox.Show(RUTA) Me.PB1.Image = Image.FromFile(ruta) End Sub

como te puedes dar cuenta se usa la propiedad image del picturebox en lugar de Código: [Seleccionar] PB1.ImageLocation = RUTA

como lo tienes en tu codigo. y ya eso es todo, por eso es que no te guarda ya que la funcion Código: [Seleccionar] Imagen_Bytes(Me.PB1.Image)

esta convirtiendo en bytes la imagen de acuerdo a la propiedad "Image" del picturebox y no por la ImageLocation.

Por otra parte, puedes resumir tu insert de la siguiente manera: Código: [Seleccionar] mycommand.CommandText = "insert into empleados values(NULL,?Clave,?CEmpleado,?Nombres,? Apellidos,?Departamento,?Sexo,?Telefono,?Email,?Dias_Trabajados,?Num_periodo,?Fecha,?imagen)"

Ten en cuenta que el parametro NULL no lleva ? al principio (este tambien puede ser una causa de tu problema al guardar). Bueno, eso es todo, espero y lo pruebes, te des cuenta de lo que te esta sucediendo y puedas solucionar tu problema. Saludos.

Correcto mira me guie y inserto la imagen pero para modificarla como seria, pondre el code de insertar ke funciona muy bien: Código: [Seleccionar] Private Sub BUTGUARDAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTGUARDAR.Click Try Dim sql As String = "insert into imagenes(id,imagen,Clave,Nombres,Apellidos,Fec)values(?id,? imagen,?Clave,?Nombres,?Apellidos,?Fec)" cnn = New MySqlConnection(StrConexion) Dim Comando As New MySqlCommand(sql, cnn) Dim Imag As Byte() Dim id As String Dim Clave As String Dim Nombres As String Dim Apellidos As String Dim Fec As Date id = TXTID.Text Clave = TXTCVE.Text Nombres = TXTNOM.Text Apellidos = TXTAPES.Text Fec = Now Imag = Imagen_Bytes(Me.PictureBox1.Image) Comando.Parameters.AddWithValue("?id", id) Comando.Parameters.AddWithValue("?imagen", Imag) Comando.Parameters.AddWithValue("?Clave", Clave) Comando.Parameters.AddWithValue("?Nombres", Nombres) Comando.Parameters.AddWithValue("?Apellidos", Apellidos) Comando.Parameters.AddWithValue("?Fec", Fec)

cnn.Open() If cnn.State = ConnectionState.Open Then Comando.ExecuteNonQuery() MsgBox("Se guardo correctamente la imagen en la BD") Else MsgBox("No se pudo Guardar el registro de imagen, verifiquelo con el Administrador") End If cnn.Close()

Catch ex As Exception MessageBox.Show(ex.Message) End Try 'ACTUALIZAR Y LIMPIAR Call subLimpiarTodo() Call subMOSTRAR()

End Sub

'Aqui es para modificar, solo que no modifica la imagen osea no la cambia. Que necesito para cambiarle la imagen? Código: [Seleccionar] Private Sub BUTMOD_Click(sender As System.Object, e As System.EventArgs) Handles BUTMOD.Click 'PARA MODIFICAR ELEMENTO 'Sub MODIFICAR()

If (FnBoolDatosCorrect()) Then 'Verifica que tenga haya datos en los campos. 'NUEVO CODIGO Dim strMod As String strMod = "Actualiza" If strMod = "Actualiza" Then Dim CN As MySqlConnection CN = New MySqlConnection CN.ConnectionString = "Server=localhost;Database=aplicaciones;Uid=root;Pwd=root;" CN.Open() Dim modificar As New MySqlCommand("UPDATE imagenes SET Clave='" & TXTCVE.Text & "',Nombres='" & TXTNOM.Text & "',Apellidos='" & TXTAPES.Text & "',Fec='" & DTP1.Text & "' WHERE id='" & TXTID.Text & "'", CN) modificar.ExecuteNonQuery()

MsgBox("Periodo Modificado Correctamente", MsgBoxStyle.OkOnly, "Modificacion de Cliente") CN.Close()

End If 'MENSAJE DE ACTUALIZACION MsgBox("Modificacion Exitosa") End If

End SubSaludos..

Hola System32, para modificar te puedes guiar del ejemplo que hay en este post, basicamente es el mismo proceso, solo debes de agregar la variable imagen en tu procedimiento modificar asi: Código: [Seleccionar] Private Sub Button_modificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_modificar.Click If conexion.State() = ConnectionState.Closed Then conexion.Open() End If sql = "SELECT * FROM usuarios" mycommand.Connection = conexion mycommand.CommandText = sql Try mycommand.Parameters.Clear() mycommand.Parameters.AddWithValue("?ced", Me.TextBox_cedula.Text) mycommand.Parameters.AddWithValue("?nombre", Me.TextBox_nombre.Text) mycommand.Parameters.AddWithValue("?ape", Me.TextBox_apellido.Text) mycommand.Parameters.AddWithValue("?direccion", Me.TextBox_direccion.Text) mycommand.Parameters.AddWithValue("?email", Me.TextBox_email.Text) img = Imagen_Bytes(Me.PB1.Image) mycommand.Parameters.AddWithValue("?imagen", img)

'si actualizo mycommand.CommandText = "Update usuarios set nombre=?nombre,apellidos=?ape,direccion=? direccion,email=?email,imagen=?imagen WHERE cedula=?ced" mycommand.ExecuteNonQuery() MsgBox("Los datos del usuario han sido actualizados con exito!...", MsgBoxStyle.Information, "Notificacion") Refresh() Catch ex As Exception MsgBox("No es posible Actualizar, Verifique! " & ex.Message) End Try conexion.Close()

End Sub

y con eso ya puedes modificar, adaptalo a tu programa y veras que vas a poder modificar...!

Hola JESUSB, muy buena tu pregunta la entiendo de 2 maneras: 1) si quieres ir actualizando un datagridview al cambiar algun dato independientemente de haberlo efectuado en la grilla, lo que debes hacer es crear un procedimiento llamado actualizar_datos_grilla() (que permita listar los datos de la base de datos en la lista) y luego llamarlo desde el evento que desencadena dicha actualizacion en la base de datos, puede ser un boton o algun campo de texto, o tambien puedes utilizar un timer que refresque la grilla cada cierto tiempo. 2) otra interpretacion que tengo acerca de tu pregunta es la siguiente, quieres modificar los datos en la base de datos pero deseas hacerlo cambiando directamente los datos desde la grilla, es decir, te dirijes a una celda del datagridview, haces clic sobre el texto lo borras y escribes otra cosa (cambiando de esa manera el valor que tenia), para que puedas hacer dicho cambio sobre el registro correcto de la base de datos debes tener en cuenta las siguientes recomendaciones: *cuando vallas a agregar los datos a la grilla, incluye el campo id de la tabla que te ayudara a localizar facilmente cualquier registro en dicha base de datos (puedes colocar ese campo de la grilla oculto o invisible para que el usuario no lo vea). *luego para poder determinar en que fila vas a hacer la modificacion de la informacion, debes trabajar en el evento cellclick de la grilla que se activa al momento de hacer clic en una celda devolviendo la fila y la columna seleccionada. puedes ver el siguiente codigo: Código: [Seleccionar] Private Sub grilla_lista_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grilla_lista.CellClick Dim sel, sel2 As Integer sel2 = grilla_lista.Rows.Count 'aqui obtienes la cantidad de filas de la grilla 'MsgBox(sel2) Try sel = Me.grilla_lista.CurrentRow.Index 'aqui obtienes en indice de la fila que se ha seleccionado es decir el numero de la fila valor_id = (Me.grilla_lista.Rows(sel).Cells(1).Value) ' aqui obtenemos el valor del id de la fila seleccionada asociado al registro especifico de la tabla en la base de datos

'luego si se van a modificar varios datos pasas a varibles la informacion de cada celda de la grilla nombre = (Me.grilla_lista.Rows(sel).Cells(2).Value) apellidos= (Me.grilla_lista.Rows(sel).Cells(3).Value)

direccion = (Me.grilla_lista.Rows(sel).Cells(4).Value)

Catch ex As Exception End Try

bien una vez hayas hecho esto debes colocar un boton para que al presionarlo se efectuen los cambios en la base de datos, ya conoces el id de la tabla y los datos a modificar que estan almacenados en variables, solo debes crear el procedimiento para actualizar que sera similar al que puedes observar en el ejemplo original de este tema. bueno, espero y puedas solucionar tu inquietud, gracias por tu pregunta, saludos!.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF