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 Jahren
    • 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 Jahren
    • 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 Jahren
    • 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 Jahren
    • Gemeldet - anzeigen

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

    ScSh

    • Claus
    • vor 6 Jahren
    • 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 Jahren
    • 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 Jahren
    • 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 Jahren
    • Gemeldet - anzeigen

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

    • Claus
    • vor 6 Jahren
    • 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 Jahren
    • 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 Jahren
    • 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 Jahren
    • 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 Jahren
    • 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);

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 13Antworten
  • 5449Ansichten