Visual Basic - Problemas con el Combobox

Life is soft - evento anual de software empresarial
 
Vista:

Problemas con el Combobox

Publicado por Cesar (20 intervenciones) el 31/08/2005 05:48:33
Saludos! espero puedan ayudarme, resulta que tengo un combobox que se llena de datos de una tabla de access, hice una funcion de modo que el usuario pueda teclear la opcion a elegir y que se vaya mostrando la palabra a completar, es decir, si dentro de la lista del combo se encuentra la palabra MEXICO, que el usuario teclee la "M" y aparezca MEXICO. El problema es que no se selecciona dado que al entrar al evento validate, la propiedad listindex pierde el valor y no puedo asignar el indice que es el que me interesa. esta es la funcion:
Private Sub CmbPais_Change()
Dim strletras As String
Dim intcontador As Integer

strletras = Trim(CmbPais.Text)
If CmbPais.Text <> "" Then
For intcontador% = 0 To CmbPais.ListCount - 1
If Len(strletras$) <= Len(Trim(CmbPais.List(intcontador))) Then
If Mid(CmbPais.List(intcontador%), 1, Len(strletras$)) = strletras$ Then
CmbPais.Text = CmbPais.List(intcontador%)
CmbPais.ListIndex = intcontador%
CmbPais.SelStart = Len(strletras$)
CmbPais.SelLength = Len(CmbPais.Text)
Exit For
End If
End If
Next intcontador%
End If
End Sub
Despues lo valido para poder llenar un combo de Estados pero filtrado por el Pais seleccionado, como se muestra:
Private Sub CmbPais_Validate(Cancel As Boolean)
Dim Sql As String
Dim cont As Integer

If CmbPais.Text = "" Then
MsgBox "seleccione un elemento de la lista", vbExclamation, "SISTEMA DE CONTROL DE INTERNOS"
Cancel = True
Else
Cancel = False
Sql = "Select id_estado, s_estado From Cg_estado Where id_pais=" & MatPais(CmbPais.ListIndex) & _
" Order by s_estado"
Call llena_combo(Sql, FrmIngreso.CmbEstado)
Erase MatEstado
For cont = 0 To CmbEstado.ListCount - 1
MatEstado(cont) = matcombo(cont)
Next cont
End If
End Sub
Pero el CmbPais.ListIndex es igual a -1 como si no fuera seleccionado ningun elemento del combo de pais. Espero sea entendible Gracias.
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:Problemas con el Combobox

Publicado por Manuel (1 intervención) el 01/09/2005 02:56:38
Si el combo lo cargas mediante una tablaprueba con este codigo
La propiedad de Style del combobox debe de ser 2 Dropdown List

Private Sub Form_Load()
Call Carga_Pais
End Sub

Sub Carga_Pais()
Dim rsWork As ADODB.Recordset
Dim sql As String

sql = "SELECT * FROM TABLA "
sql = sql & "ORDER BY CLAVE"
Set rsWork = New ADODB.Recordset
Set rsWork.ActiveConnection = cnAccess (Tu coneccion)

With rsWork
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockReadOnly
On Error GoTo rsError_Handler
.Open sql, cnAccess
End With

If rsWork.RecordCount > 0 Then
rsWork.MoveFirst
End If
cboPais.Clear
cboPais.AddItem ""
Usuario = ""
Do Until rsWork.EOF
cboPais.AddItem rsWork!Campo01
On Error GoTo rsError_Handler
rsWork.MoveNext
Loop
If rsWork.State = adStateClosed Then rsWork.Open
Exit Sub

rsError_Handler:
Msg = "Error al cargar"
Estilo = vbCritical + vbOKOnly
Título = "Error en Tiempo de Ejecución"
MsgBox Msg, Estilo, Título
Err.Clear
End Sub

Saludos Manuel Colca Lima -Perú
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:Problemas con el Combobox

Publicado por Cesar (20 intervenciones) el 02/09/2005 03:51:15
Hola Manuel, te agradezco la ayuda pero el codigo que me mandaste funciona para llenar el combo, eso si me queda claro, el problema es que pretendo que el usuario vaya tecleando la palabra y a la vez que aparezca esa palabra completa para que el usuario la seleccione. Espero me entiendas
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