Manipolare gli ID dei record in Ninox

Gli ID dei record in Ninox

  • A ogni nuovo record Ninox assegna un ID (identificatore) univoco.
  • La numerazione parte da 1 per una tabella nuova e cresce di 1 a ogni nuova voce (2, 3, ecc.).
  • Gli ID eliminati non vengono riassegnati. L'ID più alto della tabella riflette quindi il numero totale di record creati, compresi quelli eliminati e non più visibili.
  • Rappresentazione dell'ID:
    • Gli ID si possono rappresentare come numeri o come testo.
    • Nella rappresentazione testuale, l'ID unisce l'ID della tabella (una o più lettere maiuscole) al numero del record.
      Esempio: "A1"

Note essenziali sugli ID

  • Convertire un ID in testo:
    • Usate la funzione string() per ottenere la rappresentazione testuale di un ID.
    • La funzione text() restituisce come testo solo la parte numerica dell'ID. Esempio: "1".
  • Esempio:
string(maTable.id); // Correct textual representation, e.g., "A1"
text(maTable.id);   // Only the numeric part as text, e.g., "1"
  • Usare gli ID nelle espressioni:
    • In un'operazione aritmetica o in una concatenazione, l'ID assume il tipo dell'altro dato.
  • Esempio:
var t := "Num ID: " + maTable.id;

Risultato : Num ID: 1

Cercare i record per ID

Per recuperare un record in base all'ID in una clausola where, potete usare indifferentemente un numero o una rappresentazione testuale.

Con un numero:

select Customer where id = 1;

Con del testo:

Usando il testo, assicuratevi che l'ID comprenda sia l'ID della tabella sia il numero del record.

Esempio:

select Customer where id = "B1";

Estrarre il numero del record da un ID

Questa funzione permette di estrarre il numero del record da un ID testuale (per esempio 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) converte l'ID in testo.

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

  • ^[A-Z]+ → una o più lettere all'inizio,
  • ([0-9]+) → le cifre che ci interessano (gruppo di cattura 1),
  • $ → fine della stringa.

extractx(..., "", "$1") restituisce solo le cifre catturate.

number(...) converte quella stringa di cifre in un numero.