Seite 2 von 2

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Verfasst: Do, 23.12.2010 09:37
von Benutzer 32208 gelöscht
Hallo Leute,

Ich habe eure Diskussion hier sehr aufmerksam gelesen, und sie hat mir auch wirklich geholfen ein sehr ähnliches Problem im Grunde zu lösen. Allerdings verhält es sich bei mir noch ein wenig komplizierter. Ich habe euch unten mal meine Formular Übersicht angefügt.
Eine kurze Erklärung: Das Primäre Ziel des Formulars ist es Teilnehmer für zu einer Schulung (Schulungs ID + Datum) einzugeben. Schulungs ID ist ein Listenfeld, welches wenn aktualisiert die entsprechenden Informationen im Subformular Infoschulung auswerfen soll. Diese Infos sollen nicht verändert werden. Die Primäre Dateneingabe erfolgt über die Auswahl einer SChulungs ID und der Eingabe eines Datums. Diese werden in die Tabelle(Schulungsvorgang) eingespeist. Die Teilnehmer werden dann eingegeben und in einer Tabelle(Mischu) mit dem PrimaryKey der Tabelle Schulungsvorgang als Foreign key gespeichert.

Mein Problem ist nun, dass mit dem Makro welches auf das Feld SchulungsID angewendet wird, alle Felder aktualisieren. Mein Plan ist es aber, dass sich nur die Die Infofelder aus dem Subformular Infoschulung Aktualisieren welches seine Daten aus der Tabelle Schulungen bezieht.

Ist mein Problem soweit verständlich?

Vielen Dank Für eure Hilfe und eine Frohe Weihnachtszeit!!!!


Infos: XP, OOo3.2.1 mit allen benötigten teilen + JRE installiert.

Macro code:

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("Listenfeld 1")
	LB_Item = oListbox.SelectedItems(0)	
	oform.absolute (LB_Item+1)
End Sub

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Verfasst: Fr, 25.11.2011 19:27
von vueloman
Noch ein Code der das gleiche macht aber das Event der Listbox verwendet und damit selber die Tabelle und und das zu filternde Feld erkennt. Sie müss also nicht jedes mal angepasst werden und das Makro kann in mehreren Formularen verwendet werden.

Code: Alles auswählen

    Sub SelectListbox2(oEvent)
       Dim oModelo, oForm
       Dim sCampo$, iItemSeleccionado%, sValorSelecc$, sFiltro$
       oModelo = oEvent.Source.Model
       sCampo = oModelo.DataField
       iItemSeleccionado = oModelo.SelectedItems(0)
       sValorSelecc = oModelo.ValueItemList(iItemSeleccionado)
	'msgbox sValorSelecc
       oForm = oModelo.Parent
       sFiltro = """" + sCampo + """='" + sValorSelecc + "'"
       oForm.updateRow()
       oForm.Filter = sFiltro
       oForm.ApplyFilter = True
       oForm.reload()
    End Sub
Wobei die Liste im Beispiel als Datenfeld die Bezeichnung verwendet besser wäre das ID Schlüsselfeld zu verwenden.

Ich habe noch ein bisschen ausprobiert:
1. eine Tabelle Bundesländer eingefügt die über ein ID_Bundesland in der Tabelle Bezeichnung verbunden ist.
2. eine Liste mit einer SQL GOUP BY Anweisung um nur die Bundesländer die verwendet worden sind und dise auch nur einmal anzuzeigen.
3. Die liste ruft nach dem wechseln das obrige Makro auf zeigt dann aber natürlich nur die Zeilen die auch in ID_Bundesland der Tabelle Bezeichnung einen Eintrag haben.

Ich verwende LibreOffice 3.4.4 mit W7

Re: Datensatz suchen über Kombinations- bzw. Listenfeld

Verfasst: So, 27.11.2011 18:59
von Noebian
Deutlich einfacher und ohne Makro funtkioniert es, wenn man ein Tabellen-Kontrollfeld ins Formular einbindet, das die gewünschten Felder (zb Name und Vorname) anzeigt, während der Rest des Formulars die Details des selektierten Datensatzes anzeigt. Ich komme auch von Access her - und bin am lernen, dass Base eben nicht Access ist und man andere Wege gehen kann und muss. Mittlerweile gefällt mir diese Lösung besser als die Combobox.