Datensatz suchen über Kombinations- bzw. Listenfeld

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Alise
Beiträge: 7
Registriert: Fr, 08.01.2010 18:56

Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von Alise »

Hallo zusammen,
ich würde gerne wissen, wie ich einen Datensatz über ein Listen- bzw. Kombinationsfeld im gleichen Formular anzeigen lassen kann.
Wenn ich in Access ein solches Feld erstellt habe, kam immer die Frage, ob ich dieses Kombinationsfeld dazu benutzen möchte um einen bestimmten Datensatz im Formular zu suchen und anzeigen zu lassen. Wie aber geht das in Base? Gibt es hierfür ein Macro? Wenn ja, wie muss dieses Macro aussehen?
Vielen Dank schon mal für die Antwort
Alise
hobby
*
Beiträge: 13
Registriert: Sa, 01.05.2010 19:11

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von hobby »

Hallo Alise,

du möchtest also bspw. mittels einer Listbox einen Datensatz selektieren?

Nunja, ich bin ebenfalls Umsteiger und bin somit auch Base-Anfänger.
Durch SuFu habe ich jedoch herausgefunden, dass das in Base nur umständlich und kompliziert über zu programmierende Makros geht...
Auch ich stehe nämlich noch vor dem gleichen Problem.

Möge es einen einfacheren Weg, als (nötig komplizierte Makros geben, wird uns sicherlich jemand von hier eines besseren belehren.

Viel Erfolg noch.
Systeminfos:
OOo 3.2.0, HSQL, Windows 7 (32bit)
Alise
Beiträge: 7
Registriert: Fr, 08.01.2010 18:56

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von Alise »

Hallo hobby,
du hast das Problem erfasst. Schade irgendwie hat wohl keiner eine Lösung.
Wäre so praktisch und in Access so einfach. Na ja, vielleicht klappt`s ja noch.
Wenn nicht, muss man halt die Suchfunktion hernehmen.
Danke für deine Antwort.
Dir auch noch viel Erfolg beim Umstieg.
Bis dann
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von turtle47 »

Hallo Zusammen,
hobby hat geschrieben:dass das in Base nur umständlich und kompliziert über zu programmierende Makros geht...
Nuja, wenn das folgende kleine Makro mit dem Ereignis "Status geändert" der Listbox verbunden ist:

Code: Alles auswählen

Sub SelectListbox
Dim oForm, oListbox As Object
Dim LB_Item as integer
	oForm = ThisComponent.drawpage.forms.getbyindex(0)	
	oListbox = oForm.getByName("ListBox1")
	LB_Item = oListbox.SelectedItems(0)	
	oform.absolute (LB_Item)
End Sub
stelle ich das "umständlich und kompliziert" mal in Frage. :wink:

Hier noch ein Beispiel dazu.
Listbox Select.odb
(73.16 KiB) 2628-mal heruntergeladen
Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Alise
Beiträge: 7
Registriert: Fr, 08.01.2010 18:56

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von Alise »

Hallo Jürgen,
hab viiiiiiielen herzlichen Dank. Funktioniert (fast) hervorragend.
Das fast bezieht sich auf eine Kleinigkeit. Wieso zeigt er mir im Formular nicht den angeklickten Datensatz an, sondern den, der eins weiter vorne ist?
Z.B. klicke ich Breumeier (Datensatz 7) an, es kommt aber Bernsteiner (Datensatz 6), der Datensatz eben, der vor Breumeier ist.
Kann man das noch hinkriegen oder muss man eben damit leben?
Lieben Gruß
Alois
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von turtle47 »

Hi Alois,
Alise hat geschrieben:Wieso zeigt er mir im Formular nicht den angeklickten Datensatz an, sondern den, der eins weiter vorne ist?
Hmm, kann ich nicht nachvollziehen.
Habe die auf meinem Sytem angemeldete Datenbank abgemeldet, OO.o inkl. Schnellstarter beendet. Die Datei selber nochmal runtergeladen und in einem anderen Ordner gespeichert.
Dann diese angemeldet und getestet > Auswahl und Anzeige stimmen über ein.

Vielleicht etwas besser zielen mit der Maus? :wink:

Kann Dir sonst leider nicht sagen wo das Problem ist.

Sonst mal folgende Codezeile ersetzen:

Code: Alles auswählen

oform.absolute (LB_Item +1)
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Alise
Beiträge: 7
Registriert: Fr, 08.01.2010 18:56

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von Alise »

Hallo Jürgen, vielen Dank für die schnelle Antwort.
Werde das, was du mir rätst mal ausprobieren.
Bin ja schon zufrieden wie es momentan läuft und hab mich riesig darüber gefreut, dass es so gut funktioniert. :D
Noch eine schöne Zeit.
Gruß
Alois
hobby
*
Beiträge: 13
Registriert: Sa, 01.05.2010 19:11

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von hobby »

turtle47 hat geschrieben:[...]stelle ich das "umständlich und kompliziert" mal in Frage. :wink:
Hallo Alois & Jürgen!

Vielen Dank Jürgen, in diesem Falle nehme ich alles zurück!
Danke nochmals! Ich frage mich nur, warum die Resonanz so gering ist (vgl. auch mein erstelltes Thema mit dem gleichen Problem), wobei es doch so ein kleines Makro ist und darüberhinaus auch noch so (wie ich finde) essentiell!!!?
Alise hat geschrieben: Wieso zeigt er mir im Formular nicht den angeklickten Datensatz an, sondern den, der eins weiter vorne ist?
Bist du dir sicher, Alois, dass dieses in Jürgens angehängter DB passiert und nicht nur in deiner?
Der Grund ist nämlih, dass Jürgen´s erster ID-Eintrag mit Nr. 1 beginnt (vermutlich da kein Auto-Wert). In deiner, wie auch meiner, DB haben wir bei ID Auto-Wert und dieser beginnt mit 0 (und nicht wie bei Jürgen mit 1) und somit ist die ID-Nr. aus der Tabelle nicht identisch mit der Nr. der Reihenfolge in der Listbox.
Daher ist die von Jürgen hinzugefügte Ergänzung notwendig:

Code: Alles auswählen

oform.absolute (LB_Item +1)

Eine Kleinigkeit noch: Bei deiner DB bleibt der Eintrag in der Listbox nach Auswahl noch ordentlich markiert; bei mir nicht. Hast du (oder jemand anderes) vielleicht eine Idee, warum???

Nochmals herzlichen Dank und beste Grüße!
:-P

Manuel
Systeminfos:
OOo 3.2.0, HSQL, Windows 7 (32bit)
ddraht
***
Beiträge: 60
Registriert: Di, 06.04.2010 16:35
Wohnort: Altenberge

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von ddraht »

Hallo Alise,

sollte der falsche Datensatz angezeigt werden, so hast du vielleicht den Listeninhalt sortiert.
Amateurhaft ausgedrückt: Wenn Liste und Tabelle eine andere Sorierung haben passen die Zeilen nicht übereinander. ;)

Gruß
ddraht
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
Alise
Beiträge: 7
Registriert: Fr, 08.01.2010 18:56

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von Alise »

Hallo zusammen,
also bei mir waren zunächst die Datensätze in der Listbox nicht sortiert und es wurde trotzdem der nächste angezeigt. Die ID ist bei mir tatsächlich ein Autowert. Was Jürgen geschrieben hat, dass er die Datei nochmals entfernt, einen anderen Ordner angelegt und von dort wieder gestartet hat, habe ich noch nicht ausprobiert. Allerdings habe ich dann die Listbox einmal anders sortiert und was soll ich sagen, da hat dann gar nix mehr funktioniert. Jürgens Vorschlag bezgl. entfernen und neu installieren werde ich also noch ausprobieren, sodass auch wirklich der angezeigte Datensatz angezeigt wird.
Warum bei dir, Manuel die Anzeige weg ist, kann ich leider nicht nachvollziehen. :(
Habt alle zusammen vielen herzlichen Dank, dass ihr auf meine Frage geantwortet habt.
Viele Grüße
Alois
nahemoth
**
Beiträge: 29
Registriert: Do, 20.08.2009 08:27

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von nahemoth »

hm, bei mir funktioniert das nicht ... ich habe ein tabellenkontrollfeld in dem die ausgabe erfolgt und einee combobox in der die Namen nach denen gefiltert werden soll aufgelistet werden. wenn ich nun einen Namen auswähle, passiert nichts, es werden immernoch alle datensätze angezeigt.
mein basic-code:

Code: Alles auswählen

Sub SelectCombobox
Dim oForm, oCombobox As Object
Dim LB_Item as integer
   oForm = ThisComponent.drawpage.forms.getbyindex(0)   
   oCombobox = oForm.getByName("Combobox1")
   LB_Item = oCombobox.Text
   msgbox(LB_Item)
   oform.absolute (LB_Item)
End Sub
ich habe mal, um zu sehen, was er aus der combobox holt, ein popup eingebaut, aber darin steht immer "0", egal welchen namen ich wähle.
hat wer nen tipp ?

danke !
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von turtle47 »

Hallo,

Code: Alles auswählen

Sub SelectListbox
Dim oForm, oListbox As Object
Dim LB_Item as integer
	oForm = ThisComponent.drawpage.forms.getbyindex(0)	
	oListbox = oForm.getByName("ListBox1")
	print "Position: " & oListbox.SelectedItems(0)
	print "Gewähler Eintrag: " & oListbox.getCurrentValue	
End Sub
sollte Deinen Erwartungen entsprechen.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
nahemoth
**
Beiträge: 29
Registriert: Do, 20.08.2009 08:27

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von nahemoth »

hm, es is aber ne combobox und da gibts kein SelectedItems(0)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von turtle47 »

Ehrlich gesagt weis ich jetzt nicht nicht was Du haben willst?
Den gewählten Eintrag oder die Position?
Wenn ich dem nachgehe
nahemoth hat geschrieben:einee combobox in der die Namen nach denen gefiltert werden soll
dann sollte der gewählte Eintrag doch vollkommen ausreichen!


Du machst es Dir wirklich recht einfach.
Zum einen hälst Du es nicht für nötig die Shift-Taste zu benutzen um das Schriftbild erträglich zu machen,
und zu anderen bringt Tante Google bei den ensprechenden Suchbegriffen sofort einen Treffer zur Lösung.

Ausserdem hatten wir hier fast schon einmal die gleiche Diskussion.

Das war's von mir.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
nahemoth
**
Beiträge: 29
Registriert: Do, 20.08.2009 08:27

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Beitrag von nahemoth »

Ich habe eine Liste von Datensätzen, in einer Combobox soll man alle in dem Attribut Name vorkommenden Namen zur Auswahl haben.
Wird dann einer Ausgewählt, so sollen nur die entsprechenden Datensätze ausgegeben werden.
Was verstehst du daran nicht ?

Hier mal noch, wie ich das ganze aufgebaut habe:

Tabellen:
- t_Users -> enthält Benutzer
- t_Logins -> enthält Login-Daten

Formular:
Art des Inhalts: Tabelle
Inhalt: t_Logins

Combobox:
Datenfeld: Name
Listeninhalt: SELECT DISTINCT `Name` FROM `weblogin`.`t_users`

Tabellenkontrollfeld

Makro:

Code: Alles auswählen

Sub SelectCombobox

	Dim oForm As Object
	Dim oCtrlModel As Object
        Dim oTabellenKontrollfeld as Object

	oForm = ThisComponent.drawpage.forms.getbyindex(0)
	oCtrlModel = oForm.getByName("Combobox")
	value = oCtrlModel.Text
		msgbox(value)
 	
 	 oTabellenKontrollfeld = oForm.getByName("Tkf")
 	 oTabellenKontrollfeld.Filter = value
	 oTabellenKontrollfeld.ApplyFilter = True
	 oForm.Reload

End Sub
Wenn ich nun in der Combobox einen Eintrag auswähle, dann gibt er diesen auch korrekt in der Msgbox aus, aber an dem tabellenkontrollfeld ändert sich nichts. Er sollte aber nun lediglich die Datensätze Anzeigen, die den Namen matchen.
Das ist das ganze Problem.

Ich hoffe mich versteht man jetzt etwas besser.

Edit:

jetzt hats geklappt:

Code: Alles auswählen

Sub SelectCombobox

	Dim oForm As Object
	Dim oCtrlModel As Object
	Dim oTabellenKontrollfeld As Object

	oForm = ThisComponent.drawpage.forms.getbyindex(0)
	oCtrlModel = oForm.getByName("Combobox")
	value = oCtrlModel.Text
 	
 	oTabellenKontrollfeld = oForm.getByName("Tkf")
	oForm.Filter = "(`weblogin`.`t_logins`.`Name` = "& "'"& value & "')"
	oForm.applyFilter = True
	oForm.Reload
	
End Sub
Antworten