Autor Tema: Es correcto usar esta funcion de esta forma?  (Leído 2877 veces)

0 Usuarios y 1 Visitante están viendo este tema.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Es correcto usar esta funcion de esta forma?
« en: Abril 09, 2013, 08:29:26 pm »
Lo que hago es crear una funcion para cargar 3 combos con diferentes select. mi pregunta es si hay una manera mas optima de hacer esto.

Código: (VB) [Seleccionar]
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Call CargarCombos("SELECT * FROM filtros WHERE tipo='RUBRO'", "RUBRO")
        Call CargarCombos("SELECT * FROM filtros WHERE tipo='SUB-RUBRO'", "SUB-RUBRO")
        Call CargarCombos("SELECT * FROM filtros WHERE tipo='MARCA'", "MARCA")

    End Sub

   
Código: (VB) [Seleccionar]
Sub CargarCombos(ByVal strQuery As String, ByVal xCombos As String)

        Try
 
            StrSQL = strQuery
            strComando = New MySqlCommand(StrSQL, strConexion)

            Dim drReader As New MySqlDataAdapter(strComando)
            Dim dtFiltros As New DataTable
            drReader.Fill(dtFiltros)

            If xCombos = "RUBRO" Then
                ComboBox1.DisplayMember = "nombres"
                ComboBox1.ValueMember = "id"
                ComboBox1.DataSource = dtFiltros
            End If

            If xCombos = "SUB-RUBRO" Then
                ComboBox2.DisplayMember = "nombres"
                ComboBox2.ValueMember = "idrubro"
                ComboBox2.DataSource = dtFiltros
            End If

            If xCombos = "MARCA" Then
                ComboBox3.DisplayMember = "nombres"
                ComboBox3.ValueMember = "idmarca"
                ComboBox3.DataSource = dtFiltros
            End If

        Catch ex As Exception
            MsgBox(ex.Message.ToString, vbInformation)
        Finally
            strConexion.Close()
            strConexion.Dispose()
        End Try

    End Sub

CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Es correcto usar esta funcion de esta forma?
« Respuesta #1 en: Abril 10, 2013, 02:40:14 am »
Podrias pasar tambien el control como variable y en el sql usar alias para hacer un solo DisplayMember y ValueMember. En resumidas se trata de factorizar para tener menos codigo, nada mas.
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Es correcto usar esta funcion de esta forma?
« Respuesta #2 en: Abril 10, 2013, 09:41:36 am »
Si intente eso pero no se como pasar el control como variable. Tenes algun ejemplo de como hacer eso.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Es correcto usar esta funcion de esta forma?
« Respuesta #3 en: Abril 10, 2013, 02:16:57 pm »
Uu, me la se con naranjas no con manzanas, pero al ser ambas frutas quiza puedas ajustarlo. En VB6 seria asi:

Por ejemplo paso el control DataCombo y una variable para saber cual consulta ejecutar

Código: (VB) [Seleccionar]
Call CargarDC(DataCombo1, 1)
Y el sub seria
Código: (VB) [Seleccionar]
Public Sub CargarDC(DCmb As DataCombo, Query As Integer)
Dim rs As New ADODB.Recordset

Select Case Query
Case 1: sql = "SELECT Id as COD, * FROM filtros WHERE tipo= 'RUBRO'"
Case 2: sql = "SELECT Idrubro as COD, * FROM filtros WHERE tipo= 'SUB-RUBRO'"
Case 3: sql = "SELECT Idmarca as COD, * FROM filtros WHERE tipo= 'MARCA'"
End Select

rs.Open sql(), dB, 1, 1

Set DCmb.RowSource = rs

With DCmb
    .ListField = "nombres"
    .BoundColumn = "COD"
End With
End Sub

Mas o menos esa es la idea


Saludos
« última modificación: Abril 10, 2013, 02:19:57 pm por YAcosta »
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Es correcto usar esta funcion de esta forma?
« Respuesta #4 en: Abril 10, 2013, 03:40:56 pm »
De lujo amigo, quedo así el code y funciona de 10.

Código: (VB) [Seleccionar]
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Call CargarCombos("SELECT * FROM filtros WHERE tipo='RUBRO'", ComboBox1)
        Call CargarCombos("SELECT * FROM filtros WHERE tipo='SUB-RUBRO'", ComboBox2)
        Call CargarCombos("SELECT * FROM filtros WHERE tipo='MARCA'", ComboBox3)

    End Sub

Código: (VB) [Seleccionar]
    Sub CargarCombos(ByVal strQuery As String, ByVal xCombo As ComboBox)

        Try
            '---------------------------------------------------------------------------------------------------------
            ' Conectar con BD MySQL
            Call ConectarMySQL()
            '---------------------------------------------------------------------------------------------------------

            StrSQL = strQuery
            strComando = New MySqlCommand(StrSQL, strConexion)
            Dim drReader As New MySqlDataAdapter(strComando)
            Dim dtFiltros As New DataTable
            drReader.Fill(dtFiltros)

            xCombo.DataSource = dtFiltros
            xCombo.DisplayMember = "nombres"
            xCombo.ValueMember = "id"

        Catch ex As Exception
            MsgBox(ex.Message.ToString, vbInformation)
        Finally
            strConexion.Close()
            strConexion.Dispose()
        End Try

    End Sub


Saludos...
« última modificación: Abril 10, 2013, 04:01:43 pm por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

seba123neo

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Es correcto usar esta funcion de esta forma?
« Respuesta #5 en: Abril 17, 2013, 09:50:28 am »
lo que no veo bien es que te conectas y desconectas solo por cargar un combo.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Es correcto usar esta funcion de esta forma?
« Respuesta #6 en: Abril 17, 2013, 10:59:26 am »
Si si asi es Seba, ya resolvi ese tema ya no lo tengo asi, tambien cambie la forma de esta funcion, uso el DataReader para cargarlo es mucho mas rápido.

Aca dejo por si le sirve a alguien.

Código: (VB) [Seleccionar]
Public Class DatosCombo
    Public Property xValue As Integer
    Public Property xDisplay As String
End Class

Código: (VB) [Seleccionar]
Sub CargarCombo(ByVal strQuery As String, ByVal xCombo As ComboBox)

    StrSQL = strQuery
    strComando = New MySqlCommand(StrSQL, strConexion)
    rsReader = strComando.ExecuteReader
    Dim Lista As New List(Of DatosCombo)
    While rsReader.Read
        Dim item As New DatosCombo
        item.xValue = CInt(rsReader("id"))
        item.xDisplay = CStr(rsReader("nombres"))
        Lista.Add (item)
    End While
    xCombo.DisplayMember = "xDisplay"
    xCombo.ValueMember = "xValue"
    xCombo.DataSource = Lista

End Sub

Código: (VB) [Seleccionar]
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Call CargarCombo("SELECT id,nombres FROM articulos", ComboBox1)
End Sub
« última modificación: Abril 17, 2013, 11:03:33 am por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo