Buscador de código

Búsqueda por expresión regular, y el código de un resultado al pasar el ratón

La vista Buscador de código permite recorrer todos los scripts de su base de datos. Puede combinar estas opciones:

BotónOpciónEfecto
.*Búsqueda por expresión regularInterpreta la consulta como una RegExp, con toda la potencia de los patrones (cuantificadores, clases, anclas…). Las opciones Distinguir mayúsculas/minúsculas y Solo palabras completas se pueden seguir combinando.
AaDistinguir mayúsculas/minúsculasCuando está marcada, la búsqueda distingue mayúsculas y minúsculas: «A» y «a» se consideran caracteres diferentes.
\bSolo palabras completasLimita los resultados a las apariciones que no van pegadas a otras letras o cifras. Se encuentran las palabras separadas por espacios, signos de puntuación, etc.

Los tres botones están dentro del campo de entrada, a la derecha, en este orden; cuando el campo no está vacío, los sigue una cruz que lo borra.

La búsqueda se lanza cuando sale del campo de entrada —con un clic en otro lugar, con la tecla Tab o, a partir de la versión 3.2.0, con la tecla Intro—, o cuando elige una búsqueda del historial. Desde esa misma versión, Esc sale del campo y descarta lo que haya escrito en él: la búsqueda en curso sigue mostrándose. El navegador recuerda el texto buscado y las tres opciones, para todas las bases de datos.

El historial de búsquedas

Un clic en el campo de entrada despliega sus 20 últimas búsquedas, la más reciente arriba; la lista se filtra mientras escribe. Una cruz elimina una búsqueda del historial.

Los resultados

El contador indica el número de resultados mostrados y el número total encontrado. Los resultados se muestran en bloques de 100: al final de la lista, +100 muestra los 100 siguientes (+N cuando quedan menos de 100), y Todo (N) los N restantes.

Leer un resultado

Cada resultado es una línea presentada como en Campos y fórmulas: icono de tipo, badge de dependencias, «Fx» y, después, la ruta de navegación del elemento, cuya parte en negrita designa el código donde se ha encontrado el texto.

  • Al pasar el ratón por la parte en negrita, el código aparece en una burbuja, con el texto encontrado resaltado.
  • Un clic en la parte en negrita abre el editor de Ninox en ese código, con el texto encontrado resaltado.
  • El botón rojo que aparece al pasar el ratón, a la derecha de la línea, en modo de edición («Edit mode»), selecciona el campo en su formulario si la línea se refiere a un campo, y abre el editor del código para las demás líneas.
  • Un clic en el badge de dependencias de un campo abre ese campo en la pestaña Campos y fórmulas.

Dónde se busca

La búsqueda recorre todo el código de la base de datos:

  • el código global y el trigger «After Open»;
  • los triggers de las tablas;
  • las fórmulas y los triggers de los campos: botones, triggers después de crear o de modificar, «Display only if», derechos de lectura y de escritura, formatos de visualización, selecciones dinámicas, restricciones;
  • las columnas de las vistas: su fórmula y su formato condicional;
  • los informes de impresión: textos que contienen fórmulas entre llaves, bloques HTML, columnas de revisión, campos de imagen con fórmula, y fuente de datos de los informes Carbone (solo se lee la fórmula de la fuente, no el archivo Word).

Ejemplo de expresión regular

¿Necesita repasar la sintaxis de las expresiones regulares? Hay un tutorial breve en https://regexone.com.

La RegExp siguiente encuentra todos los select cuya cláusula where filtra por ID:

\bselect\b[^;]*(?<!\.)\bid\b

Esto le ayuda a detectar rápidamente los lugares donde puede sustituir first(select myTable where ID = searchId) por la alternativa más rápida: record(myTable, searchId).

Cómo funciona, paso a paso:

Patrón RegExpExplicación
\bselect\bEncuentra la palabra completa select (evita que coincidan palabras como «selected»).
[^;]*Encuentra cero o más caracteres distintos de ;, lo que garantiza que no haya ningún punto y coma entre select e id.
(?<!\.)Una comprobación negativa hacia atrás que exige que no haya un . justo antes de id.
\bid\bEncuentra la palabra completa id (evita que coincidan fragmentos como «userid» o «ident»).