** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Datos No coincidentes
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoDatos No coincidentes

 Responder Responder Página  <12
Autor
Mensaje
CacoMarco Ver desplegable
Asiduo
Asiduo


Unido: 12/Octubre/2011
Localización: Chile
Estado: Sin conexión
Puntos: 258
Enlace directo a este mensaje Enviado: 10/Diciembre/2018 a las 20:40
Estimado Mounir.
Vuelvo por aquí para molestar tu atención nuevamente.
El ejemplo que me enviaste y como dije antes, funciona perfecto, mi problema ahora radica en que los Números de parte también pueden llevar una letra en su composición.
Así si tengo 1FER255-650... con tu ayuda queda perfectamente es 255650, pero ahora puede existir un código por ejemplo 1FER7D-5080... y el sistema me lo deja en 175080 y lo que necesito es 7D5080.
Me podrías ayudar con la modificación del código ?
Agradezco enormemente tu ayuda, pero el código enviado para mí me quedó grande por eso no he podido lograr modificarlo para lograr lo que necesito.
CacoMarco/Chile
Arriba
emiliove Ver desplegable
Moderador
Moderador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 4920
Enlace directo a este mensaje Enviado: 10/Diciembre/2018 a las 21:22
¿Y que has intentado?, mientras te contesta Mounir

Saludos

Arriba
CacoMarco Ver desplegable
Asiduo
Asiduo


Unido: 12/Octubre/2011
Localización: Chile
Estado: Sin conexión
Puntos: 258
Enlace directo a este mensaje Enviado: 10/Diciembre/2018 a las 22:28
El código del ejemplo que envió Mounir a través de un bucle recorre el código siempre que sea mayor de 1 y menor a 10. Es decir, numérico.
Lo que no se hacer es hacer lo mismo pero que incluya el recorrido de la A hasta la Z.
intenté como dije, siguiendo el ejemplo de Mounir, pero no logro hacerlo, el código es demasiado para mí.

CacoMarco/Chile
Arriba
emiliove Ver desplegable
Moderador
Moderador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 4920
Enlace directo a este mensaje Enviado: 10/Diciembre/2018 a las 22:43
Y solo quieres eliminar 1FER y el guion "-", de una tabla y el "-" guion de la otra, o tienes mas variantes por que si no explicas todo, nunca terminamos.

Saludos.


Editado por emiliove - 10/Diciembre/2018 a las 22:46
Arriba
CacoMarco Ver desplegable
Asiduo
Asiduo


Unido: 12/Octubre/2011
Localización: Chile
Estado: Sin conexión
Puntos: 258
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 00:31
Sorry, Emilio 
Lo que necesito eliminar es los primeros cuatro dígitos y dentro del texto que resta eliminar el guíon "-" y los puntos del final "..."
Los puntos pueden ser tres, cuatro y es posible que estén y no estén en el código que deseo convertir.
Para el ejemplo:
1FER255-650... debe quedar en 255650
1FER7D-5080... debe quedar en 7D5080

Disculpa nuevamente y muchas gracias,
CacoMarco/Chile
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5096
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 11:01
Hola!

Mira a ver si te arreglas con esto:

Private Sub Comando2_Click()
Dim num As Boolean ' solo para saber si discirmina texto de número
Dim longitud As Long
If IsNumeric(Left(Me.Texto0, 4)) Then ' averiguamos si los primeros caracteres son nuemros
num = True ' si es número nos da Verdadero
MsgBox num ' nos muestra un mensaje
Else
num = False ' si no es número nos da Falso
longitud = Len(Me.Texto0)' miramos la longitud del registro
MsgBox num
MsgBox Replace(Replace(Mid(Me.Texto0, 5, longitud), "-", ""), ".", "")' eliminamos los simbolos que no queremos
End If
End Sub
Un Saludo.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5096
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 11:22
Hola!

