Manipular los identificadores de registro en Ninox

Los identificadores de registro en Ninox

  • A cada registro nuevo de Ninox se le asigna un ID (identificador) único.
  • La numeración empieza en 1 en una tabla nueva y se incrementa en 1 con cada entrada nueva (2, 3, etc.).
  • Los identificadores eliminados no se reutilizan. Por tanto, el ID más alto de la tabla refleja el número total de registros creados, incluidos los que se eliminaron y ya no se ven.
  • Representación del ID:
    • Los identificadores se pueden representar como números o como texto.
    • Cuando se representan como texto, el ID combina el identificador de la tabla (una o varias letras mayúsculas) con el número de registro.
      Ejemplo: "A1"

Puntos clave sobre los identificadores

  • Convertir un ID en texto:
    • Use la función string() para obtener una representación textual de un ID.
    • La función text() solo devuelve como texto la parte numérica del ID. Ejemplo: "1".
  • Ejemplo:
string(maTable.id); // Correct textual representation, e.g., "A1"
text(maTable.id);   // Only the numeric part as text, e.g., "1"
  • Usar los identificadores en expresiones:
    • Al hacer operaciones aritméticas o concatenaciones, el ID adopta el tipo del otro dato.
  • Ejemplo:
var t := "Num ID: " + maTable.id;

Resultado: Num ID: 1

Buscar registros por su identificador

Para recuperar un registro por su ID en una cláusula where, puede usar tanto un número como una representación textual.

Con un número:

select Customer where id = 1;

Con texto:

Cuando use texto, asegúrese de que el ID incluya tanto el identificador de la tabla como el número de registro.

Ejemplo:

select Customer where id = "B1";

Extraer el número de registro de un identificador

Esta función permite extraer el número de registro de un ID en forma de texto (por ejemplo, A1):

function recordNumber(id : text) do
  "Capture the digit group.";
  number(extractx(id, "^[A-Z]+([0-9]+)$", "", "$1"))
end;

"Example: apply to the current record’s ID"
var numId := recordNumber(string(myId));

string(myId) convierte el ID en texto.

La RegExp ^[A-Z]+([0-9]+)$ significa

  • ^[A-Z]+ → una o varias letras al principio,
  • ([0-9]+) → las cifras que buscamos (grupo de captura 1),
  • $ → fin de la cadena.

extractx(..., "", "$1") devuelve únicamente las cifras capturadas.

number(...) convierte esa cadena de cifras en un número.