Access - Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

   
Vista:

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 01/02/2016 23:30:52
Hola, tengo una base de datos en Access, en la que a diario copio datos de una fuente externa con copiar y pegar. Uno de los campos de esa fuente externa es el Titular que viene con el siguiente formato: APELLIDO APELLIDO, NOMBRE. Necesito que ese campo pase a ser Nombre Apellido Apellido. ¿Alguien sabría como conseguir hacerlo automáticamente? (Aunque sea creando un campo nuevo que contenga dicho formato).
Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de douglas

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por douglas (280 intervenciones) el 01/02/2016 23:55:34
Creas una consulta y agregas un campo nuevo en donde debes agregar lo que te pongo aca y cambiar los campos a como lo tienes tu dentro de tu base cada campo [ ]

Nombre seleccionado : SiInm(EsNulo([Apellidos]);SiInm(EsNulo([Nombre]);[Nombre]);SiInm(EsNulo([Nombre]);[Apellidos];[Nombre] & " " & [Apellidos]))


y luego un campo de texto dentro del formulario le pones lo siguiente dentro del mismo cuadro de texto en modo diseño
=Nz([Nombre seleccionado];"Sin título")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 02/02/2016 00:51:06
Muchas gracias primero que nada, perdona que no sea capaz de entender lo que me indicas:

He creado una consulta nueva. En la que he agregado el campo Titular (que ya existía), y un campo nuevo:
- En campo puse: Expr1: [TitularMejorado:]
- En criterio puse: SiInm(EsNulo([Apellidos]);SiInm(EsNulo([Nombre]);[Nombre]);SiInm(EsNulo([Nombre]);[Apellidos];[Nombre] & " " & [Apellidos]))

Luego he ido al formulario y he creado un campo de texto, poniendo en el mismo cuadro de texto en vista diseño:
=Nz([TitularMejorado];"Sin título"
y no me valió.
Probé con:
=Nz([Expr1: [TitularMejorado:]];"Sin título"
y con:
=Nz([Expr1];"Sin título"
y no me valió en todos los casos me aparece en el cuadro de texto en Vista formulario: #¿Nombre?

Seguramente algo no estoy entendiendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de douglas

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por douglas (280 intervenciones) el 02/02/2016 01:00:45
Ok cada campo nombre apellido es tomado de un campo de la consulta por ejemplo si en tu consulta pones un campo apellido1 apellido2 y Nombre debes adaptarlo a los campos y al orden que lo quieres.
Prueba si no lo logras manana te dejo un ejemplo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Enrique Heliodoro (1663 intervenciones) el 02/02/2016 17:29:09
Normalmente se utilizan funciones de tratamientos de texto, aquí seria necesario en primer lugar obtener la posición de la coma en esa cadena de texto, para ello Access provee de una función (InStr) que nos devuelve en formato numérico la posición del objeto buscado, si no la localiza devuelve un cero.

Pongamos un texto como ejemplo : López Varela, Joaquín

InStr("López Varela, Joaquín", ",")
Nos devolvería el valor 13

Aplicamos otra función de tratamiento de texto (MID) que nos sirve para tomar parte de esa cadena pasada como argumento

Como se deducirá InStr nos indica que a partir de esa (posición +1) esta el nombre, asi que generamos el nuevo nombre (en una consulta por ejemplo)
NuevoNombre: Mid("López Varela, Joaquín", InStr("López Varela, Joaquín", ",")+1 )
(en Nuevo nombre habría esto ' Joaquín')

Añadimos la coma de separación y un espacio:
NuevoNombre: Mid("López Varela, Joaquín", InStr("López Varela, Joaquín", ",")+1 ) & ", "
(en Nuevo nombre habría esto ' Joaquín, ')

Utilizamos ahora otra función de texto (Left) que tomara la parte de la cadena de texto desde el inicio, hasta el final que le indiquemos

Y tomamos los apellidos que 'finalizan' antes de la coma:
NuevoNombre: Mid("López Varela, Joaquín", InStr("López Varela, Joaquín", ",")+1 ) & ", " & Left("López Varela, Joaquín", InStr("López Varela, Joaquín", ",") -1 )
(en Nuevo nombre habría esto ' Joaquín, López Varela')

A mayores, sobraría un espacio al inicio (o los que hubiere en el original después de la coma) asi que otra función (Trim) y se los quitamos:
NuevoNombre: Trim(Mid("López Varela, Joaquín", InStr("López Varela, Joaquín", ",")+1 ) & ", " & Left("López Varela, Joaquín", InStr("López Varela, Joaquín", ",") -1 ))

Normalmente (y mas en una consulta), se trabaja con los campos, asi que en lugar de utilizar un nombre (y además inventado), utilizaremos el objeto que contiene los nombres a modificar (el campo 'TITULAR'):

NuevoNombre: Trim(Mid([Titular], InStr([Titular], ",") +1) & ", " & Left([Titular], InStr([Titular], ",") -1 ))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 02/02/2016 23:35:08
Si se trata de un solo campo que viene relleno de la siguiente forma: APELLIDO APELLIDO, NOMBRE y en el caso de que tenga un nombre compuesto vendría APELLIDO APELLIDO, NOMBRE NOMBRE.
He creado la consulta, pero me salta un mensaje que dice: "La expresión que ha creado tiene una sintaxis no válida".
Adjunto pantallazo con lo que he creado y el mensaje que me sale según pulso enter al terminar de escribir la expresión.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Enrique Heliodoro (1663 intervenciones) el 02/02/2016 23:50:13
El cursor te esta indicando el problema:
En la configuración regional española, se utiliza como 'separador de listas' el punto y coma (;) en lugar de la coma (,) , dado que la coma se utiliza como marcador de los decimales en las expresiones numéricas.

Modifica (donde te lo indique Access ya que se posicionara el cursor en ese punto) la coma por un punto y coma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 03/02/2016 00:14:43
Hola,

He copiado lo siguiente:
1
NuevoNombre: Trim(Mid([Titular], InStr([Titular], ",") +1) & ", " & Left([Titular], InStr([Titular], ",") -1 ))

Luego le he cambiado las , por ; dónde me marcaba el cursor cada vez que salía el error:
1
NuevoNombre: Trim(Mid([Titular]; InStr([Titular]; ",") +1) & ", " & Left([Titular]; InStr([Titular]; ",") -1 ))

Al terminar y pulsar Enter automáticamente se me ha cambiado la expresión por:
1
NuevoNombre: Recortar(Medio([Titular];EnCad([Titular];",")+1) & ", " & Izq.([Titular];EnCad([Titular];",")-1))

y al intentar guardar la consulta me da un error:
Error de sintaxis en la expresión de consulta 'Recortar(Medio([Titular];EnCad([Titular];",")+1) & ", " & Izq.([Titular];EnCad([Titular];",")-1))'

Adjunto PDF con pantallazo.

Gracias y saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Enrique Heliodoro (1663 intervenciones) el 03/02/2016 09:09:07
Lo primero:
La 'traducción' al castellano de los comandos (Trim ==> Recortar ...) es correcta y automática es un síntoma claro de que entiende la expresión, ahora bien el punto que aparece tras lo que en principio era 'Left' que debería ser traducido como 'Izq' y que aparece como 'Izq.' es el actual problema.

Quizás en alguna línea (en la que no exista la coma que se utiliza como referencia) de error, como se desconoce la funcionalidad del cambio (si es temporal o si es definitivo) y a la espera de mas datos aclaratorios, sus alternativas quedan en suspenso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 03/02/2016 12:43:30
Muchas gracias sois unos Cracks. Solucionado, cambié el punto por el símbolo $ y ya me funciona.
En la misma fórmula podría añadir:

1) ¿Podría hacer que las primeras letras de cada palabra fuesen en mayúcula y el resto de letras de cada palabra en minúculas?

2) Algunos Titulares son Nombre de Sociedad: ¿Podría poner una condición en la que cuando haya un punto ( . ) dentro del campo simplemente copie el nombre tal y como está en el campo Titular al nuevo campo?

He intentado valorar con un 10, pero solo me deja valorar con un 1, soy nuevo en el chat ¿no puedo aumentar la votación?

Gracias y saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Enrique Heliodoro (1663 intervenciones) el 03/02/2016 13:36:50
Mucho le solicitas a un entorno que es muy simple (me refiero al generador de consultas).

Normalmente estas cosas lo suelo hacer mediante VBA, que permite muchas combinaciones, aquí solo es aconsejable hacerlas de una en una y no siempre se logra en un único paso.

Por ejemplo, el que la primera letra aparezca en mayúsculas y el resto en minúsculas, se puede lograr mediante otra función de Access (StrConv) que utiliza dos parámetros (datos), uno es el texto y otro el tipo de modificación deseada (un valor numérico) que devuelve todo el texto a mayúsculas, todo a minúsculas o la combinación mayúsculas/minúsculas (en la ayuda de Access puedes leer sobre su aplicación y peculiaridades).

Al respecto del punto ... se puede complicar la expreson, el generador de consultas admite la función IIF (emulación del clásico If .. Then .. Else), pero aumentar las combinaciones con los datos exigen ser muy puntillosos con la sintaxis (y desconozco aun ahora porque se sustituyo el punto por el símbolo del dólar, cuando con borrar el punto era mas que suficiente, el dólar solo 'le dice' a Access que se desea una cadena de texto...)

Nada impide estudiar mas alternativas, tales como verificar (filtrar) la existencia de ese punto y si no existe aplicar lo que ya funciona, tras ello (y en una nueva consulta) copiar el literal a los campos con punto, pero todo esto dependerá de la supuesta 'vida útil' de esos datos (de momento y según lo expuesto las modificaciones son temporales, se pierden al cerrar la consulta).

La puntuación ... un diez es que te funcione (menos un punto porque creo que no activaste el botón curiosidad y no acudiste a la ayuda para conocer lo que se menciona), personalmente creo que una respuesta bien intencionada (aunque no sea la optima) también se merece un diez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de douglas

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por douglas (280 intervenciones) el 04/02/2016 00:28:31
Bueno para responder a la pregunta 1 cambiar la primera letra como tal no se podría a no ser por un comando de visual basic

Pero puedes hacer algo simple cambiarlas todas a mayúsculas

te vas a la base de datos en modo de diseño
Seleccionas el campo que tiene el dato que deseas cambiar

te vas a general y en formato pones

">"


Guardas y listo tienes tu base en esa columna convertida a mayúsculas

La Pregunta dos no la comprendo muy bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de douglas

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por douglas (280 intervenciones) el 04/02/2016 00:49:29
Otra podrias crear un campo de texto en el formulario y dentro de ese campo pones


=ConvCadena([Campo a convertir];3)

Tomara tu campo aa

y lo convertira en Aa

saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de douglas

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por douglas (280 intervenciones) el 02/02/2016 18:02:04
Te dejo adjunto el ejemplo de lo que explico y si es en el mismo campo debes hacer lo que te recomienda Enrique

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 03/02/2016 22:49:02
Gracias Douglas y Enrique,
Lo conseguí poniendo en la consulta un campo nuevo con la siguiente fórmula:
NuevoNombre: Recortar(Medio([Titular];EnCad([Titular];",")+1) & " " & Izq$([Titular];EnCad([Titular];",")-1))

Después de Izq tuve que poner $ porque según he leído en la red Windows 2007 tiene un defecto y no me valía ni con el punto, ni eliminando el punto. Con el $ si me funciona.

Voy a probar a ver si consigo poner letra capital a las palabras del campo con StrConv.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Enrique Heliodoro (1663 intervenciones) el 04/02/2016 00:02:19
Que un sistema operativo tal como el Windows 2007 tenga algún problema no es nada extraño, debe de ser una serie muy corta (me atrevería a decir que experimental).

Con Windows 7 y Access 2010, esta sintaxis (copiada textualmente) no da ese problema:

zz: Medio([descripcion];EnCad([descripcion];".")+1) & ", " & Izq([descripcion];EnCad([descripcion];".")-1)

esa misma expresión (ya aceptada por el motor de Access) la utiliza en su vista SQL asi:
... Mid([descripcion],InStr([descripcion],".")+1) & ", " & Left([descripcion],InStr([descripcion],".")-1) AS zz .....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access pasar un Campo APELLIDO APELLIDO, NOMBRE a Campo Nombre Apellido Apellido

Publicado por Juan (11 intervenciones) el 04/02/2016 00:35:02
Perdón me equivoqué, ponía que era un problema de Acceso 2007.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar