Página 1 de 1

Office Template de Softmaster - Pasar campo MEMO a WORD

Publicado: Mié Jun 23, 2021 4:41 pm
por CWeidl
Hola a todos, espero estén todos muy bien.
Quería consultar, si alguien sabe, como pasar el contenido de un campo Memo a Word, utilizando el Office Template de Softmaster.

Situación:
LOC:TEMA - Variable donde tengo el texto a buscar dentro del Word (#TEMA1#)
Y# - Contador que incrementa el Nº en el texto a buscar dentro del Word
SETCLIPBOARD() - Copiar en el portapapeles el contenido del campo Memo
CLIPBOARD() - Pegar el contenido del portapapeles en el Word

Lo que hice (y no funciono, no reemplaza el texto por el contenido del portapapeles, los campos string, date y long los reemplaza sin problemas) es :

LOC:TEMA = CLIP('#TEMA') & CLIP(y#) & CLIP('#')
SETCLIPBOARD(CLIP(CAMPO:MEMO))
MsWord1.Replace(LOC:TEMA,CLIP(CLIPBOARD()),False,False)


Obviamente algo no le gusto.
Por favor, si alguien sabe o se encontró con la misma situación y lo pudo resolver, agradecería muchísimo una ayuda.
Muchas gracias a todos. Saludos.

Carlos Weidl
cweidl@magyp.gob.ar
carlosweidl@hotmail.com

Re: Office Template de Softmaster - Pasar campo MEMO a WORD

Publicado: Vie Jun 25, 2021 3:54 am
por Mauricio
Dos preguntas: 1) para qué copiás y pegás el contenido del memo en el clipboard? No es lo mismo usar el memo en la función para remplazar?
1) Y si no funciona, probaste pasando el contenido del memo a una variable tipo cstring(64000) o algo así?

Re: Office Template de Softmaster - Pasar campo MEMO a WORD

Publicado: Vie Jun 25, 2021 2:30 pm
por CWeidl
Hola Mauricio, gracias por la respuesta.
Te comento :
1) Intente pasar directamente el Memo y no me lo reemplazaba. Por lo que pensé que era un tema del template con los campos Memo. Por eso lo segundo que se me ocurrio fue hacerlo con el portapapeles.
2) Pasarlo a una variable cstring no lo probe. Apenas lei tu respuesta lo probe, pero me seguia sin reemplazar el texto.

Ahora, después de chequear nuevamente. Parece que el problema esta en el código.
Por lo que veo no me reconoce la variable donde tengo el texto a reemplazar (#TEXTO1#, #TEXTO2#, #TEXTO3#, etc.)

LOC:TEMA = CLIP('#TEMA') & CLIP(y#) & CLIP('#')

Y# es un contador que se incrementa a medida que voy leyendo registros.
Al leer el primer registro y# = 1, lee el segundo y# = 2, y asi hasta completar.

L:TEMA = CLIP(Campo:Memo) ! L:TEMA variable CString
MsWord1.Replace(LOC:TEMA,L:TEMA,False,False)

Te adjunto imagen, de un lado tenes el Word y del otro lado el dbg, y ahí veo que lee bien el contenido de LOC:TEMA que seria #TEMA1#, #TEMA2#, #TEMA3#, etc.

Lo raro que en esta línea LOC:REMITENTE lo encuentra y reemplaza sin problemas :

LOC:REMITENTE = CLIP('#REMITENTE') & CLIP(y#) & CLIP('#')
L:REMITENTE = CLIP(DES:REMITENTE) & CLIP(' - ') & CLIP(DES:FIRMA) & CLIP(' - ') & CLIP(DES:CARGO_OR) & CLIP(' - ') & CLIP(DES:COD_NUM)
MsWord1.Replace(LOC:REMITENTE,CLIP(L:REMITENTE),False,False)

No logro ver donde puede estar el error.
Cualquier sugerencia será muy bien recibida !!!
Abrazos y muchisimas gracias por tu tiempo.

Carlos Weidl

Re: Office Template de Softmaster - Pasar campo MEMO a WORD

Publicado: Vie Jun 25, 2021 3:46 pm
por CWeidl
Hice otra prueba con IF y sin el texto a reemplazar dentro de una variable :

L:TEMA = CLIP(DES:NOTA)
IF y# = 1
MsWord1.Replace('#TEMA1#',L:TEMA,False,False)
ELSIF y# = 2
MsWord1.Replace('#TEMA2#',L:TEMA,False,False)
ELSIF y# = 3
MsWord1.Replace('#TEMA3#',L:TEMA,False,False)


Solo me reemplaza las opciones con texto corto. Aquellas con un texto largo no me lo reemplaza.
:(

Re: Office Template de Softmaster - Pasar campo MEMO a WORD

Publicado: Vie Jun 25, 2021 5:37 pm
por Mauricio
Con qué versión de Clarion estás trabajando?

Re: Office Template de Softmaster - Pasar campo MEMO a WORD

Publicado: Vie Jun 25, 2021 5:55 pm
por CWeidl
Clarion 6.3