Dateneingabe, Cursorpositionierung, Datenspeicherung

Hallo,

bezüglich der Dateneingabe in einen Formular in Base (LO 6.2.7.1 (x64)) habe ich einige Probleme:

1.) in der zugrundeliegenden Tabelle wird immer nur ein Datensatz angezeigt. D. h. Der zuletzt eingegebene Datensatz wird permanent überschrieben.

2.) Nachdem ich mittels der Schaltfläche „Speichern“ meine Daten gespeichert habe möchte ich, dass der Inhalt aller Eingabefelder gelöscht wird und keine vorher eingegebenen Daten noch angezeigt werden.

3.) In Abhängigkeit von einem ausgewählten Optionsfeld einer Gruppe möchte ich den Cursor auf ein anderes Eingabefeld positionieren.

4.) Automatisches Öffnen des Unterformulars - entweder beim Eingabefeld verlassen oder per Schaltfläche.

5.) Nach dem Speichern sind alle Booleanfelder einer Optionsgruppe schwarz. In einem Feld soll ein Wert (Ja-Wert bzw. ein Haken falls möglich) eingetragen werden, die anderen Felder sollen weiterhin keinen Inhalt haben (bzw. NULL sein).

Bezüglich dieser Probleme habe ich schon ausgiebig in der Hilfe nachgeschaut und auch in diesem Forum gesucht – allerdings nicht gefunden.

Muss ich für die Probleme Makros erstellen? Gibt es eine Makrosprache mit einer spezifischen Syntax? Die Makros die ich bislang gefunden habe (Extras/Anpassen/Ereignisse und Extras/Makros) bringen mich nicht wirklich weiter.

Ich brauche dringend eure Hilfe.

Am Anfang tausend Fragen, das ist OK. Da würde ich zunächst einmal das Handbuch zur Hilfe nehmen…

Und dann gibt’s da noch ein paar Videos.

Und noch ein Tip: Ich weiß jetzt nicht, ob deine Aufzählung oben in deiner Beschreibung, wie was funktionieren soll, sehr sinnvoll ist. Vielleicht versuchst du ersteinmal zu verstehen wie es funktioniert bzw. was die Entwickler sich dabei gedacht haben und das Produkt so erstellt haben, wie es halt funktioniert?

Hallo ebot,

danke für den Hinweis auf das Handbuch. So etwas habe ich gesucht. Und - ja, es ist sinnvoll was ich vorhabe.

Da ich mittlerweile recht viele Noten besitze möchte ich diese jetzt systematisch erfassen und deshalb eine rein private, individuelle base-Anwendung schreiben. Alle Informationen passen nicht in ein Formular, deshalb möchte ich ein Unterformular zur Konkretisierung der Musikrichtung (z. B. Popmusik, Klasik, Volkslieder, Weihnachtslieder, …) erstellen. Dieses soll automatisch aufgerufen werden, sobald der Liedtitel eingegeben worden ist. Denn ich möchte sicherstellen, das ich nicht vergesse Daten einzugeben. (Aufgrund meiner Erfahrungen beim Testen habe ich die Felder “Schwierigkeitsgrad”, “Erscheinungsjahr” und “Tonart” bereits zu Pflichtfeldern gemacht. .-) )

In Abhängigkeit von einem Optionsfeld soll ein Feld z B. zur Eingabe eines Notenbuchtitels oder zur Eingabe des Titels eines Medleys angesteuert werden.

Dies zur Erklärung meiner Fragen.

  1. Du hast vermutlich nur einen Speicherbutton in das Formular eingebaut. Mit dem wird der Datensatz nur abgespeichert - sonst nichts. Wenn Du die Navigationsleiste nutzt oder einen Button “Nächster Datensatz”, dann werden die aktuellen Daten gespeichert und das Formular für eine Neueingabe wieder geleert.
  2. Siehe 1
  3. Für den Fall musst Du Dich mit Makros vertraut machen. Du musst das Ereignis mit der Option verbinden, dass eben eine Auswahl geändert wurde. Schau einmal nach so einem Code:
    oForm = oEvent.Source.Model.Parent oController = thisComponent.getCurrentController() oView = oController.getControl(oForm.getByname("Feldname")) oView.setFocus
    Du wirst wohl lediglich den Namen des Feldes (“Feldname”) entsprechend anpassen müssen.
  4. Da verstehen wir wohl verschiedene Dinge mit dem Begriff “Unterformular”. In Base ist der Begriff damit verbunden, dass auf einer Oberfläche Formulare und Unterformulare in beliebiger Anzahl existieren können. Am häufigsten kommt wohl die Kombination “Hauptformular” mit “Unterformular” vor - so etwas wie die Zusammenstellung vonm Posten für eine Rechnung: Rechnungsnummer und Datum im Hauptformular, alle Artikel im Unterformular. Mir scheint aber, dass Du ein neues Formulardokument öffnen willst. Auch dazu siehe einfach im Handbuch einmal nach dem Makro zum Öffnen eines neuen Formulars nach.
  5. Das habe ich noch nie gesehen. Vermutlich, weil ich wie in 1. Speichere und direkt zum nächsten Datensatz wechsele. Arbeite erst einmal die vorherigen Punkte ab und melde Dich gegebenenfalls neu. Lade Dir aber auch das Handbuch runter.

Hlalo RobertG,

danke für deine schnelle Antwort. Und sorry, das ich erst jetzt anworte.

Ja, ich habe nur einen Button “speichern” eingebaut - und würde gerne eine Extra-Schaltfläche “nächster Datensatz” vermeiden und automatisieren. Bei dem Datenvolumen was ich in meine Datenbank eingeben möchte, ist das doch sehr lästig. Ich möchte meine doch inzwischen recht umfangreiche Notensammlung systematisch erfassen.

Das Unterformular brauche ich nur, da ich nicht alle Daten in einem Formular unterbringen kann und ich bei der Eingabe von Daten das Formular nicht scrollen möchte. Das wäre bei der Menge die ich eingeben werde sehr nervig. Und ich würde mit Sicherheit in einem Teil der Fälle vergessen, die Daten einzugeben. (Ich kenne mich. :slight_smile: ) Die Gefahr besteht, solange das Unterformular nicht automatisch aufgerufen wird. Im Unterformular möchte ich nur die musikalische Stilrichtung präzisieren. Später möchte ich nach diesen Kriterien Lieder mittels SQL-Abfragen selektieren können.

Alle Daten sind in einer Tabelle gespeichert. (Für einige Felder, z. B. "Tonart"oder “Schwierigkeitsgrad”, habe ich Listfelder mit in entsprechenden Tabellen hinterlegten Werten definiert.) So gesehen wäre kein Unterformular erforderlich, doch ich möchte die Stlrichtung aus Übersichtlichkeitsgründen mittels einem automatisch aufgerufenen Unterformular erfassen, indem aus mehreren Optionsgruppen ausgewählt werden kann (z B. “Popmusik” und “Weihnachtslieder” für “Last Christmas”).

Jetzt werde ich erst mal im Handbuch recherchieren, mich auch mal mit Makros beschäftigen und schauen, was ich so hinbekomme. Dein Code wird mir mit Sicherheit dabei sehr hilfreich sein. Ich werde jetzt erstmal ausprobieren was ich so hinbekomme und wenn ich noch 'Fragen habe werde ich mich wieder melden.

Vielen Dank für deine hilfreichen Tipps.