Hi,
ich habe eine Tabelle in einem Subformular und will daraus Werte auslesen.
Mein Weg klappt zwar, scheint mir aber höchst kompliziert und bricht auch sofort zusammen, wenn man etwas an der Struktur des Formulars ändert. Hoffentlich weiß jemand was besseres:
1) thisComponent zuweisen
2) Formular auf der obersten Ebene selektieren
3) daraus das untergeordnete Formular ansprechen
4) darin die Tabelle selektieren
5) daraus die gewünschte Spalte wählen
6) daraus den aktuellen Wert entnehmen
Warum geht nicht:
1) s.o.
2) gleich das Unterformular, besser noch die Tabelle ansprechen
Hier mein Code:
Dim oForm as Object 'darin wird das Formular gespeichert
Dim oSubForm as Object 'für das Subformular
Dim oDoc as Object 'das eigentliche Dokument
Dim oTabelle as Object 'Artikelauswahltabelle
Dim oElement as Object 'Tabellenspaltenwert
Dim nPreis as Double 'Preis aus Tabelle
oDoc=thisComponent
oForm=oDoc.DrawPage.Forms("Bestellnr")
oSubForm=oForm.getByName ("Bestellungen")
oTabelle=oSubForm.getByName("Artikelauswahl")
oElement = oTabelle.getByName("Preis")
nPreis = oElement.GetCurrentValue()
msgbox "Aktueller Preis: " & nPreis
Bin für jeden Tipp dankbar!
Andreas
Verständnisfrage zu verschachtelten Formularen
Moderator: Moderatoren
Hallo Andreas,
nun ja, das ist halt nun mal der Objektbaum. Den brauchst du schon, um an ein so "tief" verschachteltes Objekt zu kommen. Du kannst das natürlich auch in einer Zeile zusammenfassen - das Prinzip bleibt aber das gleiche
Aber ob das übersichtlicher ist???
Gruss
Thomas
nun ja, das ist halt nun mal der Objektbaum. Den brauchst du schon, um an ein so "tief" verschachteltes Objekt zu kommen. Du kannst das natürlich auch in einer Zeile zusammenfassen - das Prinzip bleibt aber das gleiche

Code: Alles auswählen
nPreis = thisComponent.DrawPage.Forms("Bestellnr").getByName ("Bestellungen").getByName("Artikelauswahl").getByName("Preis").GetCurrentValue()
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Na, das kann ich in 2 Monaten gar nicht mehr verstehen 
Ich hätte mir gewünscht, dass man jedes Objekt direkt ansprechen kann. Schließlich hat jedes einen eindeutigen Namen. Denn wenn ich die Baumstruktur ändere bleibt doch die Funktionalität der Felder gleich. Und mit dem Abbilden der Struktur im Basic-Code erzeuge ich natürlich feste Strukturen, die dann ggf. nicht mehr mit der "Realität" übereinstimmen.
Merci für den Einzeiler
Andreas

Ich hätte mir gewünscht, dass man jedes Objekt direkt ansprechen kann. Schließlich hat jedes einen eindeutigen Namen. Denn wenn ich die Baumstruktur ändere bleibt doch die Funktionalität der Felder gleich. Und mit dem Abbilden der Struktur im Basic-Code erzeuge ich natürlich feste Strukturen, die dann ggf. nicht mehr mit der "Realität" übereinstimmen.
Merci für den Einzeiler

Andreas
Hallo Andreas,
Das ist immer so. Denk mal an den Herrn "Müller". Ist ein eindeutiger Name
. Um Ihn zu identifizieren, brauchst du einfach den kompletten Namen (Verezichnisbaum - also z.B. der Artur Müller aus Hintertupfingen in der Blumenstrasse 5....
Und so ist da mit den Objekten eben auch.
Dein Kontrollelement heisst "Preis", so kann aber auch ein anderes Kontrollelement auf einem anderen Formular heissen, oder zum Beispiel eine Calctabelle oder eine Grafik. Dieser Name ist somit nicht eindeutig.
Viele Grüße
Thomas
Na ja, kannst du ja. Nur: Der Name eines Objektes ist eben nur eindeutig über den gesammten Verzeichnisbaum.Ich hätte mir gewünscht, dass man jedes Objekt direkt ansprechen kann.
Das ist immer so. Denk mal an den Herrn "Müller". Ist ein eindeutiger Name

Und so ist da mit den Objekten eben auch.
Dein Kontrollelement heisst "Preis", so kann aber auch ein anderes Kontrollelement auf einem anderen Formular heissen, oder zum Beispiel eine Calctabelle oder eine Grafik. Dieser Name ist somit nicht eindeutig.
Na ja, Festlegungen muss man schon treffen. Andererseits kannst du natürlich auch flexible Strukturen abbilden: Alle Objekte sind auch über Indices erreichbar, dann musst du halt Schleifen zur Suche über alle Indizes programmieren - und somit dein Objekt eindeutig identifizieren. Technisch ist das möglich - ja manchmal sogar notwendig, der Namenszugriff ist aber immer einfacher.Und mit dem Abbilden der Struktur im Basic-Code erzeuge ich natürlich feste Strukturen, die dann ggf. nicht mehr mit der "Realität" übereinstimmen.
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic