none
funcion de conexion mysql y busqueda en la BD con Combobox RRS feed

  • Pregunta

  • Hola a todos buen dia 

    Estoy trabajando en un formulario que necesito repetir 12 veces la misma conexion a la base de datos pero me aburre repetir la misma conexion varias veces ademas me llenaria muchas lineas;  aunque asi lo hice y funciono pero mejor lo hago con una funcion.

    por eso decidi crear una funcion que haga la conexion a la base de datos y mediante el evento selectedindexchanged de cada combobox se llenen de informacion dichos combobox ; Necesito ayuda de alguien que haya echo algo similar ya que no tengo ni idea como se puede hacer  es estado intentando con estas lineas pero no me resulta.

     

    Imports MySql.Data
    Imports MySql.Data.MySqlClient
    
    Public Class reporteequipos
    
    
      Public sql As String
      Public cn As MySqlConnection
      Public cm As MySqlCommand
      Public da As MySqlDataAdapter
      Public ds As DataSet
    
      Public Function reporteconexion(ByVal consultasql As String, ByVal devDataset As Boolean) As Boolean
        Dim sql As String
        Dim cn As MySqlConnection
        Dim cm As MySqlCommand
        Dim da As MySqlDataAdapter
        Dim ds As DataSet
    
        cn = New MySqlConnection("Server=192.168.1.14;Database=taller_produccion2; uid=root;pwd=root;")
    
        cn.Open()
    
        sql = consultasql
    
        cm = New MySqlCommand()
        cm.CommandText = sql
        cm.CommandType = CommandType.Text
        cm.Connection = cn
    
        da = New MySqlDataAdapter(cm)
        ds = New DataSet()
        da.Fill(ds)
    
      End Function
    
    
      Private Sub equipoCBOX_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles equipoCBOX.SelectedIndexChanged
    
        reporteconexion(consultasql = "select cod_eqp,tipo from equipos ")
        equipoCBOX.DataSource = reporteconexion.ds.Tables(0)
        equipoCBOX.DisplayMember = (reporteconexion("tipo"))
        equipoCBOX.ValueMember = "cod_eqp"
    
      End Sub
    
    
    
    End Class
    


    jueves, 28 de julio de 2011 16:35

Respuestas

  • Hola

    Algunas cosas que veo que creo no funcionan:

    equipoCBOX.DataSource = reporteconexion.ds.Tables(0) <-- Aqui pides un DataSet por lo tanto la función reporteconexion no debe ser del tipo Boolean sino del tipo DataSet y debes poner Return ds

     

    reporteconexion(consultasql = "select cod_eqp,tipo from equipos ") <-- No debes poner consultasql ="" sino solamente "select cod_eqp,tipo from equipos"

     

     Public Function reporteconexion(ByVal consultasql As String, ByVal devDataset As Boolean) As DataSet
     Dim sql As String
     Dim cn As MySqlConnection
     Dim cm As MySqlCommand
     Dim da As MySqlDataAdapter
     Dim ds As DataSet
    
     cn = New MySqlConnection("Server=192.168.1.14;Database=taller_produccion2; uid=root;pwd=root;")
    
     cn.Open()
    
     sql = consultasql
    
     cm = New MySqlCommand()
     cm.CommandText = sql
     cm.CommandType = CommandType.Text
     cm.Connection = cn
    
     da = New MySqlDataAdapter(cm)
     ds = New DataSet()
     da.Fill(ds)
     Return ds
     End Function
    
    Private Sub equipoCBOX_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles equipoCBOX.SelectedIndexChanged
    
     reporteconexion("select cod_eqp,tipo from equipos ")
     equipoCBOX.DataSource = reporteconexion.Tables(0)
     equipoCBOX.DisplayMember = "tipo"
     equipoCBOX.ValueMember = "cod_eqp"
    
     End Sub
    


     

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta myovani jueves, 28 de julio de 2011 17:32
    jueves, 28 de julio de 2011 17:01
  • necesito repetir 12 veces la misma conexion a la base de datos pero me aburre repetir la misma conexion varias veces ademas me llenaria muchas lineas

    es que es incorrecto hacer esto, deberias definir la cadena de conexion en el app.config y tomarla de alli

    revisa este articulo

     

    [ADO.NET] Parte 5 - Ejemplos Simples Operaciones CRUD

    veras que uso un App.config para definri la cadena de conexion y luego tomo de alli con el ConfigurationManager este valor

    Nota: recuerda agregar la referencia a System.Configuration para poder usar la clase

     

    mira que facil puede ser

     

    Public Class reporteequipos
    
     Public Function reporteconexion(ByVal consultasql As String) As DataTable
    
      Dim cn As New MySqlConnection("Server=192.168.1.14;Database=taller_produccion2; uid=root;pwd=root;")
    
      Dim cm As New MySqlCommand(consultasql, cn)
    
      Dim da As New MySqlDataAdapter(cm)
      Dim dt As New DataTable
      da.Fill(dt)
    	
    	Return dt
    
     End Function
    
    
     Private Sub equipoCBOX_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles equipoCBOX.SelectedIndexChanged
    
      Dim dt As DataTable = reporteconexion("select cod_eqp,tipo from equipos")
      equipoCBOX.DisplayMember = "tipo"
      equipoCBOX.ValueMember = "cod_eqp"
    	equipoCBOX.DataSource = dt
    	
     End Sub
    
    
    End Class
    


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta myovani jueves, 28 de julio de 2011 17:32
    jueves, 28 de julio de 2011 17:06

Todas las respuestas

  • Hola

    Algunas cosas que veo que creo no funcionan:

    equipoCBOX.DataSource = reporteconexion.ds.Tables(0) <-- Aqui pides un DataSet por lo tanto la función reporteconexion no debe ser del tipo Boolean sino del tipo DataSet y debes poner Return ds

     

    reporteconexion(consultasql = "select cod_eqp,tipo from equipos ") <-- No debes poner consultasql ="" sino solamente "select cod_eqp,tipo from equipos"

     

     Public Function reporteconexion(ByVal consultasql As String, ByVal devDataset As Boolean) As DataSet
     Dim sql As String
     Dim cn As MySqlConnection
     Dim cm As MySqlCommand
     Dim da As MySqlDataAdapter
     Dim ds As DataSet
    
     cn = New MySqlConnection("Server=192.168.1.14;Database=taller_produccion2; uid=root;pwd=root;")
    
     cn.Open()
    
     sql = consultasql
    
     cm = New MySqlCommand()
     cm.CommandText = sql
     cm.CommandType = CommandType.Text
     cm.Connection = cn
    
     da = New MySqlDataAdapter(cm)
     ds = New DataSet()
     da.Fill(ds)
     Return ds
     End Function
    
    Private Sub equipoCBOX_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles equipoCBOX.SelectedIndexChanged
    
     reporteconexion("select cod_eqp,tipo from equipos ")
     equipoCBOX.DataSource = reporteconexion.Tables(0)
     equipoCBOX.DisplayMember = "tipo"
     equipoCBOX.ValueMember = "cod_eqp"
    
     End Sub
    


     

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marcado como respuesta myovani jueves, 28 de julio de 2011 17:32
    jueves, 28 de julio de 2011 17:01
  • necesito repetir 12 veces la misma conexion a la base de datos pero me aburre repetir la misma conexion varias veces ademas me llenaria muchas lineas

    es que es incorrecto hacer esto, deberias definir la cadena de conexion en el app.config y tomarla de alli

    revisa este articulo

     

    [ADO.NET] Parte 5 - Ejemplos Simples Operaciones CRUD

    veras que uso un App.config para definri la cadena de conexion y luego tomo de alli con el ConfigurationManager este valor

    Nota: recuerda agregar la referencia a System.Configuration para poder usar la clase

     

    mira que facil puede ser

     

    Public Class reporteequipos
    
     Public Function reporteconexion(ByVal consultasql As String) As DataTable
    
      Dim cn As New MySqlConnection("Server=192.168.1.14;Database=taller_produccion2; uid=root;pwd=root;")
    
      Dim cm As New MySqlCommand(consultasql, cn)
    
      Dim da As New MySqlDataAdapter(cm)
      Dim dt As New DataTable
      da.Fill(dt)
    	
    	Return dt
    
     End Function
    
    
     Private Sub equipoCBOX_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles equipoCBOX.SelectedIndexChanged
    
      Dim dt As DataTable = reporteconexion("select cod_eqp,tipo from equipos")
      equipoCBOX.DisplayMember = "tipo"
      equipoCBOX.ValueMember = "cod_eqp"
    	equipoCBOX.DataSource = dt
    	
     End Sub
    
    
    End Class
    


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta myovani jueves, 28 de julio de 2011 17:32
    jueves, 28 de julio de 2011 17:06
  • Hola antonio 

    es que no me habia percatado del dataset  reporteconexion.ds.Tables(0) que facil lo tomare en cuenta a la proxima

     

    mucha razon gracias a tu respuesta pude resolverlo.


    Y a Leandro Mil gracias SOS UN CAPO

     

     

    jueves, 28 de julio de 2011 19:12