¿Cómo eliminar espacios en blanco en un textbox con campos concatenados?
Estoy concatenando varios campos, depende del grado cursado, pero si me salto del 1° de sec al 3° de sec, dejando en blanco el 2° de sec, me deja doble espacio. Gracias "Rojo".
1 respuesta

Utiliza la función Replace() para pasar los espacios dobles a espacios sencillos, algo así:
=Replace(Nz([EL-LA],"")+" "+Nz([Cursadoen1sec],"")+" " +... , " "," ")
Para eliminar los espacios al inicio, usa Trim() o LTrim():
=Trim(Nz([EL-LA],"")+" "+Nz([Cursadoen1sec],"")+" " +...)

Ya casi está, pero me gustaría combinar trim con replace. Ya se eliminan los espacios iniciales y finales pero no los intermedios

Con replace tienes 3 argumentos: la cadena en la que vas a hacer los cambios, lo que buscas cambiar (te lo pongo en negrita, sería: " " ->comillas -dos espacios-comillas) y por lo que quieres cambiarlo (te lo pongo en cursiva, sería: " " -> comillas-espacio-comillas):
=Replace(Nz([EL-LA],"")+" "+Nz([Cursadoen1sec],"")+" " +... ," " ," ")

Me.TxtAuxEsc = Replace(([EL-LA]) + " " + Nz([Cursado en 6°]) + " " + Nz([Cursadoen1Sec]) + " " + Nz([ConcaEsc1]) + " " + Nz([Cursado2Sec]) + Nz([ConcaEsc2]) + " " + Nz([Cursadoen3Sec]), " ", "")
Te comento, que algunos alumnos estudian en escuelas diferentes durante sus tres años de secundaria. Es por eso, que dejo espacios entre un grado y el otro, porque puede ir el nombre de una sola escuela o concatenar varios nombres de escuela. Si es una sola escuela, me deja los espacios en blanco de las concatenaciones para las otras escuelas. Así, que puedo tener espacios sencillos, dobles o triples. Espero me hayas entendido.

Por lo que veo, le estás diciendo que te reemplace los espacios sencillos por ningún espacio. Tienes que decirle que que cabie los dos espacios por un espacio, así:
Me.TxtAuxEsc = Replace(([EL-LA]) + " " + Nz([Cursado en 6°]) + " " + Nz([Cursadoen1Sec]) + " " + Nz([ConcaEsc1]) + " " + Nz([Cursado2Sec]) + Nz([ConcaEsc2]) + " " + Nz([Cursadoen3Sec]), " ", " ")

EN CENTRAL MIDDLE SCHOOL , ya lo corregí, y aún me deja doble espacio en la palabra "EN", y el nombre de la escuela, que corresponde al octavo grado(2° de sec)

Ya le corregí, ahora sólo me deja espacio con los de noveno(3° de secundaria)" EN EL INSTITUTO TÉCNICO SALESIANO".

Ya noté que si agrego más espacios en la sintaxis del "Replace", ..."Find as String"... corrijo noveno(3° sec), pero los primeros se vuelven abrir:
Me.TxtAuxEsc = Replace(([EL-LA]) + " " + Nz([Cursado en 6°], " ") + " " + Nz([Cursadoen1Sec], " ") + " " + Nz([ConcaEsc1]) + " " + Nz([Cursado2Sec], " ") + Nz([ConcaEsc2], " ") + " " + Nz([Cursadoen3Sec]), " ", " ")

Cuando uses Nz() no dejes un espacio, pon sólo las dos comillas:
Me.TxtAuxEsc = Replace(([EL-LA]) + " " + Nz([Cursado en 6°], "") + " " + Nz([Cursadoen1Sec], "") + " " + Nz([ConcaEsc1]) + " " + Nz([Cursado2Sec], "") + Nz([ConcaEsc2], "") + " " + Nz([Cursadoen3Sec]), " ", " ")
Otra alternativa que puedes probar es encadenar sólo si existe valor, con la función IIF(), algo así (consulta la sintaxis de esa función en la ayuda):
Me.TxtAuxEsc = ([EL-LA]) + IIF(Nz([Cursado en 6°], "")="",""," " & [Cursado en 6°]) + IIF(Nz([Cursadoen1Sec], "")="",""," " & [Cursadoen1Sec]) + IIF(Nz([ConcaEsc1], "")="",""," " & [ConcaEsc1]) + IIF(Nz([Cursado2Sec], "")="",""," " & [Cursado2Sec]) + IIF(Nz([ConcaEsc2], "")="",""," " & [ConcaEsc2]) + IIF(Nz([Cursadoen3Sec], "")="",""," " & [Cursadoen3Sec])

Síííííí´....ya quedó.
...IIf(Nz([Cursado en 6°],"") = "", "", " " & [Cursado en 6°])...Entiendo la expresión, la True part, pero la False part???...Si cursado en 6°, está vacío, no pongas "espacio". El "&" concatena textos, ¿si hay espacio...concatena Cursado en 6°? Como ya te habías dado cuenta, soy malísimo para programar, pero me voy a esforzar. Por lo pronto, recibe mi admiración por tu conocimiento y sobretodo por la paciencia con la que me estuvíste apoyando. Por mi parte cierro la consulta.
- Compartir respuesta
