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