Tengo un acampo numérico que contiene varios caracteres que necesito reemplazar

Tengo una columna de una tabla en Access la cual contiene números telefónicos pero tiene caracteres (-) y letras (ext). Necesito remplazarlos o más bien eliminarlos, pero quisiera saber si lo puedo hacer en un solo código o necesito reemplazar uno y luego el otro. Este es el que utilice pero individualmente y de esta manera necesito crear múltiples tablas.  Replace([Filter_Table2]![tel],"-","")

Respuesta

Si aporta más información, como un ejemplo de los números a convertir trato de elaborarle una función para hacerlo en un solo paso. No entiendo lo de crear múltiples tablas.

Primero que todo permítame informarle que esto no es lo mismo que quitar acentos. Esta función le sirve. Consta de 2 parámetros, el primero es el número de teléfono y el segundo son los números que deben permanecer, para este caso son del 0 al 9, no obstante puede incluirse una letra que deba permanecer. Guarde esta función en un módulo

Public Function ajusta_tel(ByVal strTel As Variant, ByVal strNumeros As String) As String
Dim strCaracter As String
Dim strTemp As String
Dim intPos As Integer
  strTemp = ""
  For intPos = 1 To Len(strTel)
    strCaracter = Mid(strTel, intPos, 1)
    If InStr(strNumeros, strCaracter) > 0 Then
      strTemp = strTemp & strCaracter
    End If
  Next
  ajusta_tel = strTemp
End Function

Ejemplo de llamada desde la ventana de inmediato

¿

? Ajusta_tel("14326785-BC", "0123456789") --- Retorna 14326785 retira el - y BC

Ahora ejemplo dejando los números y determinada letra o letras.

¿

? Ajusta_tel("14326785-ABCD", "BD0123456789") - Retorna 14326785BD, observe que quita el guión y de las 4 letras solo deja BD.

En su caso aplica el primer ejemplo, y lo puede hacer mediante un UPDATE o una consulta de actualización.

No lo haga en forma individual porque debe utilizar varios UPDATE, imagínese que sean varias letras del abecedario, como lo explican implicaría llenarse de UPDATE.

Le dejo el uso de la función con este ejemplo:

TABLA

Tabla original números de teléfono con guion y letras, observe que el id=5 tiene letras al comienzo y al final.

Diseño de la consulta de actualización

Llamo la función y le paso el campo nrotel y los números que deben permanecer, en este caso del 0 al 9. Ejecuto la consulta y obtengo:

TABLA ACTUALIZADA

Observe que ningún registro tiene letras en el campo nrotel, fíjese en el id=5 que también suprimió las letras al comienzo, el guion y las letras al final.

Ahora, si quiere hacer la actualización desde el botón de un formulario, incluya en el evento Al hacer clic:

Currentdb.Excecute "UPDATE tbltelefonos SET tbltelefonos.nrotel = ajusta_tel([nrotel],"0123456789");"

2 respuestas más de otros expertos

Respuesta

En este mismo foro, localiza una respuesta a como quitar los acentos (tildes)

Solo se han de sustituir los caracteres acentuados y sin acentuar, con sus equivalentes (sean números guiones o los espacios ... por los que corresponda, que pueden ser cadenas vacías)

Por cierto, un campo que tiene algo mas que números no es numérico, será alfanumérico (texto) y tras esa limpieza, aunque solo se muestren dígitos: seguirá siendo alfanumérico.
Para que sea considerado y utilizado como un numero se le ha de aplicar la función VAL y guardarlo en un campo declarado como numero (no texto)

Inapreciable Eduardo, existen mas formas de hacer las cosas que la única que al parecer conoces, deberías abrir la mente y exponer 'tú' método sin despreciar al resto.

En ese ejemplo se le responde a su duda: Como hacer una sustitución múltiple.

De ella podrá tomar ideas para hacer lo que quiera o tomar la senda de copiar al pie de la letra cualquiera ya creada (algunos quieren programar, no simplemente copiar).

--------------------------------------------------------------------------------------------------
Te rogaría inestimable Eduardo, que fueras un poco mas cortes con el resto de participantes, este no es un país de ciegos y tu el rey tuerto.
Con tu actitud solo muestras el comportamiento clásico del 'síndrome del principito', creo que ya es la hora de madurar.

Respuesta

Deberías poner una imagen de la tabla, ya que si no la pones debemos imaginarla. Si tengo la tabla Tabla1

En un formulario cualquiera le pongo un botón, aunque podría ser en cualquier otro evento, y cuando lo pulso me deja la tabla como

El código del evento Al hacer clic del botón es

Private Sub Comando69_Click()
DoCmd.RunSQL "update tabla1 set telefono=replace([telefono],""-"","""")"
DoCmd.RunSQL "update tabla1 set telefono=replace([telefono],""ext"","""")"
DoCmd.RunSQL "update tabla1 set telefono=replace([telefono],"" "","""")"
End Sub

Pero como te decía sería conveniente que pusieras una imagen de la tabla

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas