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
1w nowej tabeli i rośnie o1przy każdym nowym wpisie (2,3itd.). - 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".
- Funkcja
- 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ę.
