Access - Crear máscara de entrada para campo Teléfono

 
Vista:

Crear máscara de entrada para campo Teléfono

Publicado por Anna (22 intervenciones) el 11/08/2010 11:25:52
Buenas!!

Estoy haciendo un formulario dónde uno de los campos es Teléfono. Pueden ser tanto teléfonos fijos como móviles.

Me gustaría que a la hora de abrir el formulario para consultar los datos, según el tipo de teléfono (fijo o móvil), se visualizara de una forma o de otra. Me explico: Si el teléfono es un móvil: 123 456 789. Y si es un fijo: 12 345 67 89.

Para eso he hecho un pequeño código, que es éste:

*******************************************************************
Private Sub Form_Load()
If NumTelf.Value = "9*" Then
NumTelf.Format = "## ### ## ##"
Elseif
NumTelf.Format = "### ### ###"
End Sub
*********************************************************************

Lo he probado con la propiedad InputMask y Format, y también cambiando el formato del campo a Texto y Numéro, sustituyendo el asterisco por interrogantes, etc., pero nada, el número me aparece siempre igual, con todos los carácteres juntos.

Tengo el código mal escrito o me falta algo? Si alguien me pudiera ayudar, se lo agradecería!

Saludos!! ;-)

Anna
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
Imágen de perfil de Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Crear máscara de entrada para campo Teléfono

Publicado por Enrique Ramírez (629 intervenciones) el 11/08/2010 16:30:06
Prueba cambiando el valor de la variable wTel para que te presente las dos mascaras, esta probado y si funciona.

Option Compare Database
Dim wTel As String

Private Sub Form_Load()
wTel = "CEL"
Me.NumTelf.Value = "123456789"

If wTel = "CEL" Then
Me.NumTelf.InputMask = "999-999-999"
Else
Me.NumTelf.InputMask = "99-999-99-99"
End If

End Sub
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:Crear máscara de entrada para campo Teléfono

Publicado por Anna (22 intervenciones) el 12/08/2010 09:28:25
Hola Enrique! Gracias por responder tan rápido!

Lo he probado y parece que funciona, pero no acabo de entender lo de la variable wTel.. :-/

¿De qué forma puedo poner que los números que empiezan por 6 (que suelen ser los móviles) tengan la máscara de entrada 999-999-999, y los que empiezan por 93 (que suelen ser los fijos) tengan la otra máscara?
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
Imágen de perfil de Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Crear máscara de entrada para campo Teléfono

Publicado por Enrique Ramírez (629 intervenciones) el 12/08/2010 16:43:25
Desechamos la variable wTel y preguntamos si la primer posicion del número telefonico (Me.numtelf.value) es 6, si es Verdadero se trata de un celular, si es Falso se trata de un Telefono Fijo.
Si hay telefonos que empiecen con otro digito diferente de 6 y de 9 los va a asumir como Telefono Fijo .

Private Sub Form_Load()

Me.numtelf.Value = "123456789"

If Mid(Me.numtelf.Value, 1, 1) = 6 Then
Me.numtelf.InputMask = "999-999-999"
Else
Me.numtelf.InputMask = "99-999-99-99"
End If

End Sub

espero sea lo que necesitas.
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:Crear máscara de entrada para campo Teléfono

Publicado por Anna (22 intervenciones) el 13/08/2010 11:36:06
Hola!

Ahora sí que lo hace!! Pero aun falta algo... Resulta que sólo me capta el valor del primer registro y aplica la condición de la máscara de entrada en TODOS los registros, sin importar con qué número empiecen. Es decir, si el primer registro empieza con "9", todos los campos me aparecen con la máscara de 999-999-999.

Supongo que se tendría que hacer un bucle recorriendo todos los registros, y dentro del bucle, la condición, ¿no? He estado trasteando diversas funciones pero no sé cuál es la mejor para poder recorrer los registros uno a uno... :-/
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
Imágen de perfil de Enrique ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Crear máscara de entrada para campo Teléfono

Publicado por Enrique ramírez (629 intervenciones) el 13/08/2010 17:38:08
Yo utilizo esta forma para leer y procesar secuencialmente el contenido de una tabla desde el primer hasta el último registro, no se si es lo que requieras, ADECUALO A TUS NECESIDADES ya que tal como está solo obtendras el último resultado porque lee aplica el formato de mascara y lee el siguiente .
Ultilizo el DAO si lo quieres usar debes palomear la referencia Microsoft DAO 3.6 Object Library si no lo usas omite todo lo que diga DAO.

Option Compare Database
Dim db As DAO.Database, rs As DAO.Recordset

Private Sub Form_Load()

Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT Tabla1.numtelf FROM Tabla1", dbOpenDynaset)
If rs.RecordCount > 0 Then
Do While rs.EOF = False
Me.Texto1.Value = rs!numtelf
If Mid(rs!numtelf.Value, 1, 1) = 6 Then
Me.Texto1.InputMask = "999-999-999"
Else
Me.Texto1.InputMask = "99-999-99-99"
End If
rs.MoveNext
Loop
End If
rs.Close
Set db = Nothing

End Sub
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