Datensatzauswahl - (Bildlaufleiste)

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Alletkla
Beiträge: 21
Registriert: Di 15. Mai 2018, 15:54

Datensatzauswahl - (Bildlaufleiste)

Beitrag von Alletkla » Di 15. Mai 2018, 15:59

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



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

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von RobertG » Di 15. Mai 2018, 16:42

Hallo alletkla,
Alletkla hat geschrieben:
Di 15. Mai 2018, 15:59
mit dem Navigationssteuerelement ist zwar das scollen möglich, aber der Datensatz wird nicht aktualisiert
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

Alletkla
Beiträge: 21
Registriert: Di 15. Mai 2018, 15:54

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von Alletkla » Di 15. Mai 2018, 18:17

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
RobertG hat geschrieben:
Di 15. Mai 2018, 16:42
Die Bildlaufleiste ist nur dazu gedacht, über Makros Werte in Feldern zu verändern. Mehr macht die nicht.
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 :)

Alletkla
Beiträge: 21
Registriert: Di 15. Mai 2018, 15:54

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von Alletkla » Di 15. Mai 2018, 18:25

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 :D wer kennt es nicht

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

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von RobertG » Di 15. Mai 2018, 20:40

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

Alletkla
Beiträge: 21
Registriert: Di 15. Mai 2018, 15:54

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von Alletkla » Di 15. Mai 2018, 20:49

180111_01_DB_Ortsarchiv.7z
(36.57 KiB) 14-mal heruntergeladen
Ich kann mich dadurch bewegen, aber eben nur mit klicks und nicht mit dem Scrollrad, ich werde mal versuchen dies zu tun ^^

wenn ich das hinbekomme :D

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

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von RobertG » Do 17. Mai 2018, 16:09

Hallo alletkla,

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
den größten Wert ermitteln und der Bildlaufleiste zuweisen.

Code: Alles auswählen

oScrollField.ScrollValueMax = max
Anschließend allerdings das Formular wieder auf die Anfangsposition setzen:

Code: Alles auswählen

oForm.first
Der Scrollwert muss in einer Prozedur, die mit dem Feld verbunden ist, über

Code: Alles auswählen

pos = oScrollField.getValue()
ermittelt werden.
Das Formular muss auf den gewählten Wert gescrollt werden:

Code: Alles auswählen

oForm.absolute(pos)
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

Alletkla
Beiträge: 21
Registriert: Di 15. Mai 2018, 15:54

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von Alletkla » Do 17. Mai 2018, 20:43

Vielen Dank für die Antwort, die kann ich soweit nachvollziehen.

Allerdings bekomme ich immer wieder einen Laufzeitfehler: Objektvariable nicht belegt

Code: Alles auswählen

oScrollfield.ScrollValueMax = max
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)

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

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von RobertG » Do 17. Mai 2018, 21:22

Hallo Alletkla,

nach meinem Blick auf Deine Beispieldatenbank erhältst Du das Scrollfeld über

Code: Alles auswählen

oScrollfield = oForm.getByName("Bildlaufleiste 1")
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.

Code: Alles auswählen

GLOBAL max AS LONG
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

Alletkla
Beiträge: 21
Registriert: Di 15. Mai 2018, 15:54

Re: Datensatzauswahl - (Bildlaufleiste)

Beitrag von Alletkla » Do 17. Mai 2018, 21:51

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:

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
kommt aber wieder OBjektvariable nicht belegt

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
hier kommt wiederum "Methode nicht gefunden"



Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste