Manipuler les identifiants d'enregistrement dans Ninox

Les identifiants d'enregistrement dans Ninox

  • Chaque nouvel enregistrement reçoit dans Ninox un identifiant (ID) unique.
  • La numérotation commence à 1 pour une table neuve et augmente de 1 à chaque nouvelle entrée (2, 3, etc.).
  • Les identifiants supprimés ne sont pas réattribués. L'identifiant le plus élevé de la table reflète donc le nombre total d'enregistrements créés, y compris ceux qui ont été supprimés et qui ne sont plus visibles.
  • Représentation d'un identifiant :
    • Les identifiants peuvent se présenter comme des nombres ou comme du texte.
    • Sous forme de texte, l'identifiant combine l'identifiant de la table (une ou plusieurs lettres majuscules) et le numéro de l'enregistrement.
      Exemple : "A1"

Points clés sur les identifiants

  • Convertir un identifiant en texte :
    • Utilisez la fonction string() pour obtenir la représentation textuelle d'un identifiant.
    • La fonction text() ne renvoie que la partie numérique de l'identifiant, sous forme de texte. Exemple : "1".
  • Exemple :
string(maTable.id); // Correct textual representation, e.g., "A1"
text(maTable.id);   // Only the numeric part as text, e.g., "1"
  • Utiliser des identifiants dans des expressions :
    • Lors d'un calcul ou d'une concaténation, l'identifiant adopte le type de l'autre donnée.
  • Exemple :
var t := "Num ID: " + maTable.id;

Résultat : Num ID: 1

Rechercher des enregistrements par identifiant

Pour récupérer un enregistrement par son identifiant dans une clause where, vous pouvez employer indifféremment un nombre ou une représentation textuelle.

Avec un nombre :

select Customer where id = 1;

Avec du texte :

Avec du texte, veillez à ce que l'identifiant comprenne à la fois l'identifiant de la table et le numéro de l'enregistrement.

Exemple :

select Customer where id = "B1";

Extraire le numéro d'enregistrement d'un identifiant

Cette fonction permet d'extraire le numéro d'enregistrement d'un identifiant textuel (par exemple 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) convertit l'identifiant en texte.

L'expression régulière ^[A-Z]+([0-9]+)$ signifie

  • ^[A-Z]+ → une ou plusieurs lettres au début,
  • ([0-9]+) → les chiffres recherchés (groupe de capture 1),
  • $ → fin de la chaîne.

extractx(..., "", "$1") ne renvoie que les chiffres capturés.

number(...) convertit cette suite de chiffres en nombre.