Modificación de pantallas y grids para añadir los campos nuevos

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:26 PM por David Miralpeix

< Primeros pasos - Modificaciones en la base de datos y objetos


Planteamiento inicial

Al igual que en punto anterior, a la hora de modificar las pantallas y grids para añadir los campos que hemos creado tenemos que plantearnos cómo hacer dicha modificación; Podemos realizarla por el propio editor del entorno, codificándolo o mezclando ambas. En este punto vamos a añadir los campos en el propio entorno.


IMPORTANTE: La adición de columnas mixta en grids, código y configuración por entorno, aún siendo posible, no se recomienda bajo ninguna circunstancia.


Formulario de Pedidos

En el formulario de los pedidos queremos añadir los dos campos nuevos que hemos creado, Pers_FechaValidacion y Pers_Validado, ambos de solo lectura puesto que únicamente pueden cambiar de estado por un procedimiento que comprobará sus líneas y los marcará como validados totalmente. Así mismo también queremos añadir los tres campos nuevos de las líneas, Pers_FechaValidacion_Linea, Pers_IdEmpleado_Validacion y Pers_Validado_Linea, al grid con sus líneas.


Para una explicación detallada del entorno de personalización puede consultar la siguiente documentación.


Cabecera

Empezamos por los campos de la cabecera del pedido. Primero tenemos que elegir en qué panel situaremos los campos para posteriormente moverlos.

Para este ejemplo situaremos los campos en la pestaña Económicos.

Pulsamos el botón derecho sobre el panel deseado (lo veremos resaltado en rojo en el editor) y seleccionamos la opción Nuevo Control, Texto.


Vemos que nos crea un campo en blanco en la esquina del panel cuya descripción es "Etiqueta".  

Lo seleccionamos y nos aparecerán sus propiedades a la derecha. Aquí modificaremos tanto sus posiciones X e Y como sus propiedades Alto y Ancho para dejarlo posicionado como queremos.

Como el primer campo que vamos a añadir es la Fecha de Validación le asignamos el mismo ancho que cualquier otro campo de tipo fecha de la pantalla y lo posicionamos justo debajo de "Recargo equivalencia".

Las propiedades que modificaremos serán las siguientes:


Formato - Fecha Corta

Tipo de Dato - Date

Posición X - 3150

Posición Y - 2400

Título Etiqueta - Fecha V.

EObjeto Origen - EObjeto

EObjeto Propiedad - Pers_FechaValidacion


Es conveniente hacer un breve resumen de los campos resaltados: 


EObjeto es el nombre del objeto de tipo "EObjeto" que sirve de enlace entre el formulario y la base de datos. El nombre puede variar de uno a otro por lo que es conveniente, siempre, asegurarse del mismo para rellenar este dato correctamente. Su icono es siempre el mismo y es un control más en el propio formulario. En EObjeto Origen pondremos el nombre del mismo:


Pers_FechaValidacion es el nombre del campo configurable que hemos creado y que es, además, accesible mediante la propiedad Sql y las propiedades del propio objeto de la colección que hemos modificado en el punto anterior, en el Admon.


Repetimos los mismos pasos para el campo de validación pero en esta ocasión creamos un control de tipo "CheckBox" y modificamos las siguientes propiedades:


Posición X - 5685

Posición Y - 2400

Título Etiqueta - Validado

EObjeto Origen - EObjeto

EObjeto Propiedad - Pers_Validado


Si entramos en el formulario vemos como ambos campos aparecen y son modificables. Aprovecharemos para comprobar como los datos que introducimos se guardan automáticamente en los campos correspondientes:



Como el proceso de validación es externo modificaremos, en ambos, la siguiente propiedad:


Activado - False


Además, el campo de la fecha lo marcaremos como Bloqueado para que no puedan escribir en él:


Bloqueado - True


De esta forma ambos serán únicamente de lectura.


Las mismas propiedades están accesibles de igual forma para los campos ya existentes. Por ejemplo, podemos modificar del campo "Inmovilizado" su propiedad Visible a Oculto para hacerlo invisible.



Líneas

La modificación de las líneas debe realizarse en el control grid del formulario llamado grdLineas. Para modificar por entorno un grid debemos pulsar el botón derecho en la esquina superior izquierda y seleccionar el botón Configurar.


Se abrirá la pantalla de configuración del grid, en la que tenemos dos pestañas. Las modificaciones que vayamos a realizar deben aplicarse en la primera pestaña estando la segunda reservada únicamente para consultar la información.


Si consultamos sus propiedades veremos como está cogiendo automáticamente la consulta SQL en el campo From que hemos añadido en el punto anterior, en el Admon, en el campo Edición en grid por objetos.



Lo primero que tenemos que hacer es pulsar el botón Crear nueva configuración. En un punto posterior explicaremos como añadir más de una configuración a un grid.


Tenemos dos paneles diferenciados, Campos y Campos nuevos.


El primer panel, Campos, está destinado a modificar las columnas y/o campos ya existentes en el grid. Podemos modificar prácticamente cualquier propiedad del mismo y los datos que aquí guardemos se aplicarán cuando se cargue.


Para poder modificar uno de los campos tenemos que seleccionarlo del menú Principal, Insertar Campo, y seleccionar el campo que queramos modificar. Se cargará automáticamente con sus propiedades actuales en el grid.



Para nuestra modificación vamos a ocultar los campos Peso Neto, Descripción 2 y Naturaleza. Los seleccionamos uno a uno y, una vez tenemos accesibles sus propiedades, simplemente desmarcamos el check "Visible" para ocultarlos. Extensivamente puede modificarse cualquier propiedad de cualquier campo. Es importante remarcar que el nombre que tiene una columna en el grid puede diferir del nombre que se muestra del mismo. Por ejemplo, en el grid que estamos tratando Naturaleza es en realidad IdOpServicios. Los campos que tienen delante @ son campos calculados, es decir, campos que no se recuperan directamente de la propiedad From.



Al cerrar la ventana vemos que los cambios se aplican automáticamente y podemos comprobar cómo han desaparecido las columnas que hemos ocultado.

Para añadir los campos nuevos simplemente hemos de escribirlos en el grid "Campos nuevos" y establecer las propiedades como necesitemos. Para este ejemplo añadiremos las columnas de la siguiente forma:


Pers_FechaValidacion_Linea

Orden - 90 (para que se posicione al final del todo, modificando este valor podemos ponerlo por delante de cualquier campo de los ya existentes)

Propiedad - Pers_FechaValidacion_Linea

Descripción - Fecha V.

Ancho - 1000

Visible

Formato - dd/mm/yy


Si entramos en el grid vemos que el campo nuevo aparece, respeta el formato introducido y se graba automáticamente al cambiar de línea.



Pers_IdEmpleado_Validacion 

El campo que guarda el empleado que realiza la validación vamos a establecerlo con la SQL del IdEmpleado que usamos en la configuración de la propiedad, en formato "Combo":


Orden - 91

Propiedad - Pers_IdEmpleado_Validacion

Descripción - Empleado V.

Ancho - 800

Visible

Combo - select IdEmpleado, IdEmpleado as IdEmp, Nombre from Vcombo_Empleados


En la propiedad Combo repetimos el campo IdEmpleado porque el primer campo es siempre el campo que se guardará y el resto de campos son los que mostrará el combo extendido, tal como podemos ver en la siguiente imagen:



NOTA: Podemos observar como los combos creados por entorno nos muestran, siempre, el mismo campo que guarda. No es posible guardar un valor y mostrar otro añadiendo un combo de esta forma pero, tal como veremos en las siguientes lecciones, es posible hacerlo creándolo por código.


Como no podemos ver el empleado firmante vamos a añadir un campo que nos muestre el nombre del empleado guardado. Como no lo tenemos en la vista original lo añadimos nuevo con el carácter @. Las propiedades a rellenar serían:


@NombreEmpleado

Orden - 92

Propiedad - @NombreEmpleado

Descripción - Nombre V.

Visible

Sustitución - SELECT Nombre FROM VCombo_Empleados WHERE IdEmpleado=@Pers_IdEmpleado_Validacion


IMPORTANTE: Cuando queremos hacer referencia a una columna existente dentro de un grid tenemos que hacerlo usando el carácter @. Si necesitáramos hacer referencia a un campo creado manualmente que ya tiene dicho carácter hay que usar dos caracteres seguidos. Por ejemplo, "SELECT * FROM XXXXXX WHERE Codigo=@IdCodigo" si existiera el campo en la Sql original, y "SELECT * FROM XXXXXX WHERE Codigo=@@IdCodigo" si @IdCodigo fuera un campo que acabamos de crear.



Una forma parecida sería añadiendo el campo rellenando la propiedad FormulaSelect en lugar de Sustitucion y asignándole un nombre sin @.


NombreEmpleado

Orden - 93

Propiedad - NombreEmpleado (no debe existir como nombre de columna a recuperar)

Descripción - Nombre V.

Visible

FormulaSelect - SELECT Nombre FROM VCombo_Empleados WHERE IdEmpleado=Pers_IdEmpleado_Validacion


NOTA: Sustitucion y FormulaSelect hacen esencialmente lo mismo pero ambos tienen aproximaciones distintas a la recuperación de datos. Sustitución ejecuta la consulta SQL por cada línea a mostrar y FormulaSelect ejecuta su SQL dentro de la consulta a recuperar.

Sustitucion, por ello, se recalcula inmediatamente en cuanto tiene el foco y FormulaSelect muestra su valor únicamente al recalcular la línea entera.


IMPORTANTE: Tanto Sustitución como FormulaSelect penalizan seriamente el rendimiento en grids con una gran carga de datos por lo que su uso debe ser moderado. Una alternativa mucho más eficiente es, siempre, añadir a la vista origen los campos a recuperar y añadirlos como campos ya calculados.



Pers_Validado_Linea


Para el campo Validado simplemente lo mostraremos como el campo Pers_IdEmpleado_Validacion.


Orden - 94

Propiedad - Pers_Validado_Linea

Descripción - Validado

Visible



Tal como podemos comprobar las columnas son, todas, editables, y el valor modificado se guarda en su campo correspondiente. Marcaremos la propiedad Bloquear para evitar que sean modificables.


Adjuntamos captura de cómo queda la configuración final del grid que hemos visto en este artículo:



En el grid deben visualizarse los datos de forma parecida a esta:



Con estas modificaciones aplicadas tendríamos la información disponible sobre si un pedido y sus líneas están validadas. El resto de modificaciones necesarias se realizarán mediante código


Para una descripción extendida de las propiedades y su uso puede consultar la siguiente documentación.


Codificación: Manipulación de controles en frmEmpleados >



¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo