¿Cómo poner la primer letra en mayúscula en un informe access?

Tengo un informe en el que se muestra el nombre completo del cliente, pero como esta registrado todo en mayúscula así me lo muestra, lo que he investigado no me ha funcionado y lo que deseo es que la primer letra del nombre y de los apellidos se muestre em mayúscula

El campo del informe que muestra el nombre completo lo he llamado nom_completo y lo he intentado con los siguientes ejemplos pero no sucede nada:

Mayús (Medio([nom_completo], 1, 1)) & Minús(Medio([nom_completo], 2, Longitud([nom_completo])))

Mayús (Izq([nom_completo], 1)) & Der([nom_completo], Longitud([nom_completo]) - 1)

Actualmente se muestra: JUAN PEREZ PEREZ

Y lo que deseo es que se muestre es : Juan Perez Perez

Agradezco el tiempo al leer mi consulta y si me pueden ayudar seria genial.

3 Respuestas

Respuesta
2

Como mínimo vamos a intentarlo:

En un Módulo de Código Estandar, copia y Pega éste código

Public Function NombrePropio(ByVal Texto As String) As String
'Pone en Mayúscula la Primera letra del Nombre, Apellido1, ....... ect.
Dim Cadenas() As String
Dim I As Long
Dim StrPalabra As String
Cadenas = Split(Texto)
For I = 0 To UBound(Cadenas)
        StrPalabra = Cadenas(I)
        StrPalabra = UCase(Left(StrPalabra, 1)) & LCase(Mid(StrPalabra, 2))
        If I > 0 Then
                If Len(StrPalabra) < 3 Then  'Si la longitud de la Palabra es menor que 3 la pone en Minusculas
                        StrPalabra = LCase(StrPalabra)
                Else
                         Select Case StrPalabra
                                   Case "Del", "Las", "Los", "Con" 'Tambien la pone en Minusculas en estos casos
                                         StrPalabra = LCase(StrPalabra)
                          End Select
                End If
          End If
          Cadenas(I) = StrPalabra
Next I
NombrePropio = Join(Cadenas)
End Function   'NombrePropio(ByVal Texto As String) As String

Al tratarse de un Informe, la llamada a ésta Función la has de hacer desde el Evento Al dar Formato de la Sección correspondiente.

Voy a suponer que tienes un listado de Personas, con lo que ese Nom_Completo estará en el detalle.

Si eso es así señala en vista de diseño del Informe esa sección.

Busca en Propiedades la pestaña Eventos y verás entre otros >> Al dar Formato.

Pulsa sobre los tres puntos que hay a la derecha y te saldrá un Menú emergente con tres posiciones > Marca "Generador de Código" y al aceptar se te abrirá el Editor de VBA con éstas líneas >>

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)

End Sub

Entre ellas le pones una línea con>>

Me.Nomb_Completo = NombrePropio(Me.Nomb_Completo)

Ya me comentarás. Un saludo >> Jacinto

Al no saber como tienes tu distribución he pensado que puedas tener problemas de que el control no admita Cambios.

Si fuera así, lo pones oculto. Propiedas visible = No.

Pones otro control "Sin Origen de datos" y le llamas por ejemplo >> NComplMayusMinus

La línea de arriba >> Me.Nomb_Completo = NombrePropio(Me.Nomb_Completo) la sustituyes por:

Me.NComplMayusMinus = NombrePropio(Me.Nomb_Completo)

Un saludo >> Jacinto

Respuesta
2

En el diseño del informe pon

Function prima(cad)
Dim cadtemp As String
cadtemp = Trim(cad)
prima = UCase(Left(cadtemp, 1)) & Mid(cadtemp, 2)
End Function

Y en las propiedades de la sección donde esté el cuadro de texto, al que llamaré NombreCompañia, en el evento Al dar formato pon

If Not (IsNull(Me!NombreCompañía)) Then
Me!NombreCompañía = prima((Me!NombreCompañía))
End If

Respuesta
1

Muy sencillo en el evento al dar formato para el respectivo campo coloca:

StrConv(Me. Nombrecampo", vbProperCase)

Eso es todo.

Corrijo sobran las comillas ". También puede hacer la conversión en la consulta origen del informe. Por ejemplo si el campo contiene el nombre EDUARDO PÉREZ FERNÁNDEZ

StrConv("EDUARDO PÉREZ FERNÁNDEZ", vbProperCase) E resultado será:

Eduardo Pérez Fernández.

Gracias por tu respuesta

Coloque tu código en el evento al dar formato del detalle del informe que es donde esta el texto que deseo convertir, pero no hace nada me continua mostrando todo el nombre completo en mayúscula.

Lo intente poner en la consulta de la siguiente forma :

Expr1: StrConv(Me.nom_Funcionario, vbProperCase), pero el primer error que da es cambiar la coma por punto y coma

Luego me pide que introzca el valor del parametro:

Efectivamente si trabajas desde la consulta tienes que cambiar la sintaxis. Te he preparado este ejemplo.

Ahora creamos una consulta con base en esta tabla:

Observa como el parámetro es 3 es el equivalente en código a vbProperCase. Y este sería el resultado al ejecutar la consulta:

En este caso en el informe tienes que hacer referencia al campo "Funcionario". Debes tener en cuenta que cuando trabajes con código VBA se debe hacer referencia es al nombre de la función en inglés, esto es StrConv(nombre, vbProperCase). Personalmente te recomiendo hacerlo desde la consulta y no en el evento al dar formato del informe y no hay necesidad de enredarte con funciones adicionales, "para que inventar la rueda si ya está inventada".

¡Gracias! Ya me funciono

Me alegro que bien

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas