Seite 1 von 1

[gelöst] per Makro Listfeld in Unterformular auslesen

Verfasst: Di 2. Nov 2021, 18:05
von WbrunoT
Guten Abend,

ich scheitere am Zugriff auf ein Listfeld im Unterformular:
Im Listfeld (erstes Element im Unterformular) wird aus Tabelle "T_Artikel" eine ArtikelID (Integer) ermittelt und gespeichert.
Über diese ArtikelID soll im Makro (ausgelöst durch das Listfeld) per Abfrage der VKPreis ermittelt werden. Ich schaffe es nicht, die ArtikelID für die entsprechende Abrfage aus dem Listfeld auszulesen.

Mein Code (sorry, wie wird Code im separaten Feld angezeigt?):

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oField = oEvent.Source.Model ' funktioniert, wenn Kontrollfeld (z.B. bei Änderung) auslösendes Element ist
oForm = oField.Parent
iID = oField.BoundField.Value ' Beispiel für ein numerisches Feld
'iID = oField.ValueItemList(oField.SelectedItems(0)) ' ArtikelID
msgbox oField.getCurrentValue()

Es wird kein Wert angezeigt.
Danke für einen Tipp.

Re: per Makro Listfeld in Unterformular auslesen

Verfasst: Di 2. Nov 2021, 19:48
von karolus
Hallo
es ist eher Wahrsagerei aus den gegebenen Informationen zu antworten!

Da du offenbar schon ein event-objekt benutzt, würde ich dieses mittels mri untersuchen

Code: Alles auswählen

…
…
mri(oEvent.Source)
sorry, wie wird Code im separaten Feld angezeigt?)
indem du auf den </> button drückst und deinen Code zwischen den Code-tags einfügst:
[code_ ] …… [ /code] ohne _unterstrich und Leerzeichen

Re: per Makro Listfeld in Unterformular auslesen

Verfasst: Mi 3. Nov 2021, 17:24
von WbrunoT
Danke, werde es durchkauen.

Code: Alles auswählen

...
 Test  :-) 

Re: per Makro Listfeld in Unterformular auslesen

Verfasst: Mi 3. Nov 2021, 18:36
von WbrunoT
Guten Abend karolus,
ich habe mri erfolgreich als Extention in LO geladen, bekomme bei Aufruf im Code auch das MRI-Fenster.
Über eine Schaltfläche im Formular F_neue_Rechnung, welches das Unterformular RechnDetail enthält, löse ich folgendes Makro aus:

Code: Alles auswählen

Sub MeinTest
	DIM oDoc AS OBJECT, oDrawpage AS OBJECT
	DIM oForm AS OBJECT, oSubForm AS OBJECT
	
	oDoc = thisComponent
	oDrawpage = oDoc.drawpage
	oForm = oDrawpage.forms.getByName("neue_Rechnung")
	oSubForm = oForm.getByName("RechnDetail")
	mri oSubform
End Sub
Ich habe im Netz nach einer Kommentierung gesucht, wie die Angaben gelesen werde können. Leider nichts gefunden.
Das Unterformular hat die Spalten Artikel (Listenfeld), Anzahl, Einzelpreis und Endpreis.

Den Code in meinem ersten Post habe ich einem älteren Post von Robert Großkopf entnommen.

Code: Alles auswählen

https://users.de.libreoffice.narkive.com/46CM1bVA/base-formular-datenfeld-per-makro-auslesen
Hat mir aber nicht weitergeholfen, da es dort nicht um ein Unterformular geht.

Arbeite mit LO 7.1.5.2 (x64). Was brauchst du noch, um keine Glaskugel zu brauchen? Ich kenne aus ACCESS vba die Methode, wie man ein Kontrollfeld in einem Unterformular anspricht. Gibt es in LO Base vba nicht vergleichbares? Das Handbuch (S.453f) hilft mir leider auch nicht weiter.

Ich habe im Forum auch den Link zu einer odb gefunden, die im Kern das leistet, was ich suche. Allerdings wird dort (exzessiv) mit schier endlosen SQL gearbeitet, die ich noch nicht nachvollziehen konnte. Ich habe immer den Weg über vba bevorzugt.

Vielen Dank für deine Geduld.

Re: per Makro Listfeld in Unterformular auslesen

Verfasst: Do 4. Nov 2021, 17:20
von WbrunoT
Für alle, die reingeschaut haben und vielleicht dasselbe (Anfänger)problem haben, hier ein Link (englisch), unter dem ich die Lösung gefunden habe:

https://stackoverflow.com/questions/508 ... ibreoffice

Viel Erfolg