Operowanie na identyfikatorach rekordów w Ninox

Identyfikatory rekordów w Ninox

  • Każdy nowy rekord w Ninox otrzymuje unikatowy identyfikator (ID).
  • Numeracja zaczyna się od 1 w nowej tabeli i rośnie o 1 przy każdym nowym wpisie (2, 3 itd.).
  • Usunięte identyfikatory nie są przydzielane ponownie. Najwyższy identyfikator w tabeli odzwierciedla więc łączną liczbę utworzonych rekordów, wraz z tymi, które usunięto i których już nie widać.
  • Postać identyfikatora:
    • Identyfikator może być przedstawiony jako liczba lub jako tekst.
    • W postaci tekstowej łączy identyfikator tabeli (jedną lub kilka wielkich liter) z numerem rekordu.
      Przykład: "A1"

Najważniejsze uwagi o identyfikatorach

  • Zamiana identyfikatora na tekst:
    • Funkcja string() daje tekstową postać identyfikatora.
    • Funkcja text() zwraca jako tekst wyłącznie część liczbową identyfikatora. Przykład: "1".
  • Przykład:
string(maTable.id); // Correct textual representation, e.g., "A1"
text(maTable.id);   // Only the numeric part as text, e.g., "1"
  • Użycie identyfikatorów w wyrażeniach:
    • Przy działaniach arytmetycznych lub łączeniu tekstu identyfikator przyjmuje typ drugiej wartości.
  • Przykład:
var t := "Num ID: " + maTable.id;

Wynik: Num ID: 1

Wyszukiwanie rekordów po identyfikatorze

Aby pobrać rekord po identyfikatorze w klauzuli where, można użyć liczby albo postaci tekstowej.

Z użyciem liczby:

select Customer where id = 1;

Z użyciem tekstu:

Przy postaci tekstowej trzeba zadbać, aby identyfikator zawierał zarówno identyfikator tabeli, jak i numer rekordu.

Przykład:

select Customer where id = "B1";

Wydobycie numeru rekordu z identyfikatora

Ta funkcja pozwala wyodrębnić numer rekordu z identyfikatora tekstowego (np. 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) zamienia identyfikator na tekst.

Wyrażenie regularne ^[A-Z]+([0-9]+)$ oznacza

  • ^[A-Z]+ → jedną lub więcej liter na początku,
  • ([0-9]+) → cyfry, o które nam chodzi (grupa przechwytująca 1),
  • $ → koniec ciągu.

extractx(..., "", "$1") zwraca wyłącznie przechwycone cyfry.

number(...) zamienia ten ciąg cyfr na liczbę.