Wir sind auf Ihre Unterstützung angewiesen!
💚 BITTE helfen Sie uns HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!
> 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. 🤗
Datensatzauswahl - (Bildlaufleiste)
Datensatzauswahl - (Bildlaufleiste)
Hi Forum,
ich sitze an einer Datenbank für einen (kleineren) Ortsgeschichtsverein, welcher Bilder und dazugehörige Informationen speichert.
Der Umstieg von Access auf Libre Base gestaltet sich allerdings bisher zäh ._.
Ich versuche eine Funktion zu implementieren, dass unbedarfte Benutzer (älteren Alters) durch die Datensätze scrollen können.
Dabei soll aber der Datensatz immer aktualisiert werden, eben wie bei Access :/
mit dem Navigationssteuerelement ist zwar das scollen möglich, aber der Datensatz wird nicht aktualisiert
Mein Gedanke war:
- eine Bildlaufleiste (von 0-100) die bei 50 startet und die Differenz beim Scrollen bestimmt wird.
Also wenn man die leiste verschiebt vor und zurück in den Datensätzen springen kann.
Dabei suche ich etwas in der Art: Bildlaufleiste.Value
um dann mit: oForm.relative(Integer) den Datensatz relativ zu ändern
da man nicht wie in Calc eine Zelle zuweisen kann (der Reiter Daten ist gar nicht vorhanden in Base)
Vielen dank schon mal
ich sitze an einer Datenbank für einen (kleineren) Ortsgeschichtsverein, welcher Bilder und dazugehörige Informationen speichert.
Der Umstieg von Access auf Libre Base gestaltet sich allerdings bisher zäh ._.
Ich versuche eine Funktion zu implementieren, dass unbedarfte Benutzer (älteren Alters) durch die Datensätze scrollen können.
Dabei soll aber der Datensatz immer aktualisiert werden, eben wie bei Access :/
mit dem Navigationssteuerelement ist zwar das scollen möglich, aber der Datensatz wird nicht aktualisiert
Mein Gedanke war:
- eine Bildlaufleiste (von 0-100) die bei 50 startet und die Differenz beim Scrollen bestimmt wird.
Also wenn man die leiste verschiebt vor und zurück in den Datensätzen springen kann.
Dabei suche ich etwas in der Art: Bildlaufleiste.Value
um dann mit: oForm.relative(Integer) den Datensatz relativ zu ändern
da man nicht wie in Calc eine Zelle zuweisen kann (der Reiter Daten ist gar nicht vorhanden in Base)
Vielen dank schon mal
Re: Datensatzauswahl - (Bildlaufleiste)
Hallo alletkla,
Poste einmal Deinen Entwurf mit Dummydaten hier. Da muss irgendwo ein Fehler drin stecken, wenn die Navigationsleiste nicht beständig neue Datensätze anzeigt.
Gruß
Robert
Genau dafür ist aber doch die Navigationsleiste da. Die Bildlaufleiste ist nur dazu gedacht, über Makros Werte in Feldern zu verändern. Mehr macht die nicht. Du könntest das natürlich nutzen, um auch damit von einem zum nächsten Datensatz zu springen - aber das macht die Navigationsleiste.
Poste einmal Deinen Entwurf mit Dummydaten hier. Da muss irgendwo ein Fehler drin stecken, wenn die Navigationsleiste nicht beständig neue Datensätze anzeigt.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Datensatzauswahl - (Bildlaufleiste)
Was meinst du mit "Entwurf",
einfach mein Formular?
Ich meine: Ich will so scrollen wie es mit der "Symbolleiste Navigation" möglich ist, allerdings möchte ich, dass auch der angezeigte Datensatz immer dem "erscrollten" entspricht.
Standardmäßig ist es so, dass wenn ich durchscrolle sich nur die Zahl ändert und wenn ich Enter drücke aktualisiert sich auch der Datensatz im Formular.
Aufgrund des Bildmaterials ist dies aber sehr unpraktisch
Aber vielen dank für die schnelle Antwort
einfach mein Formular?
Ich meine: Ich will so scrollen wie es mit der "Symbolleiste Navigation" möglich ist, allerdings möchte ich, dass auch der angezeigte Datensatz immer dem "erscrollten" entspricht.
Standardmäßig ist es so, dass wenn ich durchscrolle sich nur die Zahl ändert und wenn ich Enter drücke aktualisiert sich auch der Datensatz im Formular.
Aufgrund des Bildmaterials ist dies aber sehr unpraktisch
genau das will ich ja machen aber ich verstehe nicht, wie ich den eingestellten Wert per Code abgreifen kann, dann könnte ich ja aber das Event der Leiste selbst gehen und immer den Datensatz erblättern, wie die Leiste eingestellt ist
Aber vielen dank für die schnelle Antwort
Re: Datensatzauswahl - (Bildlaufleiste)
https://picload.org/view/doodoicw/unbenannt.png.html
direkt einfügen gehtleider irgendwie nicht
So sieht das Formular aus
die Leiste unten liefert ja neue Datensätze, wenn ich auf den Pfeil klicke, aber es geht gerade darum, dass man auch "schnell" durch die Bilder blättern kann, ohne jedes mal zu klicken
und die alten Leute in diesem ehrenamtlichen Verein hätten halt am liebsten alles wieder so wie es vorher war wer kennt es nicht
direkt einfügen gehtleider irgendwie nicht
So sieht das Formular aus
die Leiste unten liefert ja neue Datensätze, wenn ich auf den Pfeil klicke, aber es geht gerade darum, dass man auch "schnell" durch die Bilder blättern kann, ohne jedes mal zu klicken
und die alten Leute in diesem ehrenamtlichen Verein hätten halt am liebsten alles wieder so wie es vorher war wer kennt es nicht
Re: Datensatzauswahl - (Bildlaufleiste)
Hallo Alletkla,
mit Deinem Entwurf meinte ich die Datenbank (*.odb-Dateioen gehen hier nicht, hänge deshalb eine gepackte Datenbankdatei an), ohne persönliche Daten. Wenn Du da mit dem Formularnavigator nicht durch die Datensätze scrollen kannst, dann stimmt etwas nicht.
Gruß
Robert
mit Deinem Entwurf meinte ich die Datenbank (*.odb-Dateioen gehen hier nicht, hänge deshalb eine gepackte Datenbankdatei an), ohne persönliche Daten. Wenn Du da mit dem Formularnavigator nicht durch die Datensätze scrollen kannst, dann stimmt etwas nicht.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Datensatzauswahl - (Bildlaufleiste)
wenn ich das hinbekomme
Re: Datensatzauswahl - (Bildlaufleiste)
Hallo alletkla,
das Durchschalten mit der Navigationsleiste funktioniert ja. Jetzt müsstest Du beim Start des Formulars mit
den größten Wert ermitteln und der Bildlaufleiste zuweisen.
Anschließend allerdings das Formular wieder auf die Anfangsposition setzen:
Der Scrollwert muss in einer Prozedur, die mit dem Feld verbunden ist, über
ermittelt werden.
Das Formular muss auf den gewählten Wert gescrollt werden:
Habe ich jetzt nicht weiter getestet, da mir im Moment die Zeit dafür fehlt. Wenn Du nicht klar kommst - ich schaue vielleicht am Abend noch einmal nach der Sache.
Gruß
Robert
das Durchschalten mit der Navigationsleiste funktioniert ja. Jetzt müsstest Du beim Start des Formulars mit
Code: Alles auswählen
oForm.last
max = oForm.getRow
Code: Alles auswählen
oScrollField.ScrollValueMax = max
Code: Alles auswählen
oForm.first
Code: Alles auswählen
pos = oScrollField.getValue()
Das Formular muss auf den gewählten Wert gescrollt werden:
Code: Alles auswählen
oForm.absolute(pos)
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Datensatzauswahl - (Bildlaufleiste)
Vielen Dank für die Antwort, die kann ich soweit nachvollziehen.
Allerdings bekomme ich immer wieder einen Laufzeitfehler: Objektvariable nicht belegt
in der Zeile. Mein Element heißt aber oScrollfield... und laut Onlinehilfe gibt es "Scroll value max" auch. Kann mit dem Fehler nichts anfangen
Ansonsten habe ich genau nach sowas wie "getValue" gesucht. Schade, dass es kaum eine gute Onlinedokumentation zu den Objekten und ihren Eigenschaften gibt (zumindest findet man nicht direkt was außer allgemeine Wiki Einträge, die die Funktion der Elemente erklären)
Allerdings bekomme ich immer wieder einen Laufzeitfehler: Objektvariable nicht belegt
Code: Alles auswählen
oScrollfield.ScrollValueMax = max
Ansonsten habe ich genau nach sowas wie "getValue" gesucht. Schade, dass es kaum eine gute Onlinedokumentation zu den Objekten und ihren Eigenschaften gibt (zumindest findet man nicht direkt was außer allgemeine Wiki Einträge, die die Funktion der Elemente erklären)
Re: Datensatzauswahl - (Bildlaufleiste)
Hallo Alletkla,
nach meinem Blick auf Deine Beispieldatenbank erhältst Du das Scrollfeld über
oForm ermittelst Du aus dem Event (Formular wird eingelesen, oForm = oEvent.Source.Model)
Die Variable muss übrigens als globale Variable am Anfang der Prozedur stehen, da sie sonst nur in der Prozedur selbst kurz auftaucht und beim Scrollen nicht mehr zur Verfügung steht.
Schau Dir dazu vielleicht einmal ein bisschen das Handbuch für Base an.
Nutze zur Ermittlung der Eigenschaften das Tools xray.
Ich habe hier noch das Makro-Buch von Thomas Krumbein in der Fassung von 2008. Hat mir beim Einstieg sehr geholfen.
Gruß
Robert
nach meinem Blick auf Deine Beispieldatenbank erhältst Du das Scrollfeld über
Code: Alles auswählen
oScrollfield = oForm.getByName("Bildlaufleiste 1")
Die Variable muss übrigens als globale Variable am Anfang der Prozedur stehen, da sie sonst nur in der Prozedur selbst kurz auftaucht und beim Scrollen nicht mehr zur Verfügung steht.
Code: Alles auswählen
GLOBAL max AS LONG
Nutze zur Ermittlung der Eigenschaften das Tools xray.
Ich habe hier noch das Makro-Buch von Thomas Krumbein in der Fassung von 2008. Hat mir beim Einstieg sehr geholfen.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Datensatzauswahl - (Bildlaufleiste)
Problem ist jetzt ich würde gerne bei Mousup die Scrolleiste wieder mitteln, dass man wieder relativ zum momentanen Datensatz scrollen kann, geht das? Oder zumindest, wenn man einen Button klickt, aber das sollte ja dann analog sein
Code sieht jetz so aus:
kommt aber wieder OBjektvariable nicht belegt
Zweite Variante die ich mir gedacht hatte war:
hier kommt wiederum "Methode nicht gefunden"
Code sieht jetz so aus:
Code: Alles auswählen
PUBLIC posr as Integer
PUBLIC oScrollfieldevent as Object
sub open_main_form
oController= ThisDatabaseDocument.CurrentController
If NOT (oController.isConnected() ) Then oController.connect()
ThisDatabaseDocument.formdocuments.getbyname("Suchmaske").open
posr = 0
End sub
sub Scrollbar_Aenderung(oEvent as Object)
Dim oSCrollfield as Object
Dim oform2 as Object
'Variablen initialisiert
oScrollfieldevent = oEvent
oScrollfield = oEvent.Source.Model
oForm2 = oSCrollfield.Parent
'Oform2.last
'max = oform2.getrow
pos = oEvent.Value
If pos < posr Then
posr = -1
Else
posr = 1
EndIf
Oform2.relative(posr)
posr = oEvent.Value
End Sub
Sub Scrollbar_mouseup(oEvent as Object)
Dim oform2 as Object
'Variablen initialisiert
oScrollfieldevent.Value = 50
End sub
Zweite Variante die ich mir gedacht hatte war:
Code: Alles auswählen
Sub Scrollbar_mouseup(oEvent as Object)
Dim oform2 as Object
Dim oFeld as Object
'Variablen initialisiert
'oScrollfieldevent.Value="50"
oform2 = thisComponent.drawpage.forms.getByName("Eingabe Bilddaten Ortsarchiv")
oFeld = oForm2.getByName("oScrollfield")
ofeld.value = 50
End sub
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 ❤️