Ordenar campos

Otra vez Soria4.. Tengo un problemilla: Tengo un campo de una tabla en la que figura un nombre y a continuación sus apellidos. ¿Es posible ordenar dicho campo alfabéticamente por el primer apellido?

1 Respuesta

Respuesta
1
En la tabla en la hoja de datos, elige una celda cualquiera de la columna que quieras ordenar, y luego en el menú superior, en registros, pulsa en ordenar ascendente o descendente, según te interese, una vez hecho esto guarda la tabla.
Si tienes más objetos dependientes de esa tabla, todos tienen la misma opción para ordenar, pero en formularios e informes además tienes otras posibilidades que podemos comentar aquí si quieres.
Perdona, pero creo que no me has entendido. El apellido no esta al principio del campo, sino después del nombre (nombre apellido apellido). Si lo hago como tu dices me ordenaría el campo por el nombre. Necesitaría, ordenarlos en formularios e informes unicamente.
Saludos
De acuerdo, por favor hazme el código, le pondré a los nombres una coma entre en nombre propiamente dicho y el primer apellido(nombre, apellido apellido)
Gracias, Feliz Navidad
Pues entonces lo que necesitas no es ordenar sino descomponer.
Necesitas una función en un modulo que te devuelva el primer apellido, esta la puedes hacer origen del control en el formulario informe o incluso consulta que los alimente.
La dificultad es que si el nombre es compuesto en lugar del 1º apellido te devuelve el 2º nombre, para evitarlo habría que pedir que los datos entrasen homogéneos mediante un signo especial, por ejemplo una coma, o cualquier otro método.
Si te interesa que te haga un código dime como vas a poner los datos, o si te interesa como está pues sin problema tampoco
Function Apel1(cadena As String) As String
'ejemplo de cadena: "jose a, soria ruiz"
'( coma seguida de espacio y luego primer apellido, y luego espacio... y luego resto)
Dim n As Integer, m As Integer, o As Integer
n = InStr(1, cadena, ",")
'el apellido empieza en la posición N+1...
'pero en nuestro ejemplo, en la posicion N+2, pues a la coma le sigue un espacio ...
'siendo que el espacio es tambien el fin del primer apellido...
m = InStr(n + 2, cadena, " ")
o = m - n - 2
Apel1 = Mid(cadena, n + 2, o) & "*"
'debes ajustar eso, conforme a tus datos
'... o mejorarlo para que varios espacios seguidos cuenten como uno solo ...
End Function
Tu solución es perfecta, como siempre, pero haría falta meterle dos condicionales, uno para que cuando el campo este en blanco no de error la función y otro para evaluar la cadena cuando solo existe un solo apellido, ¿Me podrías actualizar el código?
Un millón de gracias, y que pases una feliz Noche Buena.
Para campo en blanco, usa NZ.
Para un solo apellido ... no entiendo. (Se pueden poner varios controles de errores en general etc.)
Como el código inicial (anterior) ya me ha costado más de 15 minutos de trabajo, a partir de aquí pongo a tu disposición mis servicios profesionales de soporte y desarrollo, puedes contactarme a través de mi web.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas