Visual Basic - COMBO BOX

Life is soft - evento anual de software empresarial
   
Vista:

COMBO BOX

Publicado por Beatroz (9 intervenciones) el 31/01/2008 11:06:38
Hola a todos:

Os comento, tengo una hoja de calculo con unos datos sobre unos cohes.

En la primera columna tenemos la marca del coche, en la segunda el modelo, y en la tercera una pequeña descripcion.

Me gustaria crear un formulario con dos combobox, uno para elegir la m arca, y otro para elegir el modelo.

Una vez elegida la marca y el modelo, deberia salir la descripcion de ese determinado coche.

He encontrado un codigo en internet que me rellena los dos combos, pero me repite los dato,s y no se como modificarlo para q no los repita.

Otra de las cuestiones, es como cargo el textbox o el listbox, con los de ese determinado vehiculo.

Muchas gracias a todos por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:COMBO BOX

Publicado por Llaverin (70 intervenciones) el 31/01/2008 15:15:51
Hola Beatroz:
Tendrias que poner el codigo para saber porque motivo se te repiten los datos. Ponlo y te podremos echar una mano.

Saludos
Ana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMBO BOX

Publicado por Beatriz (9 intervenciones) el 31/01/2008 16:01:25
El codigo lo he encontrado por internet, no tengo mucha idea de lo que hace, por lo que si alguien sabe de un codigo mas sencillo para hacer lo mismo que me lo comunique vale'?????

Y si me podeis decir lo de q aparezcan los datos en el text?????

Tambie

Private Sub ComboBox1_Change()
[a2] = ComboBox1.Value
CargaDeComboBox2
End Sub

Private Sub ComboBox2_Change()
[b2] = ComboBox2.Value
Filtro
TextBox1.Text = ComboBox2.Text
TextBox1.Text = ComboBox1.Text

End Sub


Private Sub CommandButton1_Click()
respuesta = MsgBox("¿Deseas Salir del Programa?", vbOKCancel, "SALIR")
If respuesta = 1 Then
End
End If
End Sub

Private Sub UserForm_Initialize()
FiltroInicial
End Sub

Private Sub CargaDeComboBox2()
Filtro
Dim celda As Range
With ComboBox2
.Clear
For Each celda In Range("b5:b" _
& Range("b65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeVisible)
.AddItem celda
Next
End With
End Sub

Private Sub Filtro()
Range("A4:C65536").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Range("A1:B2"), _
Unique:=False
End Sub
Private Sub FiltroInicial()
Range("A4:A65536").AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:="", _
Unique:=True

Dim celda As Range
With ComboBox1
.Clear
For Each celda In Range("a5:a" _
& Range("a65536").End(xlUp).Row) _
.SpecialCells(xlCellTypeVisible)
.AddItem celda
Next
End With
If ActiveSheet.FilterMode = True _
Then ActiveSheet.ShowAllData
End Sub
Private Sub Combo2_Click()

End Sub

Private Sub UserForm_Terminate()
If ActiveSheet.FilterMode = True _
Then ActiveSheet.ShowAllData
Rows("2:2").ClearContents
End Sub

Muchas gracias a todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMBO BOX

Publicado por Llaverin (70 intervenciones) el 01/02/2008 15:45:45
Lo primero que tienes que hacer es rellenar los combos como bien dices tu:

Yo lo hago mediante ADO

Haces la conexión a la base de datos y para rellenarlos pones esto:
rs.open "Select * From Marca;", cnn, adOpenDynamic, adLockOptimistic
'Haces un bucle para que te de todos las marcas y poderlas introducir en el combo
Do Until rs.EOF
cmbMarcas.AddItem (rs!NombreMarca)
rs.MoveNext
Loop

rs.open "Select * From Modelo;", cnn, adOpenDynamic, adLockOptimistic
'Haces un bucle para que te de todos las modelo y poderlas introducir en el combo
Do Until rs.EOF
cmbMarcas.AddItem (rs!NombreModelo)
rs.MoveNext
Loop

Y en la funcion de cada combo recuperas el ID de cada uno, cada vez que pierda el foco el combo pasa por aqui
Private Sub cmbModelo_LostFocus()
rs.open "Select * From Modelo Where NombreModelo='" & cmbModelo.Text & "';",
cnn, adOpenDynamic, adLockOptimistic
vIdModelo = rs!IDModelo
End Sub

Private Sub cmbModelo_LostFocus()
rs.open "Select * From Marca Where NombreMarca='" & cmbModelo.Text & "';",
cnn, adOpenDynamic, adLockOptimistic
vIdMarca = rs!IDMarca
End Sub

Por ultimo, accedes a la tabla, donde tienes esos datos:
rs.open "Select * From Tabla Where IdModelo=" & vIdModelo & " And IdMarca=" & vIdMarca & ";"cnn, adOpenDynamic, adLockOptimistic
text1.text = rs!Descripcion

Espero que te valga y te hayas enterao

Saludos
Ana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMBO BOX

Publicado por beatriz (9 intervenciones) el 01/02/2008 15:59:03
Hola Llaverin

Muchas gracias por tu respuesta. Eso si tengo dos dudas

¿Puedo crear un ADO a una hoja de excel?

¿Podria haber otra forma de solucionarlo? Esq este formulario, se va a consultar en diferentes ordenadores, por lo cual¿Tendria que crear una conexion por cada equipo en el q se va a ejecutar?

Muchas gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar