Sustituir variables por valores de un campo


([N4] Ramon Denuc) #1

Hola Foro,

Tengo hecho una caja de texto enriquecido en el cual los usuarios puedan confeccionar modelos de justificantes de visitas. Ejemplo:

Solicitado por D/Dª. %NOMBREACOMPAÑANTE% con el DNI %DNIACOMPAÑANTE%, como acompañante del paciente D. %NOMBREPACIENTE% con el DNI %DNIPACIENTE%, y que según consta en nuestra base de datos, tenía una visita en esta Clínica Dental a las %HORAVISITA% horas del dia %FECHAVISITA%.

Lo que no he conseguido es hacer que aquellas palabras que están entre el signo % se sustituyan por el valor de un campo.

Alguna idea por favor de como puedo hacer alguna función que sustituya y devuelva el texto legible.

Saludos


([N3] pacosatu) #2

Hola Ramón.

Explícate bien porque no llego a entender lo que quieres.

¿Te refieres al uso de la función replaceString()?

Saludos
Paco Satué


([N4] Ramon Denuc) #3

Hola Paco,

Una de las pocas que tengo claro es que para sustituir palabras, signos, etc, tengo que utilizar la función replaceString().

Lo que no tengo claro es como hacer una función que pasando le toda la parrafada que en mi primera entrada he realizado, me devuelva un texto legible. Ejemplo:

La idea es que como parámetro de una función yo le pasaría todo el siguiente texto:

Solicitado por D/Dª. %NOMBREACOMPAÑANTE% con el DNI %DNIACOMPAÑANTE%, como acompañante del paciente D. %NOMBREPACIENTE% …

Y la función me debería devolver el siguiente texto:

Solicitado por D/Dª. RAMON DENUC con el DNI 003542165K, como acompañante del paciente D. MANOLITO GAFOTAS …

Lo que pretendo es que la función busque en una tabla el contra valor de una variable que hay dentro de un texto %NOMBREPACIENTE%, seria igual al campo #NOMBRE_PACIENTE, y su valor al buscar el nombre del acompañante en la tabla de Pacientes, seria MANOLITO GAFOTAS

Dejo dos imágenes, una es donde el usuario final puede crear sus propios modelos de justificante escribiendo el texto que el desea, e insertando las variable que servirán para que el programa sepa que contra valor tiene que buscar. Y la otra imagen es como queda el Justificante una vez el usuario a introducido los datos necesarios para rellenar el justificante, eso si, para ello tiene también que seleccionar que justificante desea crear para entregar al paciente.

Hostias tengo la sensación que lo he liado más.
Saludos




([N3] pacosatu) #4

Hola Ramón.

Entiendo lo siguiente:

  • A la función le pasas un String que incluye N-marcadores delimitados por el caracter de porcentaje %.
  • Los N-marcadores se corresponden con Nombres de campo o variables locales perfectamente identificados.
  • El Usuario determinará claramente los contenidos de los campos o variables locales.
  • La función hará calculos previos para validar todos los posibles valores a sustituir…
  • La función sustituirá cada uno de los marcadores por el valor correspondiente al campo o variable indicado en dicho marcador.

Por lo tanto, solo tienes que ejecutar la función replaceString() tantas veces como Campos o Variables locales pueda disponer el Usuario.

Saludos
Paco Satué


([N4] Infortic) #5

Hola.

Lo más fácil es que la plantilla no sea un campo de tipo texto sino uno de tipo objeto fórmula.

Por ejemplo en el tabla de empresas EMP te pones un campo.

FRM_JUS Fórmula justificante (Objeto fórmula Tabla JUSTIFICANTES)

Rellenas el campo fórmula desde la configuración:

"Solicitado por " + #NOM_ACO + " con DNI Nº " + #NIF + “… lo que sea”

De esta forma te puedes hacer una plantilla con todos los campos, fórmulas, etc etc etc que quieras.

Luego calculas el cuerpo del justificante desde donde quieras, manejadores de evento, un botón…

modificar campo(#CUERPO_CUSTIFICANTE,#EMP.FRM_JUS:calcDynamicFormula());

NOTA: Para ello debes incluir un campo EMP en la tabla de justificantes, es decir un campo que enlace a la tabla donde tengas el campo FRM_JUS.

Un saludo


([N4] Ramon Denuc) #6

Hola,

Gracias Paco y Infortic, me queda muy claro los caminos a tomar.

Me pongo manos a la obra.

Saludos