none
Filtro entre combobox RRS feed

  • Pregunta

  • Hola a todos, me estoy iniciando en el mundo de desarrollo en .net en 3 capas(datos, negocio y presentacion):

    primero decir que tengo 3 tablas, 1: departamento(coddepartamento, departamento), 2: provioncia(codprovincia, provincia, coddepartamento), 3: distrito(coddistrito, distrito, codprovincia). ya logre cargar los 3 combos donde cargan los nombres de departamento, provincia y distrito con el siguiente codigo en las tres capas 
    capadatos: departamento

    Private 

    Public Property departamento() As String
    Get
    Return _departamento
    End Get
    Set(ByVal value As String)
    _departamento = value
    End Set
    End Property

    Sub
    New(ByVal coddepartamento As String, ByVal departamento As String)
    Me._coddepartamento = coddepartamento 
    Me._departamento = departamento 
    End Sub

    //////////////////////////////////////////////////////////////////////////
    Function
    departamentoListarTodos() As List(Of departamento)
    Dim coleccion As New List(Of departamento)
    Using cn As New SqlConnection(My.Settings.cnSicond)
    Using cmd As New SqlCommand("spu_DEPARTAMENTOSelectAll", cn)
    cmd.CommandType = CommandType.StoredProcedure
    cn.Open()
    Using lector As SqlDataReader = cmd.ExecuteReader
    While lector.Read
    Dim departamento As New departamento
    departamento.coddepartamento = lector.GetString(0)
    departamento.departamento = lector.GetString(1)
    coleccion.Add(departamento)
    End While
    End Using
    End Using
    End Using
    Return coleccion
    End Function

     

    capaNegocios: departamento

    capapresentacion: departamento
    depMet As New departamentoLogica
    Me.cboDepartamento.DisplayMember = "departamento"
    Me.cboDepartamento.ValueMember = "coddepartamento"

    ...y asi tambien es el codigo tanto para provincia como para distrito.

    ahora lo que quiero es que cuando seleccione el combo de departamento automaticamente filtre en el combo de provincia segun el departamento seleccionado en el combodepartamento y asi tambien que cuando seleccione la provincia automaticamente filtre los distritos segun la provincia seleccionado el en comboprovincia.

    estoy desarrollando en vb.net 2005 con sql 2005
    muy agradecido de antemano por las respuestas que me puedan brindar

    .:: Bruce::.
    • Editado cbrucesalazar viernes, 31 de julio de 2009 16:34 modificacion
    viernes, 31 de julio de 2009 16:11

Respuestas

Todas las respuestas

  • Hola estimado,

    Una respuesta es usar 3 datatable relacionado por medio de datarelation.

    que posteriormente enlaza los combos.
    y entre ellos hace el vinculo, claro que debe apuntar los combos hijos con los datarelation.

    Otra forma mas rapida es relacionar desde capa fisica ( base de datos) y luego lleva esto a una clase del dataset tipado, generado desde la ventana de origen de datos de visual studio, y desde ahi construye la interfaz de los combos y su relación. o tambien puede relacionar desde la clase del dataset tipado sin necesidad de relacionar desde capa fisica

    Si necesita que te desarrolle la fuente solo avisame?

    cualquier cosa me avisa!

    saludos.

    Developer
    viernes, 31 de julio de 2009 20:48
  • megasoft2 gracias por tu respuesta, si pudieras facilitarme la fuente, te lo agradeceria mucho, stoy desarrollando guiandome de una pequeña aplicacion qe me paso un amigo ya qe recien me estoy iniciando en esto por exigencias del trabajo, he estado dedicado a soporte tecnico. ya esto del .net esta muy interesante. la aplicacion qe estoy haciendo es de tramite documentario y lo tengo qe entregar por setiembre mas o menos.

    ...gracias por tu respuesta.

    .:: Bruce ::.
    martes, 4 de agosto de 2009 18:07
  • Hola estimado cbrucesalazar.

    aqui esta la fuente: http://cid-180d91520e7e6619.skydrive.live.com/self.aspx/P%c3%bablico/demoComboMultiple.zip


    ante todo revisa la fuente de pie a cabeza , y ahi vas a entender el mecanismo  simple y directo de hacer esto. sin ncesidad de echar codigo ;-)

    si necesita conocer el tema más a fondo te recomiendo este libro: http://book.pdfchm.com/data-binding-with-windows-forms-2-0-programming-smart-client-data-applications-with-net-868/ (muy bueno!)

    Cualquier cosa me avisa, saludos.

    POR FAVOR CALIFICAME.

    saludos.

    Developer
    • Propuesto como respuesta Megasoft2 jueves, 6 de agosto de 2009 18:11
    • Marcado como respuesta cbrucesalazar jueves, 6 de agosto de 2009 18:13
    martes, 4 de agosto de 2009 18:45
  • muchas gracias Megasoft2 por tu respuesta ahora mismo lo revisare, deveras muchas gracias.
    jueves, 6 de agosto de 2009 17:11
  • Hola el ejemplo qe me pasastes esta en una sola capa, el dataset lo creo en la capa de datos verdad?
    jueves, 6 de agosto de 2009 22:21
  • Hola
    Bueno se puede decir que esta en 3 capa.

    Ya que tiene:
    Capa 1. Front end (Formulario ejemplo)
    Capa 2. Capa de Acceso a Datos ( Clase del Dataset tipado XSD)
    Capa 3. Capa fisica ( Base de Datos)

    el esquema (xsd) y clase (vb) del dataset fuertemente tipado (Representa la capa de acceso a datos)

    Se puede incluir otras capa segun la necesidad del proyecto.


    Bueno Amigo. gracias por el comentario.

    Saludos.
    Developer
    viernes, 7 de agosto de 2009 11:05
  • MegaSoft2

    ¿de donde demonios sacaste que eso es programación en tres capas?

    -Entidades
    -Negocios
    -Datos
    -Presentacion

    Eso programacion en capas y no conectarte via databindings...
    viernes, 2 de octubre de 2009 16:14
  • Hola sam1326

    te recomienda que revise este material:
    http://book.pdfchm.com/data-binding-with-windows-forms-2-0-programming-smart-client-data-applications-with-net-868/

    Fijate algo, existe la programación n-capa y el tema puede varia mucho segun el escenario

    ahora segun tu comentario es otro escenario de n-capa.

    finalmente el ejemplo si usa  databindings a nivel de clase construida del dataset fuertemente tipado.

    saludos.

    Developer .NET
    viernes, 2 de octubre de 2009 17:27
  •  

    '--llenar comboxbox Dpto

     

    Dim DADep As New SqlDataAdapter

     

    Dim DTDep As New DataSet

    DADep.SelectCommand =

    New SqlCommand

     

    With DADep.SelectCommand

    .Connection = Conexion

    .CommandType = CommandType.StoredProcedure

    .CommandText =

    "SP_LlenarCombo_Dep"

     

    End With

    DADep.Fill(DTDep,

    "SP_LlenarCombo_Dep")

     

    Me.cboDep.DataSource = DTDep.Tables(0)

     

    Me.cboDep.DisplayMember = "Nombre_Dpto"

     

    Me.cboDep.ValueMember = "CodDpto"

     

    '---------------------------------------------------------------

     

    'llenar combo provinicia

     

     

    Dim DAProv As New SqlDataAdapter

     

    Dim DTProv As New DataSet

    DAProv.SelectCommand =

    New SqlCommand

     

    With DAProv.SelectCommand

    .Connection = Conexion

    .CommandType = CommandType.StoredProcedure

    .CommandText =

    "SP_LlenarCombo_Prov"

     

    End With

    DAProv.Fill(DTProv,

    "SP_LlenarCombo_Prov")

     

    Me.cboProv.DataSource = DTProv.Tables(0)

     

    Me.cboProv.DisplayMember = "Nombre_Provincia"

     

    Me.cboProv.ValueMember = "codProvincia"

     

    '-----------LLENAR COMBO DISTRITO

     

    Dim DADistrito As New SqlDataAdapter

     

    Dim DTDistrito As New DataSet

    DADistrito.SelectCommand =

    New SqlCommand

     

    With DADistrito.SelectCommand

    .Connection = Conexion

    .CommandType = CommandType.StoredProcedure

    .CommandText =

    "SP_LlenarCombo_Distrito"

     

    End With

    DADistrito.Fill(DTDistrito,

    "SP_LlenarCombo_Distrito")

     

    Me.cboDis.DataSource = DTDistrito.Tables(0)

     

    Me.cboDis.DisplayMember = "Nombre_Distrito"

     

    Me.cboDis.ValueMember = "CodDistrito"

     

    Yo no trabaje con capas para realizar esta operación pero me dio buen resultado, Cargue los 3 combobox con los datos de estas tablas utilizando procedimientos almacenados.... Espero que mi aporte le sirva...Tambien me estoy iniciando en la programción en vb.net...

    Ahora lo que quiero es cuando yo seleccione el departamento me carguen los nombres de la provincia en el otro combobox.

     

    me da un error el valor del parametro datarowview no se puede convertir a string... haber si me pasan lo que significa para resolver mi problema. les dejo mi correo KEN_KRAMER_18@HOTMAIL.COM . 

    sábado, 1 de mayo de 2010 17:30
  • BUENO DOCTOR:

     

    YA ENCONTRE LA SOLUCIÓN A MI PROBLEMA

    SOLO ERA CREAR UNA VARIABLE DE TIPO STRING Y ASIGNARLE

    EN VALOR DEL COMBOBOX DPTO.

    Y UTILIZARLO COMO PARAMETRO.

    AQUI LE DEJO EL CODIGO PARA LOS QUE LO NECESITEN:

    MICHAEL KRAMER T.

     

    Private Sub cboDep_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboDep.SelectedIndexChanged

     

    Dim Codigo As String

    Codigo =

    Me.cboDep.SelectedValue.ToString

     

    Dim DADpto_Prov As New SqlDataAdapter

     

    Dim DTDpto_Prov As New DataSet

    DADpto_Prov.SelectCommand =

    New SqlCommand

     

    With DADpto_Prov.SelectCommand

    .Connection = Conexion

    .CommandType = CommandType.StoredProcedure

    .CommandText =

    "Provincia_Dpto"

    .Parameters.Add(

    New SqlParameter("@CodDpto", SqlDbType.Char, 2, ParameterDirection.Input)).Value = Codigo

     

    End With

    Conexion.Open()

    DADpto_Prov.Fill(DTDpto_Prov,

    "Provincia_Dpto")

    Conexion.Close()

     

    Me.cboProv.DataSource = DTDpto_Prov.Tables(0)

     

    Me.cboProv.DisplayMember = "Nombre_Provinica"

     

    Me.cboProv.ValueMember = "CodProvincia"

     

     

    End Sub

    LIMA-PERU

     

     

    sábado, 1 de mayo de 2010 17:51