0

Nummerierung

Datensätze werden fortlaufend nummeriert (Spalte Nr.)

Wie kann ich diese Nummerierung zurücksetzen? Ich habe einige Tabellen, die per Script beim ersten Benutzen des Datenbankmodells befüllt werden. Da ich die Datensätze recht umfangreich über „Nr.“ in Scripten anspreche, muss Nr. die richtigen Zahlen haben. Sollte ein User vor der Befüllung Datensätze anlegen, stimmen die Nr. nicht mehr.

Ich lösche zwar mit einer Schleife alle Datensätze, Nr. fängt dann beim Befüllen mit Daten aber leider nicht bei 1 an.

Wie kann ich die Zählung programmatisch (Scrip) zurücksetzen.

Vielen Dank!

13 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 6 JahrenMon, May 28, 2018 at 4:53 AM UTC
    • Gemeldet - anzeigen

    Soweit ich weiß, gar nicht. Neue Datensätze werden immer an die Tabelle angehängt, die Nummern gelöschter Datensätze werden nicht neu vergeben. Die Datensatznummern/IDs dienen in erster Linie der internen Verwaltung, für den Benutzer haben sie an sich keine unmittelbare Bedeutung. Der Zugriff auf bestimmte Daten sollte immer über die Inhalte erfolgen (Abfrage), nicht über die absolute Datensatznummer.

    • Wilhelm_Diegel
    • vor 6 JahrenMon, May 28, 2018 at 5:56 AM UTC
    • Gemeldet - anzeigen

    Was du noch versuchen kannst, ist reorganisieren. Bei mir (Mac-Version) hat das funktioniert, dass er dann nicht mehr aktive ungebrauchte Nr. wieder herausgenommen hat und bei der letztverwendeten angeschlossen hat.

    Reorganisieren

    • Wilhelm_Diegel
    • vor 6 JahrenMon, May 28, 2018 at 5:56 AM UTC
    • Gemeldet - anzeigen

    Was du noch versuchen kannst, ist reorganisieren. Bei mir (Mac-Version) hat das funktioniert, dass er dann nicht mehr aktive ungebrauchte Nr. wieder herausgenommen hat und bei der letztverwendeten angeschlossen hat.

    Reorganisieren

    • Claus
    • vor 6 JahrenMon, May 28, 2018 at 11:17 AM UTC
    • Gemeldet - anzeigen

    Danke für die Antworten, leider fehlt bei mir die Option „Reorganisieren“ (siehe Bild).

    ScSh

    • Claus
    • vor 6 JahrenMon, May 28, 2018 at 11:18 AM UTC
    • Gemeldet - anzeigen

    Wie kann ich in einem Script eine Verknüpfung herstellen, wenn nicht über die Nummer des Datensatzes? Wie spreche ich den Datensatz sonst an?

    • Birger_H
    • vor 6 JahrenMon, May 28, 2018 at 11:31 AM UTC
    • Gemeldet - anzeigen

    Z.B. der erste Datensatz in der Tabelle 'Meine Tabelle' in dem im Feld 'Nachname' der Wert "Schmidt" steht_

    –––
    first( select 'Meine Tabelle' where 'Nachname' = "Schmidt" )
    –––

    Birger

    • Dirk_Patzer
    • vor 6 JahrenMon, May 28, 2018 at 12:20 PM UTC
    • Gemeldet - anzeigen

    "Reorganisieren" erscheint nur im Menü, wenn Du die Datenbank auf einem anderen Gerät öffnest, bei dem Du nicht zuletzt über den Schraubenschlüssel Änderungen vorgenommen hast. Um auf dem anderen Gerät diese Recht zu erhalten, kann man die DB durch "reorganisieren" auf dem neuen Gerät bearbeitbar machen.

    • Claus
    • vor 6 JahrenWed, May 30, 2018 at 9:09 AM UTC
    • Gemeldet - anzeigen

    Danke für die allesamt sehr nützlichen Antworten. Konnte meine derzeitigen Probleme alle lösen.

    • Claus
    • vor 6 JahrenWed, May 30, 2018 at 9:21 AM UTC
    • Gemeldet - anzeigen

    Klappt leider doch noch nicht, hier mal der Code

    let AN := Personen.'Beantragen bei (Vorname)';
    let vollerName := Personen.Vorname + Personen.Name;

    let lAntrag := (create 'Leistungsantrag');
    lAntrag.(Antragsdatum := today());
    lAntrag.(AntragName := AN);
    lAntrag.(vollerName := vollerName);

    first( select lAntrag where 'AntragStatus' = "vorbereitet" ); % Diese Zeile produziert einen Fehler.

    lAntrag.(AntragStatus := 1); % So habe ich das bis jetzt gelöst.

    'Leistungsantrag' := lAntrag

    Tabelle „AntragStatus“ mit Werten im Feld „AntragStatus“

    Tabelle AntragStatus ist mit Tabelle Leistungsantrag verknüpft.

    • Wilhelm_Diegel
    • vor 6 JahrenWed, May 30, 2018 at 9:47 AM UTC
    • Gemeldet - anzeigen

    first( select lAntrag where 'AntragStatus' = 1 )

    Du musst nach einem = -Zeischen die Nummer der Auswahl dahinterschreiben. Oder aber 

    first( select lAntrag where 'AntragStatus' like "vorbereitet" ). Dann müsste die Zeile keinen Fehler mehr produzieren.

    • Leonid_Semik
    • vor 6 JahrenWed, May 30, 2018 at 9:53 AM UTC
    • Gemeldet - anzeigen

    IAntrag ist doch ein neuer Datensatz in der Tabelle Leistungsantrag. Es sollte dann heißen

    first( select Leistungsantrag where.........)

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 6 JahrenWed, May 30, 2018 at 10:47 AM UTC
    • Gemeldet - anzeigen

    »first( select lAntrag where 'AntragStatus' = "vorbereitet" ); % Diese Zeile produziert einen Fehler.«

    Nur so als Idee auf die Schnelle: Falls 'AntragStatus' ein Auswahlfeld ist, sollte es zur Abfrage des Textinhaltes nicht „text(AntragStatus)“ heißen?

    • Claus
    • vor 6 JahrenWed, May 30, 2018 at 11:28 PM UTC
    • Gemeldet - anzeigen

    Wieder vielen Dank für die Antworten. Ich habe das nun so realisiert:

    let lStatus := first(select AntragStatus where AntragStatus like "vorbereitet");
    lAntrag.(AntragStatus := lStatus);