Bienvenido a Tecnohackers

Tecnohackers » Programacion » Area de Programacion » Programacion a Alto Nivel. Visual Basic, Java, delphi, etc.
 » 

Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)



Autor Tema: Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)  (Leído 13102 veces)

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
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: You are not allowed to view links. Register or Login), 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:
You are not allowed to view links. Register or Login

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:
You are not allowed to view links. Register or Login

Posteriormente a este paso realizamos un diseño similar al que se ve en la siguiente imagen:
You are not allowed to view links. Register or Login

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:
You are not allowed to view links. Register or Login
 

puedes crear dicha tabla con el asistente, pero si desean hacerlo a codigo aqui tienen las sentencias sql:
Código: You are not allowed to view links. Register or Login
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:

Código: You are not allowed to view links. Register or Login
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
Código: You are not allowed to view links. Register or Login
Imports MySql.Data.MySqlClient
y declaramos una variable como global:
Código: You are not allowed to view links. Register or Login
Dim encontro As Integer

Luego, pasamos al evento load del formulario para hacer el llamado a la funcion conectarme:
Código: You are not allowed to view links. Register or Login
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.

Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:

Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:

You are not allowed to view links. Register or Login

*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:

You are not allowed to view links. Register or Login

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

You are not allowed to view links. Register or Login

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: You are not allowed to view links. Register or Login
 

 
« Última modificación: Julio 12, 2012, 02:34:51 am por jarexalf »
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado System32

  • Recien Llegado
  • *
  • Mensajes: 7
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #1 en: Julio 11, 2012, 09:08:41 pm »
Hola amigo buen aporte mas, oye y esas operaciones pero con imagen osea una foto para cada registro como se seria?
« Última modificación: Julio 12, 2012, 02:33:08 am por jarexalf »

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #2 en: Julio 12, 2012, 02:31:52 am »
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:

Código: You are not allowed to view links. Register or Login
'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:

Código: You are not allowed to view links. Register or Login
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:
Código: You are not allowed to view links. Register or Login
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:

Código: You are not allowed to view links. Register or Login
'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:

Código: You are not allowed to view links. Register or Login
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
Código: You are not allowed to view links. Register or Login
  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: You are not allowed to view links. Register or Login

Saludos
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado System32

  • Recien Llegado
  • *
  • Mensajes: 7
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #3 en: Julio 12, 2012, 05:36:14 pm »
Orale como no lo estoy haciendo de una webcam, solo de imagen, al insertar el registro em manda al tubo te paso mi code para ke lo veas?
Saludos.  :D
« Última modificación: Julio 13, 2012, 12:27:07 am por System32 »

Desconectado System32

  • Recien Llegado
  • *
  • Mensajes: 7
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #4 en: Julio 13, 2012, 01:31:00 am »
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: You are not allowed to view links. Register or Login
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: You are not allowed to view links. Register or Login
    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

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #5 en: Julio 13, 2012, 10:19:32 pm »
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: You are not allowed to view links. Register or Login
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: You are not allowed to view links. Register or Login
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: You are not allowed to view links. Register or Login
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: You are not allowed to view links. Register or Login
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.
« Última modificación: Julio 13, 2012, 10:22:05 pm por jarexalf »
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado System32

  • Recien Llegado
  • *
  • Mensajes: 7
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #6 en: Julio 14, 2012, 06:37:13 pm »
Correcto mira me guie y inserto la imagen pero para modificarla como seria, pondre el code de insertar ke funciona muy bien:
Código: You are not allowed to view links. Register or Login
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: You are not allowed to view links. Register or Login
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 Sub
Saludos..
 Espero coments.. :D

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #7 en: Julio 14, 2012, 08:21:10 pm »
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: You are not allowed to view links. Register or Login
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...!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado System32

  • Recien Llegado
  • *
  • Mensajes: 7
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #8 en: Julio 16, 2012, 05:49:34 pm »
OKs deja lo verifico y te aviso como me fue.

...Modifique mi code y solo me faltaba como debia ir el update ya que debia ser Nombres=?Nombres, etc., Y yo lo habia puesto que Nombres='" & txtNOM.text & "'", etc..
Oks muchas gracias amigo ya quedo todo listo ahora si a avanzar. jeje.
Saludos...
« Última modificación: Julio 16, 2012, 08:13:06 pm por System32 »

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #9 en: Julio 18, 2012, 04:49:22 am »
You are not allowed to view links. Register or Login
Oks muchas gracias amigo ya quedo todo listo ahora si a avanzar. jeje.
Saludos...

Me da gusto que todo te haya funcionado bien, aqui en el foro estamos para colaborar...
Saludos!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado System32

  • Recien Llegado
  • *
  • Mensajes: 7
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #10 en: Julio 18, 2012, 05:08:30 pm »
Ok muchas graxias, cuenten conmigo en le pueda ayudar, aportare i videotutorial.
Saludos.

Desconectado JESUSB

  • Recien Llegado
  • *
  • Mensajes: 1
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #11 en: Enero 04, 2013, 05:21:42 pm »

Amigo que tal, disculpa me parece perfecto tu aporte me ayudo bastante y quería preguntarte como ir actualizando un datagriw los datos q se van cambiando... para irlos mostrando en tiempo real... te voy agradecer tu ayuda muchisimo....
Saludos.

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #12 en: Enero 06, 2013, 04:26:46 pm »
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: You are not allowed to view links. Register or Login
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!.
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado paraloquesea

  • Recien Llegado
  • *
  • Mensajes: 6
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #13 en: Septiembre 15, 2013, 10:32:20 pm »
Gracias por tu tutorial realmente me sirvio mucho.. eres lo maximo :D jejejee y tus ideas sobre la imagenes y demas siguen ayudandome bastante. En serio gracias.

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #14 en: Septiembre 16, 2013, 05:07:59 pm »
De nada compañero, me da mucho gusto haberte podido ayudar, ya sabes, si tienes alguna duda no las haces llegar.... Saludos...
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado paraloquesea

  • Recien Llegado
  • *
  • Mensajes: 6
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #15 en: Septiembre 17, 2013, 12:50:00 am »
Hola, tengo por aqui una duda.. estuve buscado como llenar los un datagridview con los datos de mi base de datos y encontre algunos tutoriales buenos.. pero lo que no me gusta de ellos es que cambian los codigos los adaptan.. las conexiones las hacen diferente, incluso la consulta la hacen diferente.. no incluyen el try y bueno el punto es que me gusta tu metodo que usas como ordenas los comandos y las sintaxis, vaya le entiendo mejor a tu codigo y pues quisiera que me ayudaras a llenar ese datagridview con digamos datos especificos de la base de datos. llegando a mi casa subo el proyecto que tengo con el codigo por si no me explico lo que quiero hacer :D
En el modulo variables tengo esto:
Código: You are not allowed to view links. Register or Login
Imports MySql.Data.MySqlClient
Module variables
    Public cadena As String
    Public conexion As New MySqlConnection
    Public sql As String
    Public cmd As New MySqlCommand
    Public da As MySqlDataAdapter
    Sub conectar()
        Try
            cadena = "server=localhost;user=tesoreriauser;pwd=tesoreriapass"
            conexion.ConnectionString = cadena
            conexion.Open()
        Catch ex As Exception
            MsgBox("No se ha podido establecer la conexion con la base de datos")
        End Try
    End Sub
End Module
En el formulario login tengo esto:
Código: You are not allowed to view links. Register or Login
Imports MySql.Data.MySqlClient
Public Class flogin
    Dim encontro As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        conectar()
        encontro = 0
        Dim vficha, vnombre, vpaterno, vmaterno
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If

        vficha = ""
        vnombre = ""
        vpaterno = ""
        vmaterno = ""

        cmd = New MySqlCommand("select * from tesoreria . trabajadores where ficha ='" & Me.TextBox1.Text & "' and pass='" & Me.TextBox2.Text & "'", conexion)
        cmd.Connection = conexion
        Dim drcampo As MySqlDataReader
        drcampo = cmd.ExecuteReader
        Try
            Do While drcampo.Read
                encontro = 1
                vficha = drcampo.GetString(0)
                vnombre = drcampo.GetString(1)
                vpaterno = drcampo.GetString(2)
                vmaterno = drcampo.GetString(3)
            Loop
        Catch ex As Exception
            MsgBox("Ocurrio un Error: " & ex.Message, MsgBoxStyle.Information, "Error")
        End Try
        conexion.Close()
        If (encontro = 1) Then
            fmenu.cajon.Text = vnombre & " " & vpaterno & " " & vmaterno
            fmenu.tficha = vficha
            fmenu.Show()
            Me.Close()
        Else
            MsgBox("Ficha o Contraseña Incorrecta", MsgBoxStyle.Information, "Error al Autentificarte")
            TextBox1.Text = ""
            TextBox2.Text = ""
            TextBox1.Focus()
        End If
    End Sub
End Class
y en el codigo menu tengo esto:
Código: You are not allowed to view links. Register or Login
Imports MySql.Data.MySqlClient
Public Class fmenu
    Dim encontro As Integer
    Public tficha

    Private Sub fmenu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        conectar()
        encontro = 0
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        encontro = 0
        Dim vprestamo, vinteres, pagocatorcenal, tiempo_cat As Integer
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If
        vprestamo = 0
        vinteres = 0
        pagocatorcenal = 0
        tiempo_cat = 0

        cmd = New MySqlCommand("Select * from tesoreria . prestamos where ficha='" & tficha & "'", conexion)
        cmd.Connection = conexion
        Dim drcampo As MySqlDataReader
        drcampo = cmd.ExecuteReader()
        Try
            Do While drcampo.Read
                encontro = 1
                vprestamo = drcampo.GetString(1)
                vinteres = drcampo.GetString(2)
                tiempo_cat = drcampo.GetString(3)
            Loop
        Catch ex As Exception
            MsgBox("Ha ocurrido un error: " & ex.Message, MsgBoxStyle.Information, "Error")
            Timer1.Enabled = False
        End Try
        conexion.Close()

        If (encontro = 1) Then
            Label2.Text = "Tu prestamo es de: $" & vprestamo & " Pesos"
            Label1.Text = "Con un interes catorcenal de: $" & vinteres & " Pesos"
            pagocatorcenal = vprestamo + vinteres
            Label3.Text = "Tu pago catorcenal sera de: $" & pagocatorcenal & " Pesos"
            Label4.Text = "Descuento de " & tiempo_cat & " Catorcenas"
            Timer1.Enabled = False
        Else
            MsgBox("No hay prestamos realizados", MsgBoxStyle.Information, "Sin Prestamos")
            Timer1.Enabled = False
        End If
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        encontro = 0
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If

        Timer2.Enabled = False

    End Sub
End Class
aclaro en el timer 2 es donde queria poner el codigo para cargar el datagridview por eso lo tengo asi...
espero me puedas ayudar de antemano gracias.

Desconectado paraloquesea

  • Recien Llegado
  • *
  • Mensajes: 6
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #16 en: Septiembre 17, 2013, 04:53:35 am »
Hola aqui otra vez molestando :P ya logre cargar el datagridview con los datos que necesitaba de mi base de datos.. adaptando otros codigos con tu estructura. aqui el codigo:
Código: You are not allowed to view links. Register or Login
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        encontro = 0
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If
        Dim cmd As New MySqlCommand("select * from tesoreria . prestamos where ficha='" & tficha & "'", conexion)
        Dim dt As New DataTable
        Dim da As New MySqlDataAdapter(cmd)
        Try
            da.Fill(dt)
            Me.datost.DataSource = dt

        Catch ex As Exception
            MsgBox("Hay un error: " & ex.Message)
        Finally
            If conexion.State = ConnectionState.Open Then
                conexion.Close()
            End If
        End Try
        Timer2.Enabled = False

    End Sub
Ahorita estoy atorado es que cuando carga los datos quiero que en la parte visual del datagridview se vean solo unos parametros en especificos digamos por ejemplo solo dos datos el prestamo y el interes y que diga Prestamo y Interes en su Text ya que el nombre que aparece en la columna es el de la base de datos yo quiero personalizar ese nombre y obvio no quiero que aparesca la ficha y otros datos que tengo en esa base de datos. :D gracias de antemano espero puedas ayudarme o alguien :D

Desconectado paraloquesea

  • Recien Llegado
  • *
  • Mensajes: 6
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #17 en: Septiembre 17, 2013, 05:54:14 am »
hola de nuevo jejeje ya resolvi mi duda anterior y ya no use dataadapter si no use datareader :D aqui el codigo nuevo que uso en lugar del anterior
Código: You are not allowed to view links. Register or Login
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        encontro = 0
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If
        Dim cmd As New MySqlCommand("select * from tesoreria . prestamos where ficha='" & tficha & "'", conexion)
        cmd.Connection = conexion
        Dim drcampos As MySqlDataReader
        drcampos = cmd.ExecuteReader()

        Try
            Do While (drcampos.Read)
                Me.datost.Rows.Add(drcampos.GetString(1),
                                   drcampos.GetString(2))

            Loop


        Catch ex As Exception
            MsgBox("Hay un error: " & ex.Message)
        Finally
            If conexion.State = ConnectionState.Open Then
                conexion.Close()
            End If
        End Try
        Timer3.Enabled = False
    End Sub
Gracias jejeje :D aunque no lo creas ayuda tu codigo me da ideas y me guia :D un saludo. cualquier duda aqui la pondre y si la resuelvo antes la posteo para que le sirva a otra gente :D

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #18 en: Septiembre 19, 2013, 07:30:02 pm »
Que bueno compañero, me alegra mucho que hayas podido resolver tu problema, y que hayas tenido la gentileza de compartir la forma en la que lo resolviste, se ve que eres una persona que no se queda con lo que le dan y siempre busca mas, eso es bueno; te felicito y si necesitas otra cosa puedes pedirlo.

PD: Recuerda que el proceso de responder los mensajes no es instantáneo, puedes dejar tu pregunta y tan pronto como nos demos cuenta te daremos una solución.

Saludos...!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado paraloquesea

  • Recien Llegado
  • *
  • Mensajes: 6
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #19 en: Septiembre 20, 2013, 04:12:41 am »
Gracias :D jejeje de hecho se que es tardada la respuesta :D jejeje no es al instante pero pues por eso ponia los resultados y los compartia :P se que al final entre mas informacion haya mejor para los que tienen duda... :D igual cuando termine mi proyecto igual y los posteo :D jejeje no se si este permitido postear proyectos :D

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #20 en: Septiembre 20, 2013, 04:21:07 am »
Hola compañero, me alegro mucho de que estés a gusto con el foro y hayas comprendido para que se trata, como la idea es de compartir información e ir enriqueciendo conocimientos, pues tu proyecto será bienvenido aquí, puedes subirlo cuando desees, claro con una explicación de como funciona. :D

Saludos!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado paraloquesea

  • Recien Llegado
  • *
  • Mensajes: 6
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #21 en: Septiembre 21, 2013, 05:19:47 am »
Tengo una duda.. la variable encontro.. para que la usas? mas o menos se que para declarar un 0 o un 1.. Veo que uno mismo le asigna el dato 1 o 0 .. mi duda es...
en si en que se basa para ponerlo en 1 o en 0... se que lo usas en un if
si me explico?

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #22 en: Septiembre 22, 2013, 05:36:57 pm »
Hola compañero, te aclarare tu duda con respecto a la variable encontró; Dicha variable es usada como variable de control o de indicador para saber si al efectuar una búsqueda en la base de datos (cuando se efectúa una consulta) hay alguna coincidencia o no. esto se pone en practica especialmente en el botón buscar, si te das cuenta en el código del tutorial inicialmente a la variable encontró se le asigna 0 dentro del procedimiento del botón buscar, luego dentro de dicho procedimiento donde se efectúa la búsqueda (que esta dentro de la clausula try que indica que si se efectúa la operación o búsqueda sin problemas) se le asigna el valor de 1 a dicha variable, esto porque solo necesitamos saber si existe al menos una persona en la tabla usuarios con la misma cedula (no necesitamos saber cuantos hay, solo con que haya uno basta). Mas adelante, dentro de la misma función correspondiente al botón buscar volvemos a utilizar la variable encontró, pero esta vez es para compararla y tomar una decisión, es decir, si la variable encontró es igual a 1, mostramos los datos que están en la base de datos asociados a esa persona en los textbox del formulario, pero de lo contrario si la variable encontró es igual a cero(0), enviamos un mensaje indicando que el usuario que se ha buscado no se encuentra en la base de datos o no existen coincidencias.

Bueno eso es todo compañero, espero y aclare tus dudas, saludos!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado Dany Solis

  • Recien Llegado
  • *
  • Mensajes: 10
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #23 en: Abril 09, 2014, 01:43:30 am »
Hola.

Tratando de adaptar este codigo a mi proyecto me marca el siguiente error:
No es posible guardar, verifique! Column count doesn't match value count at row1.

