Foros del Web » Programación para mayores de 30 ;) » Programación General »

Rellenar Combobox segun la seleccion de otro Combobox con registros en una BD Access

Estas en el tema de Rellenar Combobox segun la seleccion de otro Combobox con registros en una BD Access en el foro de Programación General en Foros del Web. Buenas a todos soy Jose Molina, y soy nuevo en este foro. Esta pagina me ha ayudado mucho en mi aplicacion cuando necesito de algunas ...
  #1 (permalink)  
Antiguo 06/04/2015, 09:17
 
Fecha de Ingreso: abril-2015
Mensajes: 1
Antigüedad: 9 años
Puntos: 0
Rellenar Combobox segun la seleccion de otro Combobox con registros en una BD Access

Buenas a todos soy Jose Molina, y soy nuevo en este foro. Esta pagina me ha ayudado mucho en mi aplicacion cuando necesito de algunas ideas. Me inscribi porque tengo una tranca en mi aplicacion que es un poco complicada para mi actual nivel de programador. He buscado por varias paginas y no he podido dar con una solucion concreta. Si por descuido mio ya alguien habia resuelto un problema parecido al mio los moderadores estan en su derecho de editar y/o borrar o cerrar mi Tema.

El detalle es el siguiente:

- Tengo una BD creada llamada "Aeronaves2.mdb" la cual contiene una tabla que se llama "TablaBDAeronaves".
- Dentro de esta tabla estan como 12 campos, pero de los cuales los que me interesan son estos 3 campos especificos ("id(autonumerico)", "Marca" y "Matricula").
- Ni los campos "id" ni "Matricula" se repiten los datos. Solo "Marca" ya que hay 2 tipos de marcas de aeronaves distintas.
- Tengo un Formulario (Form9) ya creado el cual me muestra a travez de un sencillo enlace a un ADODC y TextBox los datos de la tabla.
- El "Form9" tiene a su vez un boton de busqueda a un nuevo formulario llamado "Form8" para hacer una busqueda rapida segun la Marca y la Matricula de la aeronave que se le necesiten ver los datos.
- El "Form8" tiene 2 ComboBox. El Combo1 funciona y carga desde la tabla, las Marcas de las aeronaves (cabe destacar que con un codigo sencillo logre que ademas eliminara los repetidos).
- El Combo2 carga los datos segun la seleccion del Combo1, pero esto esta de forma arcaica, solo lo esta haciendo actualmente mediante la instruccion .List() y asi no me interesa que funcione, ya que puede suceder que cuando empiece a cargar las marcas reales y marcas nuevas, el orden en el que esta actualmente varie y ya los datos que mostrara sera un desastre.

Adjunto el codigo de mi Combo1.Click para que tengan una idea de esta pequenia aplicacion: (puede parecer un chiste pero asi es como lo tengo ahora y disculpen el desastre)

Código:
Private Sub Combo1_Click()

Dim ComboListGo As String
Dim ListaLlena As Long

If Combo1.Text = Combo1.List(0) Then
    Combo2.Enabled = True
    Combo2.Clear
        Set cn = CreateObject("ADODB.Connection")
        Set Mtric = CreateObject("ADODB.Recordset")
            cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            App.Path & "\BD Aeronaves2.mdb" & ";Persist Security Info=False"
            Mtric.Open "Select * FROM MatriculasMarca01", cn, adOpenForwardOnly, adLockOptimistic
                Do While Not Mtric.EOF
                Combo2.AddItem Mtric!Matricula
                Mtric.MoveNext
                Loop
            cn.Close
        Set cn = Nothing
        Set Mtric = Nothing
Label2.Visible = True
End If

If Combo1.Text = Combo1.List(1) Then
    Combo2.Enabled = True
    Combo2.Clear
        Set cn = CreateObject("ADODB.Connection")
        Set Mtric = CreateObject("ADODB.Recordset")
            cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            App.Path & "\BD Aeronaves2.mdb" & ";Persist Security Info=False"
            Mtric.Open "Select * FROM MatriculasMarca02", cn, adOpenForwardOnly, adLockOptimistic
                Do While Not Mtric.EOF
                Combo2.AddItem Mtric!Matricula
                Mtric.MoveNext
                Loop
            cn.Close
        Set cn = Nothing
        Set Mtric = Nothing
Label2.Visible = True
End If

If Combo1.Text = Combo1.List(2) Then
    Combo2.Enabled = True
    Combo2.Clear
        Set cn = CreateObject("ADODB.Connection")
        Set Mtric = CreateObject("ADODB.Recordset")
            cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            App.Path & "\BD Aeronaves2.mdb" & ";Persist Security Info=False"
            Mtric.Open "Select * FROM MatriculasMarca02", cn, adOpenForwardOnly, adLockOptimistic
                Do While Not Mtric.EOF
                Combo2.AddItem Mtric!Matricula
                Mtric.MoveNext
                Loop
            cn.Close
        Set cn = Nothing
        Set Mtric = Nothing
Label2.Visible = True
End If

ComboListGo = Combo2.Text

ListaLlena = Len(ComboListGo)

    If ListaLlena > 0 Then
        Command2.Enabled = True
        Else
        Command2.Enabled = False
    End If
    
ComboListGo = ""
ListaLlena = 0

End Sub
Necesito que segun la seleccion que realice el usuario en el Combo1 como por ejemplo selecciono "Cessna", me cargue en el Combo2 que esta justo al lado, solamente las matriculas correspondientes a la "Marca" especificamente seleccionada y no asi como lo tengo en mi codigo que es a traves del .List.

De que forma en el que a traves de un codigo pueda cargar mi Combo2 de las matriculas segun la marca que seleccione en el Combo1?

Ya tengo mi Commandbutton funcional para que me muestre en el Form9 la matricula que seleccione en el Combo2 y me haga un Focus al Form8, sin embargo, la dependecia de un ComboBox con el otro esta hecha de manera ambigua con datos precargados en el Combo2 segun la seleccion del Combo1 con solo unos cuantos "If". Pero esto ya no me servira cuando se quieran agregar desde la aplicacion Marcas y Matriculas nuevas porque solo los identifico con .List(#) y asi no me es funcional.

Quisiera saber si alguien seria tan amable de aportarme ideas y asi lograr aprender un poco mas sobre VB.

Si falta alguna informacion adicional pueden preguntar y les facilito mas datos o mas de mis lineas de codigo.

Gracias de antemano desde Venezuela.

Etiquetas: access, bd, combobox, registros, rellenar, seleccion, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:59.