** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Convertir campo de texto a "Tipo oración de Word"
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConvertir campo de texto a "Tipo oración de Word"

 Responder Responder
Autor
Mensaje
mdominguez Ver desplegable
Habitual
Habitual
Avatar

Unido: 25/Junio/2010
Localización: España
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Tema: Convertir campo de texto a "Tipo oración de Word"
    Enviado: 11/Mayo/2017 a las 13:48


Buenos días:

Tengo un pequeños problemas.

En una Tabla tengo el campo nombre cuya información se almacena en Mayúscula.

ahora me piden que cuando combine la correspondencia en lugar de

D. PEPE PÉREZ PÉREZ, figure como D. Pepe Pérez Pérez.

Estoy buscando alguna función para ello y no la encuentro.

he encontradio StrConv pero no se como usarla.

Gracias.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3293
Enlace directo a este mensaje Enviado: 11/Mayo/2017 a las 14:34
Hola.
Una pregunta.
La combinación de correspondencia es en access o como insinúa el título es en word.
Ya comentas.
Un saludo a todos
Arriba
mdominguez Ver desplegable
Habitual
Habitual
Avatar

Unido: 25/Junio/2010
Localización: España
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 11/Mayo/2017 a las 14:50
Muy buenas:

es de Access.

Gracias.
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5397
Enlace directo a este mensaje Enviado: 11/Mayo/2017 a las 14:55
Hola buenas tardes a todos.

Usa la ayuda de Access para esta función: 

StrConv (Función)


Ya nos cuentas.

Saludos.
Gracias
Arriba
mdominguez Ver desplegable
Habitual
Habitual
Avatar

Unido: 25/Junio/2010
Localización: España
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 11/Mayo/2017 a las 15:12
Muchas Gracias.

Copio el código de prueba aquí

Dim miVariable As String
miVariable = "PEPE PEREZ ROPERO CASA MUEBLE"

Dim eNtitulares

eNtitulares = StrConv(miVariable, vbProperCase)
MsgBox eNtitulares

Gracias.
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Binghamton NY.
Estado: Sin conexión
Puntos: 3469
Enlace directo a este mensaje Enviado: 11/Mayo/2017 a las 19:38
Hola mdominguez:

¿Quiere decir eso que te ha servido la solución propuesta y podemos cerrar el tema?

Un saludo

Luis
El Búho es mi ídolo caido
Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5397
Enlace directo a este mensaje Enviado: 11/Mayo/2017 a las 21:53
Hola de nuevo.

Yo suelo usar muchísimo nombres y apellidos.

Normalmente no me preocupo de ir Mayúsculas/minúsculas.

Quiero decir que en un control escribo todo en minúsculas y al terminar (después de actualizar) tengo, en ese evento, esto:

Private Sub Texto13_AfterUpdate()
Me.Texto13 = StrConv(Me.Texto13, vbProperCase)
End Sub

Así se que no me equivoco en la forma de poner el nombre y los dos apellidos, pues siempre estarán en mayúsculas la primera de cada palabra y el resto en minúsculas.

Si lo que pretendes es que algo que ya tienes en un campo concreto "PEPE PEREZ PEREZOSO" o "PEPe pEREZ pErEzOsO" te lo transforme todo de una tacada, deberás hacer una consulta de actualización con ese campo haciendo lo mismo que yo he puesto. Bueno, cuando digo lo mismo yo he puesto, quiero decir que con lo que yo he puesto, sigas las indicaciones que te ofrece la "consulta que has de usar". Recuerda consulta de actualización.

Con un consejo previo: Haz una copia de la tabla que te ocupa, así siempre podrás recuperar el original si en las modificaciones no consigues el objetivo a la primera.
Saludos.


Editado por VIMIPAS - 11/Mayo/2017 a las 21:55
Gracias
Arriba
mdominguez Ver desplegable
Habitual
Habitual
Avatar

Unido: 25/Junio/2010
Localización: España
Estado: Sin conexión
Puntos: 97
Enlace directo a este mensaje Enviado: 12/Mayo/2017 a las 10:47
Muchas Gracias.

lo pongo en práctica
Arriba
fcoval Ver desplegable
Habitual
Habitual


Unido: 19/Enero/2013
Estado: en línea
Puntos: 150
Enlace directo a este mensaje Enviado: 12/Mayo/2017 a las 11:17
VIMIPAS,
Como bien dices, usando StrConv con vbProperCase se consigue obtener la primera letra en mayúscula.

Pero si tenemos un apellido compuesto se nos puede quedar corto el uso de StrConv

Pongo un ejemplo... y la función por si fuera de vuestro interés

Sub TEST()

Debug.Print StrConv("juan-CARlos I reY de l'españa i borbón", vbProperCase)
'Resultado: Juan-carlos I Rey De L'españa I Borbón

Debug.Print GetProperName("juan-CARlos I reY de l'españa i borbón")
'Resultado: Juan-Carlos I Rey De L'España I Borbón

End Sub


Function GetProperName(ByVal TextToConvert As String) As String

Dim aSeparatorStrings() As String
Dim aSeparatorChar() As String
Dim aSeparatorsPos() As String
Dim aWords() As String

Dim sSeparators As String
Dim sTempChar As String
Dim sTempResult As String
Dim I As Integer
Dim S As Integer
Dim sSeparatorsPos As String
Dim iNBSeparators As Integer
Dim sLastChar As String

On Error GoTo L_ErrConversion

'caracteres que queremos controlar ...
sSeparators = "| |;|:|-|~|@|_|&|*|#|'| "

aSeparatorStrings = Split(sSeparators, "|")
For I = 1 To Len(TextToConvert)
    sTempChar = Mid(TextToConvert, I, 1)
      For S = LBound(aSeparatorStrings) To UBound(aSeparatorStrings)
        If sTempChar = aSeparatorStrings(S) Then
          iNBSeparators = iNBSeparators + 1
          ReDim Preserve aSeparatorChar(0 To iNBSeparators)
          aSeparatorChar(iNBSeparators - 1) = sTempChar
          sSeparatorsPos = sSeparatorsPos + Trim(Str(I)) & ";"
          Exit For
        End If
      Next
Next

If iNBSeparators = 0 Then
    sTempResult = UCase(Left(TextToConvert, 1)) & LCase(Mid(TextToConvert, 2))
Else
    sSeparatorsPos = IIf(Right(sSeparatorsPos, 1) = ";", Left(sSeparatorsPos, _
     Len(sSeparatorsPos) - 1), sSeparatorsPos)
    sSeparatorsPos = "1;" & sSeparatorsPos & ";" & Trim(Str(Len(TextToConvert)))
    I = 0: S = 0
    aSeparatorsPos = Split(sSeparatorsPos, ";")
    ReDim aWords(1 To iNBSeparators + 1)

    For I = 1 To iNBSeparators + 1
      sLastChar = IIf(I = (iNBSeparators + 1), vbNullString, aSeparatorChar(I - 1))
      If I = 1 Then
        aWords(I) = UCase(Mid(TextToConvert, 1, 1)) & LCase(Mid(TextToConvert, _
    2, aSeparatorsPos(I) - 2)) & sLastChar
      Else
        S = IIf(I = (iNBSeparators + 1), 1, 2)
        aWords(I) = UCase(Mid(TextToConvert, aSeparatorsPos(I - 1) + 1, 1)) & _
   LCase(Mid(TextToConvert, aSeparatorsPos(I - 1) + 2, aSeparatorsPos(I) - _
   aSeparatorsPos(I - 1) - S)) & sLastChar
      End If
    Next
    For I = 1 To iNBSeparators + 1
      sTempResult = sTempResult & aWords(I)
    Next
End If

L_ExConversion:
GetProperName = sTempResult
Erase aSeparatorStrings
Erase aSeparatorChar
Erase aSeparatorsPos
Exit Function

L_ErrConversion:
MsgBox "error durante la conversión...", 48, "error"
sTempResult = TextToConvert
Resume L_ExConversion

End Function
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable