Consejos técnicos – ¡Los 4 consejos de abril ya están aquí!

Traducido automáticamente de Deepl

por Add Komoncharoensiri, Director de Servicios Técnicos de 4D Inc.

Como desarrollador 4D, usted tiene que mantenerse al día con los nuevos avances que 4D lanza continuamente. Además de los consejos y trucos proporcionados por el equipo del producto, los Tech Tips son otra referencia para aprender algunos de los conceptos de 4D.

Este artículo cubre 4 consejos:

  • Cómo tratar los caracteres comodín de SQL como una cadena literal
  • Cómo obtener el nombre del proyecto de forma programada
  • Los métodos preventivos bajo la misma cadena de llamadas también deben ser preventivos
  • Cómo crear un nuevo documento de View Pro basado en una hoja

¿Cómo tratar los caracteres comodín de SQL como cadena literal?

A diferencia de 4D, que sólo tiene un carácter comodín («@»), SQL tiene múltiples caracteres comodín (por ejemplo, «%», «?», «_», «#», etc). SQL utiliza los caracteres comodín para sustituir uno o más caracteres en una cadena. Consulte aquí una lista de caracteres comodín de SQL. Los comodines de SQL se utilizan principalmente con el operador LIKE y la cláusula WHERE para buscar un patrón específico en una columna.

Cuando se consultan cadenas que contienen caracteres comodín SQL usando el operador WHERE/LIKE en 4D SQL, los caracteres comodín deben ser escapados para ser tratados como caracteres literales. La cláusula ESCAPE está soportada en el operador LIKE para indicar el carácter de escape.

Por ejemplo, digamos que los datos a consultar contienen «Cliente_1», «Cliente_11», «Empleado_1» y «Empleado_11». El objetivo es buscar todas las cadenas que terminen en «_1».

Dado que el guión bajo («_») es uno de los caracteres comodín en SQL, debe escaparse para ser tratado como un carácter literal. Esto se puede escribir así.

ARRAY TEXT($results; 0)
Begin SQL
   SELECT ID from Table_1
   WHERE Field_2 LIKE '%\_1' ESCAPE '\'
   INTO : $results
End SQL

Un carácter de barra invertida («\») se coloca delante del guión bajo («_»), y entonces la barra invertida se define como el carácter de escape. El carácter de escape hace que SQL trate el siguiente carácter como un carácter literal.

Obtener el nombre del proyecto de forma programada.

Cuando se trabaja en modo proyecto, a veces se necesita el nombre de la aplicación del proyecto. Para obtener el nombre del proyecto de forma programática, utilice el comando Carpeta con la constante de la carpeta de la base de datos fk. La propiedad «name» del objeto carpeta devuelto es el nombre del proyecto. Por ejemplo, dado que se crea un proyecto con el nombre «proyecto ejemplo», en la siguiente línea

$projectName:=Folder(fk database folder).name

$projectName devolverá «proyecto de ejemplo» en la aplicación del proyecto.

Los métodos preventivos bajo la misma cadena de llamadas también deben ser preventivos

Todos los métodos dentro de la misma cadena de llamadas también deben ser preventivos / seguros para hilos cuando se trabaja con un método preventivo. Esto incluye los métodos típicos del proyecto y los métodos dentro de los métodos de la clase como el collection.sort() donde el primer argumento sería un nombre de método.

Además, los métodos thread-safe incluirán condiciones como:

  • Deben tener activada la propiedad «Puede ser ejecutado en procesos preemptivos» o «indiferente»
  • No debe incluir plugins inseguros para los hilos
  • No debe utilizar ninguna variable interproceso
  • No debe llamar a comandos relacionados con la interfaz (por ejemplo, DIALOG)

Creación de un nuevo documento VP basado en una hoja

Es posible crear un nuevo documento de 4D View Pro basado en una hoja específica de otro documento de 4D View Pro.

A continuación se muestra un método de utilidad que tomará el nombre del área de View Pro como primer parámetro y el número de índice de la hoja deseada para crear un nuevo documento que sólo contenga la hoja como objeto:


// VP_Extract_Sheet
#DECLARE($vpAreaName_t : Text; \
$sheetIdx_l : Integer)\
->$newVP_ob : Object

var $srcVP_ob : Object

$srcVP_ob:=VP Export to object($vpAreaName_t)

$newVP_ob:=OB Copy($srcVP_ob)

$newVP_ob.spreadJS.sheets:=New object( \
VP Get sheet name($vpAreaName_t; $sheetIdx_l); \
$newVP_ob.spreadJS.sheets[VP Get sheet name($vpAreaName_t; $sheetIdx_l)])

$newVP_ob.spreadJS.activeSheetIndex:=0
$newVP_ob.spreadJS.sheetCount:=1

Esto permitirá extraer hojas específicas de un documento VP o cualquier documento importado en un área VP como su propio documento VP.

Conclusión

Ahí lo tienes, ¡nuestros 4 consejos y trucos para abril! Espero que hayas aprendido algo nuevo y que los apliques en tu codificación diaria.

Si le han gustado los consejos anteriores, encontrará más en la Base de Conocimientos 4D, una biblioteca de información sobre la tecnología 4D donde se publican constantemente consejos técnicos semanales y notas técnicas mensuales. Lleva años ayudando a los clientes a encontrar respuestas para resolver sus problemas y seguirá haciéndolo en los próximos años.

Add Komoncharoensiri
Add Komoncharoensiri ha sido un miembro clave del equipo de soporte técnico desde el año 2000. Komoncharoensiri comenzó su carrera en la empresa como Ingeniero de Soporte Técnico y luego ascendió a Evangelista 4D en 2003, seguido por Gerente de Aplicaciones Internas en 2006 y luego a Director de Servicios Técnicos en 2007.Add recibió una licenciatura en Ciencias de la Computación de la Universidad Estatal de San José en 2000. Es un apasionado de la experiencia de usuario (UX) y de la programación de interfaces de usuario. Ayudó a desarrollar y gestionar los sitios web de 4D Knowledgebase y 4D Partner Central.