BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Pfeiltasten ändern numerischen Datensatz im Fomular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RonK » Mi 1. Dez 2021, 11:17

Hallo in die Runde,
ich weiß nicht, ob es schon jemanden aufgefallen ist. Ich kann darüber nichts finden.
In unserer recht umfangreichen Kundendatenbank haben wir viele numerische Datensätze, die sich natürlich nicht einfach ändern dürfen. Damit die Gefahr einer versehentliche Änderung reduziert wird, ist das Mausradverhalten unter Steuerelement-Eigenschaften schon auf "nie" gesetzt. Aktuell musste ich aber mit erschrecken feststellen, dass wenn der Cursor in einem numerischen Datensatzfeld steht (z. B. Geburtsdatum) sich der Wert mit den Hoch/Runter-Pfeiltasten verändert. Ist das so gewollt? Kann man dieses Verhalten deaktivieren?
BG

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von gogo » Mi 1. Dez 2021, 11:50

Feld sperren (deaktivieren) und nur für die Dateneingabe aktivieren,
oder vor dem Datensatzwechsel eine Abfrage, ob sich die Daten geändert haben
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RonK » Mi 1. Dez 2021, 16:14

Vielen Dank für die schnelle Antwort!

"Feld sperren (deaktivieren) und nur für die Dateneingabe aktivieren,
oder vor dem Datensatzwechsel eine Abfrage, ob sich die Daten geändert haben"

Ersteres ist doch relativ umständlich, da muss ich doch erst in Bearbeitungsmodus des Formulars, oder nicht?
Letzteres wäre eine Möglichkeit, allerdings in der Praxis wieder eine Abfrage mehr. Abgesehen davon, dass ich nicht weiß, wie man sie einrichtet...

Viel praktischer wäre es, dieses Verhalten einfach unterbinden zu können.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RobertG » Mi 1. Dez 2021, 17:08

Schreib doch einmal genauer, was für Felder ihr da einsetzt. Ein Datumsfeld ist z.B. kein numerisches Feld. Da kann ich mit den Pfeiltasten je nach Position das Jahr, den Monat oder den Tag durchscrollen.

Grundsätzlich lässt sich die Bedienung durch Pfeiltasten, wenn der Cursor in dem Formularfeld ist, nur dann unterbinden, wenn Du das Feld schreibgeschützt oder deaktiviert hast. Das gilt auch für ein formatierbares Feld, das ja für alle Zahlen und auch für Datumswerte brauchbar ist. Beim Datumswert scrollt das dann aber grundsätzlich nur durch die Tage. Lediglich das maskierte Feld macht da eine Ausnahme. Dafür ist das sonst aber recht gewöhnungsbedürftig.

Natürlich kannst Du so etwas nur einrichten, indem Du das Formular bearbeitest. Das Scrollrad der Maus ist da übrigens bei allen Formularfeldern standardmäßig sowieso deaktiviert.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RonK » Do 2. Dez 2021, 09:32

Hallo Robert,

also der Feldtyp ist Integer [INT], weil ich wollte, dass das Formularfeld nur mit Zahlen gefüllt werden kann (z. B. PLZ).
Wenn es daran liegt, sollte ich ihn vielleicht einfach in ein Textfeld umwandeln.
Allerdings habe ich auch den Feldtyp Dezimal [DECIMAL] für Preise in einem Unterformular, den ich ungern ändern möchte, da ich über eine Abfrage auch den Gesamtpreis ausgeben lasse. Da ist das Verhalten der Pfeiltasten echt blöd, weil man sich halt auch mal vertippen kann...
Wenn es im Datumsfeld generell so ist, muss ich mich halt darauf einstellen.
Von maskierten Feldern habe ich leider keine Ahnung.

Vielen Dank für die Mühe!
Ronald

PS: Datenbank ist MariaDB über jdbc.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RobertG » Do 2. Dez 2021, 11:20

Hallo Ronald,

gleich zu Anfang: Eine "Postleitzahl" ist keine Zahl. Setze die in ein Textfeld. Schließlich gibt es da, wie bei Telefonnummern, auch die führende 0. Und die verlierst Du sonst.

Das Scrollen ist lediglich beim Textfeld und beim maskierten Feld nicht vorhanden. Ich schaue einmal, ob ich Dir ein Beispiel für das maskierte Feld und das automatische Sperren eines Feldes nach der Eingabe bauen kann.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RonK » Do 2. Dez 2021, 15:53

Hallo Robert,

Du hast natürlich Recht, das mit der PLZ war wohl ein unglückliches Beispiel von mir. Die steckt schon in einem Textfeld und die anderen werde ich noch ändern.
Wäre da nur noch das Problem mit den Preisen. Ich bin auf Dein Beispiel mit den maskierten Feldern gespannt.
Danke schon mal im Voraus für Deine Mühe!

Ronald

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RobertG » Do 2. Dez 2021, 18:04

Ich habe das jetzt mit der Währungseingabe probiert. Du kannst zwar bei einem maskierten Feld fest einstellen, ob das Zahlen oder Buchstaben sein sollen. Nur legst Du damit auch die Lage des Kommas innerhalb des Feldes fest. Keine Lösung.

Dann habe ich das Währungsfeld genommen (das nicht so gut ist wie das formatierte Feld, wiel negative Beträge nicht rot erscheinen) und dort in den Eigenschaften das Intervall auf '0' gesetzt. Lässt sich eingeben und abspeichern, aber sobald ich in das Feld gehe und die Pfeiltasten betätige stürzt LO ab - unabhängig von der LO-Version.

Bleibt als einfaches Feld nur das Textfeld, in das Du natürlich auch Beträge eingeben kannst. Das Eurozeichen dahinter gepackt und alles wird in € angezeigt. Wenn aber jemand etwas falsches eingibt kommt dann eben eine Fehlermeldung der Datenbank. Scrollen ist da nicht möglich.

Bliebe also nur noch die Lösung, beim Verlassen eines Feldes dies anschließend mit einem Schreibschutz zu versehen. Das müsste über ein Makro möglich sein. Mal sehen, ob ich dafür noch neben dem anderen Kram, den ich hier mache, Zeit habe.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

RonK
Beiträge: 29
Registriert: Fr 23. Dez 2011, 16:58

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RonK » Fr 3. Dez 2021, 16:47

Herzlichen Dank für Deine Mühe!

Ich kann auch damit leben lernen, bevor die Arbeit an einer Lösung noch jeden Zeitrahmen sprengt.
Es hätte ja auch einfach eine Abschaltfunktion, wie beim Mausradverhalten, geben können.
Selbst beim Datumsfeld halte ich die Pfeiltastenfunktion für unnötig...

Offensichtlich steckt mehr dahinter als ich geahnt habe...

VG Ronald

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Pfeiltasten ändern numerischen Datensatz im Fomular

Beitrag von RobertG » Sa 4. Dez 2021, 16:15

Hallo Ronald,

hat etwas gedauert, weil ich noch andere Datenbankproblemchen lösen musste. Folgendes Makro funktioniert:

Code: Alles auswählen

SUB KeyTest(oEvent AS OBJECT)
	IF oEvent.KeyCode = 1025 OR oEvent.KeyCode = 1024 THEN
		oEvent.Source.Model.reset()
	ELSE
		oEvent.Source.Model.commit
	END IF	
END SUB
Die Tasten 1024 und 1025 sind die Pfeiltasten. Wird so eine Taste betätigt, dann stellt das Feld erst einmal die Zahl um. Das wird dann aber anschließend durch dieses Makro über "reset" wieder zurück genommen. Das Makro wird an das Ereignis "Taste gedrückt" des jeweiligen Kontrollfeldes gebunden.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten