Colaboraci�n de Harvey Triana (1)

Rutina para convertir una cadena en formato t�tulo

Lo que nos dice el autor sobre esta rutina:

Funci�n para Convertir Sartas Simples a Titulos
===================================
Hace un par de a�os programe una base de datos en Access Basic.
Me molestaba que los usuarios no usaran may�sculas en los campos que estaban destinados para t�tulos o nombres propios.
P.e. el titulo � Gerencia de Producci�n � lo escrib�an como � gerencia de producci�n � .
Pues bien, escrib� la funci�n SpanishTitle, la cual convierte cualquier variable en una cadena tipo titulo :

Por ejemplo :

x = SpanishTitle("esto es un titulo")

Retorna :

"Esto es un Titulo"

Uso la funci�n en los eventos AfterUpdate de los campos respectivos.
En los programas de Visual Basic que emplean el motor de base de datos Access se puede usar en el evento Validate del Data Control.

DefInt A-Z
Public Function SpanishTitle(ByVal x As Variant) As Variant

    Const Void = "", SP = " ", IL= "|"
    
    Static LockWords As String

    Dim Str As String, Word As String, Change, Ptr

    If IsNull(x) Then
       SpanishTitle = Null
       Exit Function
    End If

    If LockWords = Void Then
       LockWords = "a|ante|bajo|con|contra|de|desde|hasta|para|por|segun|sin|sobre|tras|y|al|la|el|en|del|los|las|que|es|"
    End If

    x = LTrim$(RTrim$(CStr(x)))
    Do
      'Get Word:
       Ptr = InStr(x, SP)
       If Ptr Then
          Word = RTrim$(Left$(x, Ptr))
          x = LTrim$(Mid$(x, Ptr))
       Else
          Word = x
       End If
      
      'Change Word
       Change = True
       If Not Str = Void Then
          If InStr(LockWords, Word + IL) Then
             Change = False
          End If
       End If
       If Change Then
          Word = UCase$(Left$(Word, 1)) + Mid$(Word, 2)
       End If
       Str = Str + Word + IIf(Ptr, SP, Void)
       
    Loop Until Ptr = 0

    SpanishTitle = Str

   'Programmed by Harvey Triana �
End Function