Gehe zum nächsten/vorherigen Datensatz im Vollbildmodus
Hallo Forum,
ich nutze für meine Datenbank den Vollbildmodus. Das ist für Benutzer, die lediglich in Formularen arbeiten wollen, sehr angenehm. Dadurch werden die Schaltflächen aus der Normalansicht ausgeblendet, was für diese Benutzer ebenfalls nicht nachteilig ist. Drucken, Löschen, Duplizieren und Neuanlegen eines Datensatzes können mit Befehlsschaltflächen abgebildet werden. Nur für die Schaltflächen nächster bzw. vorhergehender Datensatz habe ich bisher keinen Ersatz gefunden. Diese sind beim Abarbeiten von Listen sehr hilfreich. Hat jemand von euch dafür eine Lösung parat?
Vielen Dank und liebe Grüße, Jörg
7 Antworten
-
Hallo Jörg, mit folgenden Schaltflächen-Codes könnte man in der Tabelle durchlaufend vor- und zurücknavigieren, wobei nach dem letzten Datensatz zum ersten gesprungen würde - und umgekehrt.
Vorwärts/Nächster Datensatz:
let me := number(Nr);
if me = last((select TABELLE).number(Nr)) then
openFullscreen(first((select TABELLE) order by number(Nr)))
else
openFullscreen(first(select TABELLE where number(Nr) > me))
end
Rückwärts/Vorheriger Datensatz:
let me := number(Nr);
if me = first((select TABELLE).number(Nr)) then
openFullscreen(last((select TABELLE) order by number(Nr)))
else
openFullscreen(last(select TABELLE where number(Nr) < me))
end
-
Hallo Copytexter, danke für deinen Vorschlag. Ich weiß jetzt nicht, woran es liegt aber bei mir geht mit jedem Klick auf die Schaltfläche ein neues Fenster auf. Das sieht man zuerst gar nicht, weil die Fenster sozusagen übereinander liegen. Jedenfalls kommt man nur wieder zurück zur Ausgangsposition, wenn man die Anzahl Fenster schließt, die man vorher geöffnet hat. Also, wenn ich fünf mal Vorwärts geklickt habe, muss ich fünf mal auf das X klicken, um die Fenster zu schließen. Ich nutze die Mac App.
-
Ich habe deinen Code folgendermaßen ergänzt:
let me := number(Nr);
if me = last((select RPosition).number(Nr)) then
let myNext := first((select RPosition) order by number(Nr));
closeRecord();
popupRecord(myNext)
else
let myNext := first(select RPosition where number(Nr) > me);
closeRecord();
popupRecord(myNext)
endDas scheint zu klappen.
-
Ich mach mal hierzu eine Anmerkung.
Leo hat in den Beispielen in der Reference Datenbank im Webinar DE Team beschrieben, wie man per Button zu dem nächsten/vorigen Datensatz wechseln kann.
Der Link zu den Beispielen führt zu einer Tabelle in der die Skripte praktisch getestet werden können.
-
Moin Uwe. Vielen Dank für den Tipp, das ist eine tolle Fundgrube.
-
Hallo Jörg, „normalerweise“ ist ein vorheriges closeRecord() nicht erforderlich, weil ein openRecord() den aktuellen Datensatz automatisch schließt, um den neuen zu öffnen. Aber es kann natürlich sein, dass es sich beim openFullscreen() anders verhält, das habe ich nicht ausprobiert, sondern im eigentlichen Code einfach nur openRecord() durch openFullscreen() ersetzt. Und wenn es bei dir so funktioniert, dann ist es ja perfekt.
Falls du die Tabelle beim Vor- und Zurückspringen nicht nach der Record-ID, sondern nach einem Datenfeld sortiert haben willst, dann solltest du Uwes Hinweis folgen und mal in die Praxisbeispiele der Referenz-DB schauen. Dort finden sich einige nützliche Code-Schnipsel, unter anderem eben auch die von Leo zum Vor-/Zurück-Springen mit spezifischer Sortierung.
Ach, sehe gerade, dass du schon reingeschaut hast. Na, dann ... ;)
-
Hallo Copytexter. Vielen Dank für deine Hilfe. Du und Uwe habt mir sehr geholfen. Ich habe jetzt eine Lösung, bin aber noch nicht am Ziel. Das liegt offensichtlich daran, dass ich die Funktion in einer Untertabelle nutzen möchte. Deshalb auch popupRecord und nicht openRecord. openRecord springt ja zur zugehörigen Tabelle und das kann ich nicht gebrauchen.
Das Problem begrenzt sich jetzt auf die Optik. Durch closeRecord wird das alte Formular nach rechts rausgeschoben und und durch popupRecord kommt das neue von rechts herein. Da wird einem schon schwindelig, wenn man einige Datensätze geblättert hat. :-))
Leider kann man closeRecord nicht gezielt für einen bestimmten Record einsetzen, sonst könnte man zuerst den neuen Datensatz “hereinholen” und den dahinterliegenden schließen. Vielleicht kommt da noch eine Ergänzung in den Funktionen.
Nochmals vielen Dank!
Content aside
- vor 4 JahrenZuletzt aktiv
- 7Antworten
- 901Ansichten