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
-
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.
-
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.
-
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.
-
Danke für die Antworten, leider fehlt bei mir die Option „Reorganisieren“ (siehe Bild).
-
Wie kann ich in einem Script eine Verknüpfung herstellen, wenn nicht über die Nummer des Datensatzes? Wie spreche ich den Datensatz sonst an?
-
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
-
"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.
-
Danke für die allesamt sehr nützlichen Antworten. Konnte meine derzeitigen Probleme alle lösen.
-
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.
-
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.
-
IAntrag ist doch ein neuer Datensatz in der Tabelle Leistungsantrag. Es sollte dann heißen
first( select Leistungsantrag where.........)
Leo
-
»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?
-
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