Ayuda con la implementación de función de búsqueda mediante controles en un textbox

Hola solicito tu ayuda por favor para realizar dos búsquedas por medio de el mismo control.
Todo esto es mediante los controles Option el usuario hace click en el tipo de búsqueda que desea y en el textbox escribe los datos, tengo dos controles option uno por clave y otro por nombre y se utiliza el mismo Texbox
Como puedo hacer cuando el usuario desee buscar por clave teclee en el Textbox y me acepte números y caracteres pero solamente 10 de ellos ejemplo 07add1123u, es para realizar una búsqueda, pero al mismo tiempo utilizo este mismo Textbox para otra búsqueda solamente de caracteres por ejemplo: Julio Castillo Peralta.
Disculpa la molestia y mil gracias por tu tiempo.
Respuesta
1
Bueno lo que haces es lo siguiente...
Deberías preguntar en el evento Keypress del textbox donde vas a escribir la búsqueda que si esta activo el option de solo números por ej. pones lo siguiente
If OptNumeros Then
f_MskNumber(Keyascii)
Elseif OptLetras Then
f_MskAlfa(Keyascii)
End If
A continuacion te paso las funciones para dicha accion
Saludos y espero que te haya servido.-
Private Function f_MskNumber(x_Asc As Integer) As Integer
If (x_Asc >= 48 And x_Asc <= 57) Or x_Asc = 8 Or x_Asc = 13 Then
f_MskNumber = x_Asc
Else
f_MskNumber = 0
End If
End Function
Function f_MskAlfa(x_Asc As Integer) As Integer
If x_Asc = 34 Or x_Asc = 39 Then
f_MskAlfa = 0
Else
f_MskAlfa = Asc(UCase(Chr(x_Asc)))
End If
End Function

2 respuestas más de otros expertos

Respuesta
1
Te pongo un código de ejemplo, que me parece que te estas liando con en textbox.
Si los option button son optbusquedatexto y optbusquedanum (dos Opt). Creas un textbox que sea txtBusquedatexto.
Dim numNumeros As Long
Private Sub optBusquedaNum_Click()
' le pongo maxlen a 10
txtBusqueda.MaxLength = 10
End Sub
Private Sub txtBusqueda_Change()
If optBusquedaNum.Value Then
' busqueda solo numérica
If Not IsNumeric(txtBusqueda) Then
txtBusqueda = 0
End If
End If
End Sub
Private Sub txtBusqueda_KeyPress(KeyAscii As Integer)
Debug.Print KeyAscii
If optBusquedaText.Value Then
' Para el busqueda text lo que hago es contar los
' caracteres que son números
If numNumeros > 10 And KeyAscii >= 48 And KeyAscii <= 57 Then
'Con mas de 10 números no hago nada
KeyAscii = 0
End If
If KeyAscii >= 48 And KeyAscii <= 57 Then
' es numerico, luego cuento cuantos son
numNumeros = numNumeros + 1
End If
End If
End Sub
Respuesta
1
Roal:
Esto lo hice, con Un textbox, y dos options
Si seleccionas un Option escribes solo 10 dígitos, si seleccionas el otro, escribes, lo que sea, y solo letras.
Te envío el código, para ver si te sirve, solo seria cosa de que lo adaptaras a tu proyecto.
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim strLen As Integer
Dim strValido As String
If Option1.Value = True Then
strLen = Len(Text1.Text)
If KeyAscii > 26 Then 'si no es un control enter retroceso, etc
If strLen >= 10 Then
KeyAscii = 0
End If
End If
Else
strValido = "ABCDEFGHIJKLMNOPQRSTUVWXYZÑÁÉÍÓÚÜ"
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii > 26 Then ' Si no es un código de control
If InStr(strValido, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas