Access - Concatenar texto en consulta

 
Vista:

Concatenar texto en consulta

Publicado por Allan (4 intervenciones) el 02/06/2017 13:07:55
Buenas,
Soy nuevo en Access y por eso pido ayuda por aquí.

Tengo un formulario basado en una consulta donde puedo seleccionar datos de un checklist, y me gustaría que el resultado de este checklist me saliera en un campo texto con saltos de líneas, pero sin espacios, ya que aveces los seleccionados pueden estar seguidos y otras veces no. Os pongo el ejemplo:

De las opciones, tengo: Carga física dinámica, Carga visual, Carga vocal, Manipulación de cargas, Posturas forzadas, Posturas estáticas.

Entonces, me gustaría que el resultado de la selección saliera siempre con saltos de línea y quitando vacíos. En plan:

Carga física dinámica
Manipulación de cargas
Posturas forzadas



Tengo la consulta así:
ERGONOMICS: SiInm(EsNulo([CARFISFIM]); Car(13); [CARFISFIM] & Car(10)) & SiInm(EsNulo([CARVIS]); Car(13) & Car(10); Car(13) & [CARVIS] & Car(10)) & SiInm(EsNulo([CARVOC]); Car(13) & Car(10); Car(13) & [CARVOC] & Car(10)) & SiInm(EsNulo([MMC]); Car(13) & Car(10); Car(13) & [MMC] & Car(10)) & SiInm(EsNulo([MMRR]); Car(13) & Car(10); Car(13) & [MMRR] & Car(10)) & SiInm(EsNulo([PVD]); Car(13) & Car(10); Car(13) & [PVD] & Car(10)) & SiInm(EsNulo([PEA]); Car(13) & Car(10); Car(13) & [PEA] & Car(10)) & SiInm(EsNulo([PPFF]); Car(13) & Car(10);[PPFF])


Y algunas me salen con doble salto y otras sin salto de línea.

Me podríais ayudar, porfa?

Muchas gracias!
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

Concatenar texto en consulta

Publicado por Anonimo (3322 intervenciones) el 03/06/2017 00:58:34
En Access el salto de línea ha de ir 'acompañado' de un retorno de carro, solo los interpreta como conjunto, incluso tiene un nemotécnico que los agrupa (al menos lo interpreta bien en VBA, fuera de el ... depende donde se aplique) el nemotécnico es: VbCrLf

Son una serie de condicionales concatenados, lo correcto seria algo como:
Original
ERGONOMICS: SiInm(EsNulo([CARFISFIM]); Car(13); [CARFISFIM] & Car(10)) & SiInm(EsNulo([CARVIS .....

Lo idóneo
ERGONOMICS: SiInm(EsNulo([CARFISFIM]); ""; [CARFISFIM] & Car(13) & Car(10)) & SiInm(EsNulo([CARVIS .....
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

Concatenar texto en consulta

Publicado por Allan (4 intervenciones) el 06/06/2017 09:24:03
Hola,
Muchas gracias por tu ayuda, pero no es como quiero que me funcione...
Con tu fórmula, si no selecciono las opciones seguidas, me queda:
Carga física dinámica

Carga vocal

Posturas forzadas

Con los saltos de línea si está vacío, y lo que quiero es que aunque no seleccione seguido, en el resultado me aparezca seguido. No sé si me he explicado bien, pero sería una cosa así:
Carga física dinámica
Carga vocal
Posturas forzadas

Un saludo!
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

Concatenar texto en consulta

Publicado por Anonimo (3322 intervenciones) el 07/06/2017 04:11:44
Lamento que no te funcione, verificado en la ventana de inmediato los resultados obtenidos son estos:

CARFISFIM= "abcd"
CARVIS= NULL
CARVOC= 33
?IIF(IsNull(CARFISFIM),"", CARFISFIM & chr(13) & chr(10)) & IIF(IsNull(CARVIS),"", CARVIS & chr(13) & chr(10)) & IIF(IsNull(CARVOC),"", CARVOC & chr(13) & chr(10))
abcd
33



CARFISFIM= "abcd"
CARVIS= "Me asomo"
CARVOC= 33
?IIF(IsNull(CARFISFIM),"", CARFISFIM & chr(13) & chr(10)) & IIF(IsNull(CARVIS),"", CARVIS & chr(13) & chr(10)) & IIF(IsNull(CARVOC),"", CARVOC & chr(13) & chr(10))
abcd
Me asomo
33



CARFISFIM= null
CARVIS= "Me asomo"
CARVOC= 33
?IIF(IsNull(CARFISFIM),"", CARFISFIM & chr(13) & chr(10)) & IIF(IsNull(CARVIS),"", CARVIS & chr(13) & chr(10)) & IIF(IsNull(CARVOC),"", CARVOC & chr(13) & chr(10))
Me asomo
33



Nota: deberías verificar que si lo que se considera NULL es su valor real, pues NULL es un dato de vida breve, (normalmente cuando se le asigna un valor si este se borra el supuesto NULL es en realidad una cadena vacia ("")

La función NZ resuelve esa dualidad...

IIF(IsNull(CARFISFIM) ===> IIF(Nz(CARFISFIM, "")= "", .......
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

Concatenar texto en consulta

Publicado por Allan (4 intervenciones) el 07/06/2017 09:23:55
Ahora sí me ha funcionado!!!

Muchas 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