Crea un Módulo en tu aplicaión y pega esta función:
Function Palabra(Campo As String) As String
Dim longitud As Long
If IsNumeric(Left(Campo, 4)) Then
Palabra = Campo
Else
longitud = Len(Campo)
Palabra = Replace(Replace(Mid(Campo, 5, longitud), "-", ""), ".", "")
End If
End Function


Asi puedes utilizarla en una consulta, Formulario o informe.

En Consulta: Creas un campo independiente "Registros"
Registros:Palabra(Nro_de_Parte) y ya está.


Editado por mounir - 11/Diciembre/2018 a las 11:22
Un Saludo.
Arriba
CacoMarco Ver desplegable
Asiduo
Asiduo


Unido: 12/Octubre/2011
Localización: Chile
Estado: Sin conexión
Puntos: 258
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 13:25
Gracias Mounir, en ambos casos aún no elimina los puntos finales de la cadena.
1FER255-650... entrega como resultado 255650...
1FER7D-5080 entrega como resultado 7D5080 

En el primer caso sólo me restaría eliminar los puntos, en este caso tres, de la cadena para que el resultado sea 255650

Pero, intentaré hacerlo, ya los he molestado lo suficiente.
Gracias a todos, y si logro hacerlo lo dejaré por aquí..
Saludos,

CacoMarco/Chile
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5096
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 14:07
Hola!

No lo sé a mi me sale esto:

Id     Nro_de_Parte          letras

1     255650                   255650
2     1FER255-650           255650
3     1FER255650...           255650
4     1FER7D-5080...           7D5080
5     1FER7D-5080           7D5080
6     1FER255-650 ...           255650
Un Saludo.
Arriba
CacoMarco Ver desplegable
Asiduo
Asiduo


Unido: 12/Octubre/2011
Localización: Chile
Estado: Sin conexión
Puntos: 258
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 14:21
Thumbs UpSí Mounir, es extraño lo que sucede, pero he logrado hacerlo y es lo siguiente.
LA primera función "Palabra" es la que gentilmente tu me preparaste, y la segunda "CovertirTexto" la recogí y adapté del colaborador Norberto Redondo Quevedo de la Wep del Programador.
Entonces en una consulta creo un campo Codigo1: ConvertirTexto([nro_de_parte]) y luego creo un nuevo campo Registros: Palabra([Codigo1]) y problema solucionado.
Agradezco enormemente vuestra paciencia y disposición la verdad es que son un "10", Un abrazo.
Favor, pueden cerrar el hilo
Thumbs Up

Function Palabra(Campo As String) As String
Dim longitud As Long
'If IsNumeric(Left(Campo, 4)) Then
Palabra = Campo
'Else
longitud = Len(Campo)
Palabra = Replace(Replace(Mid(Campo, 5, longitud), "-", ""), ".", "")

'End If
End Function

Public Function ConvertirTexto(OriginalText As String) As String

    'Elimina el punto
    Const Str1 = "."
    'Correspondencia
    Const Str2 = " "
    'Carácter a usar
    Const StrElse = ""
 
    Dim i As Integer, NewText As String, c As String * 1
    Dim Pos As Integer
 
    For i = 1 To Len(OriginalText)  'Recorremos el texto recibido
        c = Mid(OriginalText, i, 1) 'carácter a carácter
        Pos = InStr(1, Str1, c)     'Miramos si el carácter está en la primera cadena
        If Pos > 0 Then             'Si es así
            NewText = NewText & Mid(Str2, Pos, 1)   'Añadimos el correspondiente
        ElseIf Asc(c) > 128 Then    'Si no es así, pero el código ANSI es mayor que 128
            NewText = NewText & StrElse         'Añadimos el caracter genérico
        Else
            NewText = NewText & c   'Si es un caracter "normal" lo añadimos tal cual
        End If
    Next
 
    ConvertirTexto = NewText      'Devolvemos la nueva cadena
 
End Function
CacoMarco/Chile
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable