0

Primärschlüssel

Ist es möglich in einer Tabelle einen Primärschlüssel zu definieren? Bei der Archivierung von Dokumenten erhalten diese eine ArchivierungsID die der Nutzer selbst eingibt. Diese ID darf in der Tabelle nur einmal vorkommen. Sie muss eineindeutig sein. Bei Access kann man so etwas beim Tabellendesign definieren und bei NINOX?

5 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,

    Beim Erstellen eines Datensatz erstellt Ninox automatisch eine ID. Diese Nummer ist innerhalb der Tabelle Eindeutig. Die Nummer kann man in einem Funktionsfeld aufrufen wenn man darein Nr oder _id schreibt. Die Tabellen bei Ninox haben neben den Namen auch eine Eindeitige ID aus einer oder Mehreren Buchstaben. Wenn man im Funktionsfeld die Formel raw (this) eingibt, bekommt man eine innerhalb der Datenbank eindeutige ID wie A23 oder AG12.

    Leo

    • Frank_Knorr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielen Dank für Deine Antwort. Die AutoID ist damit so etwas ähnliches wie die AutoNum in Access. Dort wird eine LongInteger-Zahl vergeben. Wird ein Datensatz gelöscht, so wird die betreffende Zahl nicht neu vergeben.

    Vielen Dank für den Hinweis, wie man die eineindeutige NINOX-ID funktionstechnisch nutzt.

    Mein Problem ist damit noch nicht gelöst. Deshalb folgende Frage:

    Ist es unter NINOX möglich, einem eigenen Tabellenfeld einen eineindeutigen Index bzw. einen unique-Schlüssel zuzuweisen?

    Damit soll verhindert werden, doppelte Werte zu erfassen. Wenn das nicht möglich ist, muss beim Anlegen eines neuen Datensatzes funktionstechnisch geprüft werden, ob es den Fedwert in den anderen Datensätzen nicht schon einmal gibt.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,
    Du kannst bei einem Feld den Trigger nach Änderung nutzen.
    ---
    let me:=this;
    if cnt(select DEINETABELLE where DEINFELD=me.DEINFELD)>1 then me.DEINFELD:=null
    ---

    So wird garantiert, dass der Wert in der Tabelle nur einmal vorkommt.
    Die UUID kannst du in Ninox nicht standatdmäßig erstellen. In den Cluod-Version kann man dafür das Feld über trigger bei Neu auf Tabellenebene über API erstellen lassen. z.B._

    ---

    UUIDFELD := http("GET", "https://www.uuidtools.com/api/generate/v1").result 
    ---

     

    Leo

    • Frank_Knorr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielen Dank für die schnelle Antwort. Ich habe die Cloud-Version und probiere den Trigger aus.

    Frank

    • Frank_Knorr
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    nochmals vielen Dank. In der Cloud-Version klappt das super.

     

    let me := this;
    if cnt(select tab_akten where Archivsignatur = me.Archivsignatur) > 1 then
      me.(Archivsignatur := null)
    end

    Frank