Wert in neuen Datensatz übernehmen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Simon1979
Beiträge: 4
Registriert: Mi, 20.10.2010 20:13

Wert in neuen Datensatz übernehmen

Beitrag von Simon1979 »

Hallo zusammen,

ich bin sowohl in OO, als auch in diesem Forum neu. Sollte meine Frage also schon irgendwo beantwortet worden sein, habe ich das entsprechende Thema etweder nicht gefunden oder mangels Ahnung nicht erkannt. In diesem Fall freue ich mich über einen Hinweis, wo ich eine Lösung finden kann ;-)

Und nun zum Problem:
Ich habe eine kleine Datenbank (2 Tabellen: "Daten" und "Kategorien") mit einem Eingabeformular. Dieses enthält die Felder "Timestamp", "Kategorie" und "TNR".
Das Feld "Timestamp" wird automatisch mit dem aktuellen Timestamp beschrieben.
Das Feld "Kategorie" ist ein Listenfeld, das sich die Werte aus der Tabelle "Kategorien" holt.
Das Feld "TNR" ist ein Eingabefeld (Text), in das ich manuell Werte eingeben möchte.

Ich möchte nun, dass nach Eingabe der Daten im Formular (Kategorie und TNR), die gewählte Kategorie im neuen (nächsten) Datensatz automatisch eingestellt ist und der Fokus im Feld "TNR" liegt.
Ich will also, dass ich viel Datensätzen eingeben kann, ohne jedesmal die Kategorie wählen zu müssen. Sobald ich aber die Kategorie in einem neuen Datensatz ändere, so diese neue Kategorie für all weiteren Datensätze voreingestellt sein.

Ist das soweit verständlich?

Ich verwende OO 3.2.1

Viele Grüße

Simon
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Wert in neuen Datensatz übernehmen

Beitrag von herz4 »

Könnte sein, dass folgendes geht:

Die Liste der Kategorien im Listenfeld per Abfrage erstellen lassen. Dabei zu jeder Kategorie den letzten Timestamp aus der ersten Tabelle zuordnen und danach abfallend sortieren lassen. Somit steht in der Liste an Pos. 1 die zuletzt "eingegebene" Kategorie - allerdings vor Laden des Formulars! Die Standardauswahl des Listenfeldes auf diese erste Position setzen lassen. Ich weiß nicht, ob diese mit 1 oder 0(Null) zu bezeichnen ist.

Wenn dann eine "neue" Kategorie ausgewählt wird, wird diese erst nach nächstem Laden des Formulars - etwa einem Refresh - auf Pos. 1 und damit in der Standardauswahl stehen! Besser geht bestimmt ...
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Simon1979
Beiträge: 4
Registriert: Mi, 20.10.2010 20:13

Re: Wert in neuen Datensatz übernehmen

Beitrag von Simon1979 »

Danke für die Antwort!

Aber eines macht mich dabei unglücklich:

Ich habe dann ja irgendwann eine ziemlich lange Kategorienliste in der die vier Kategorien zig mal auftauchen, oder?

Grüße

Simon
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Wert in neuen Datensatz übernehmen

Beitrag von herz4 »

Nein, durch GROUP BY "Kategorie", MAX("Timestamp") erhältst Du zu jeder Kategorie den "ältesten" Timestamp!
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Simon1979
Beiträge: 4
Registriert: Mi, 20.10.2010 20:13

Re: Wert in neuen Datensatz übernehmen

Beitrag von Simon1979 »

Super. Danke für den Tip. Musste zwar ganz schön ausprobieren aber es hat geklappt.

Jetzt brauch ich nur noch ne Idee, wie die Kategorieänderung bestehen bleibt, ohne dass man das Formular neu öffnen muss. Ein einfaches Aktualisieren funktioniert leider nicht.

Irgend welche Hinweise?

Grüße

SImon
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Wert in neuen Datensatz übernehmen

Beitrag von herz4 »

Wenn es ausschließlich(!) darum geht, genau die eine letzte Kategorie wieder und wieder einsetzen zu lassen, dann kann man die DB so programmieren, dass - wenn nichts eingegeben ist - eben gerade der zuletzt benutzte Wert automatisch eingegeben wird. Das geht dann ohne Listenfeld, aber auch ohne das man unmittelbar sieht, welche Kategorie eingegeben wird.

Um dabei zu helfen, müsste ich mich selbst erst einmal belesen. Das geht besser selbst im UserGuide der DB-Engine - ich vermute die Base-interne HSQLDB 1.8.0.10?!
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Simon1979
Beiträge: 4
Registriert: Mi, 20.10.2010 20:13

Re: Wert in neuen Datensatz übernehmen

Beitrag von Simon1979 »

Ja, in nutze die Base-interne DB.

Aber man sollte im Formular schon sehen, welche Kat ausgewählt ist. Könnte man nicht per Makro das Formular neu laden?

Gruß

SImon
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: Wert in neuen Datensatz übernehmen

Beitrag von herz4 »

Guten Morgen Simon,

es ist wahrscheinlich sogar leichter, es über Makro zu programmieren. Ich würde probieren, dieses Makro mit dem Formular-Ereignis "Nach dem Zurücksetzen" aufzurufen, um mit ihm die "jüngste" Kategorie abzurufen und automatisch in das Kategoriefeld einsetzen zu lassen. Mit dem Listenfeld kann dann sogar noch bei Bedarf geändert werden. In diesem Fall entfiehle auch das lästige, neue Aufrufen des Formulars. Deine Idee scheint mir die bessere!

Im Forum findest Du sicherlich genügend Verweise auf Programmierbeispiele betreffs Abfrage via Makro und dem daraus bestimmten Setzen von Formularfeldinhalten. Viel Erfolg beim Programmieren wünscht

René
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Antworten