El error me lo marca al querer guardar un registro, eliminar o modificar.
Lo que marco en negrita es lo que se agrego como control de errores me pueden ayudar se los agradezco mucho.

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #24 en: Abril 09, 2014, 04:38:23 am »
Hola, Dany, por favor envíame un pantallazo de tu programa para poder ver en que lugar exacto te muestra dicho mensaje.

Has probado descargar el código fuente de este programa y probarlo en tu pc, importando la base de datos??
El programa te debe ejecutar correctamente, de todas maneras dime si le has hecho alguna prueba, y me envias la imagen de la captura de pantalla, para ayudarte mejor.
Saludos!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado Dany Solis

  • Recien Llegado
  • *
  • Mensajes: 10
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #25 en: Abril 09, 2014, 02:43:13 pm »
Gracias por contestar jarexalf.

Mira aqui te muestro la esructura de mi Tabla MySQL y el error que me salta es la imagen2 e imagen3:
You are not allowed to view links. Register or Login


Y este es el codigo lo cambie para adaptarlo a mi aplicación:

Código: You are not allowed to view links. Register or Login
    Sub validar()
        encontro = 0
        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If

        mycommand = New MySqlCommand("select *from asignacion_de_rutas where NoGafete='" & Me.TxtNoGafete.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
Código: You are not allowed to view links. Register or Login
    Sub guardar()
        If conexion.State() = ConnectionState.Closed Then
            conexion.Open()
        End If

        sql = "SELECT * FROM asignacion_de_rutas"
        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("?NoGafete", Me.TxtNoGafete.Text)
        mycommand.Parameters.AddWithValue("?nombre", Me.TxtNombre.Text)
        mycommand.Parameters.AddWithValue("?ruta", Me.TxtRuta.Text)
        mycommand.Parameters.AddWithValue("?turno", Me.TxtTurno.Text)

        mycommand.CommandText = "insert into asignacion_de_rutas values(NULL,??NoGafete,?NomEmpleado,?NoRuta,?Turno)"

        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
Código: You are not allowed to view links. Register or Login
        Me.TxtNoGafete.Clear()
        Me.TxtNombre.Clear()
        Me.TxtRuta.Clear()
        Me.TxtTurno.Clear()
Código: You are not allowed to view links. Register or Login
Private Sub CmdAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdAgregar.Click

        LimpiarTxt()

    End Sub
Código: You are not allowed to view links. Register or Login
Private Sub CmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdBuscar.Click

        encontro = 0
        Dim nombre, ruta, turno As String

        nombre = ""
        ruta = ""
        turno = ""

        If conexion.State = ConnectionState.Closed Then
            conexion.Open()
        End If

        mycommand = New MySqlCommand("select *from asignacion_de_rutas where NoGafete='" & Me.TxtNoGafete.Text & "'", conexion)
        mycommand.Connection = conexion
        Dim drcampo As MySqlDataReader
        drcampo = mycommand.ExecuteReader()

        Try
            Do While drcampo.Read
                encontro = 1
                nombre = drcampo.GetString(2)
                ruta = drcampo.GetString(3)
                turno = drcampo.GetString(4)

            Loop
        Catch ex As Exception
            MsgBox("Ha ocurrido un Error!", MsgBoxStyle.Critical, "Error")
        End Try
        conexion.Close()

        If (encontro = 1) Then
            Me.TxtNombre.Text = nombre
            Me.TxtRuta.Text = ruta
            Me.TxtTurno.Text = turno

            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
Código: You are not allowed to view links. Register or Login
Private Sub CmdGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdGuardar.Click

        validar()

    End Sub
Código: You are not allowed to view links. Register or Login
Private Sub CmdEditar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdEditar.Click


        If conexion.State() = ConnectionState.Closed Then
            conexion.Open()
        End If
        sql = "SELECT * FROM asignacion_de_rutas"
        mycommand.Connection = conexion
        mycommand.CommandText = sql
        Try
            mycommand.Parameters.Clear()
            mycommand.Parameters.AddWithValue("?NoGafete", Me.TxtNoGafete.Text)
            mycommand.Parameters.AddWithValue("?nombre", Me.TxtNombre.Text)
            mycommand.Parameters.AddWithValue("?ruta", Me.TxtRuta.Text)
            mycommand.Parameters.AddWithValue("?turno", Me.TxtTurno.Text)

            'si actualizo
            mycommand.CommandText = "Update asignacion_de_rutas set nombre=?NomEmpleado,ruta=?NoRuta,turno=?Turno WHERE NoGafete=?NoGafete"

            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
Código: You are not allowed to view links. Register or Login
Private Sub CmdBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdBorrar.Click

        If (Me.TxtNoGafete.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("?NoGafete", Me.TxtNoGafete.Text)
            sql = "delete FROM asignacion_de_rutas where NoGafete=?NoGafete"
            mycommand.Connection = conexion
            mycommand.CommandText = sql
            Try
                mycommand.ExecuteNonQuery()
                MsgBox("Usuario eliminado con exito de la base de datos!", MsgBoxStyle.Information, "Notificacion")
                Refresh()
                LimpiarTxt()
            Catch ex As Exception
                MsgBox("Imposible Eliminar porque...:" & ex.Message)
            End Try
            'Por Ultimo Cierro La conexion
            conexion.Close()

        End If

    End Sub


Desconectado Dany Solis

  • Recien Llegado
  • *
  • Mensajes: 10
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #26 en: Abril 09, 2014, 08:56:18 pm »
Pude corregir mi error modificando el comandoql ya que inverti los campos de la tabla con los strings.

De cualquier forma muchas gracias agradezco la ayuda.

Saludos.

DS.

 ;D

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #27 en: Abril 10, 2014, 04:10:25 am »
Que bueno, me alegra que hayas podido solucionar tu problema, cualquier otra duda, estamos para ayudarte...!
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Desconectado Dany Solis

  • Recien Llegado
  • *
  • Mensajes: 10
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #28 en: Abril 23, 2014, 12:14:27 am »
Hola jarexalf.

Espero me puedas ayudar.

Al agregar un empleado nuevoquiero agregar tambien la imagen del empleado a la tabla MySql y mostrarla en el PictureBox cuand realice una busqueda de empleado, he estado tratando de adaptar lo que le comentabas a System32 pero estoy muy verde que no doy al clavo.

Agrego la imagen al PictureBox con FileDialog asi:
Código: You are not allowed to view links. Register or Login
Private Sub CmdAgregarP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdAgregarP.Click
        Dim Ruta As String

        OFD.ShowDialog()

         Ruta = OFD.FileName.ToString()
        Me.PBImage.ImageLocation = Ruta
        Imagen_Bytes(Me.PBImage.Image)

    End Sub

Y agregue las funciones para convertir a binario la imagen:

Código: You are not allowed to view links. Register or Login
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
    '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

En esta parte es donde no me acepta el codigo:

Código: You are not allowed to view links. Register or Login
Img = Imagen_Bytes(PBImage.[color=red][b]Image[/b][/color])
        SqlB.Parameters.AddWithValue("?foto", Img)


        SqlB.CommandText = "insert into asignacion_de_rutas values(NULL,?NoGafete,?nombre,?ruta,?turno?,?Foto)"

Aqui declaro la variable:

Código: You are not allowed to view links. Register or Login
Public Class FrmAsignacion
    Dim Img As Byte

En que estoy fallando me puedes ayudar por favor.

Desconectado jarexalf

  • Habitual
  • **
  • Mensajes: 156
  • No digas no puedo sin haberlo Intentado!
    • Ingenieria de sistemas y electronica
Re:Gestion de Usuarios de una base de datos con Vb.net+MySQL (op. sql basicas)
« Respuesta #29 en: Abril 23, 2014, 09:38:58 pm »
Hola amigo, tal vez el error sea de como tengas estructurada la entidad en la base de datos, prueba cambiando la palabra NULL del insert into y coloca un cero (0) y pruebas a ver si te guarda, cualquier cosa te dejo el código fuente de un programa que desarrolle hace tiempo y hace lo que tu deseas de guardar y consultar imágenes en una base de datos: You are not allowed to view links. Register or Login


PD: Te aconsejo que en lugar de guardar imágenes en una base de datos para tu proyecto guardes las imágenes en un directorio especifico del disco, crea una carpeta donde vayas a guardar las imágenes y en la base de datos solo guardas la ruta de dicha imagen, así se simplifica mas el trabajo y le quitas peso a la base de datos.

Saludos...
Perdedor no es aquel que llega de ultimo, sino aquel que nisiquiera parte para intentarlo!

Tags: VB.NET2008 
Tags: VB.NET2008 

 


SMF 2.0.19 | SMF © 2016, Simple Machines
Paginas Afiliadas
Twitter - FaceBook - Daraxblog
Designed by Smf Personal