Von Formular Wert auslesen.

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Von Formular Wert auslesen.

Beitrag von fichte.buche »

Hallo,

Ich hab ein Datenbankformular und hab vorher ein numerische Feld.
Dort kann ich mit

Code: Alles auswählen

 xyz = Field.value 
den Wert auslesen.

Ich hab das Feld jetzt auf ein Formatiertes Feld geändert.
Jetzt kommt eine Fehlermeldung an dieser Stelle
Wenn ich es mit

Code: Alles auswählen

 xyz = Field.Text 
versuche, kommt zwar keine Fehlermeldung, aber der Wert ist dann leer.


Wie funktioniert das bei Formtierten Feldern?

Viele Grüße
Fichte.Buche
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey fichte.buche,

Tia, das formatierte Feld ist eine Besonderheit des Numerischen Feldes, mit eigener Beschreibung in der API (com.sun.star.awt.UnoControlFormattedFieldModel).
Und du hast recht: hier gibt es keine "Value" Eigenschaft mehr.
Den Wert musst du jetzt über die "Text" Eigenschft auslesen - und erhällst einen String! Das funktioniert schon (zumindest in der Version 1.9.x, mit denen ich arbeite.
...versuche, kommt zwar keine Fehlermeldung, aber der Wert ist dann leer.
Sollte nicht sein, es sei denn, xyz ist schon als Zahlenvariable definiert gewesen. Dann wird automatisch versucht, das Ergebnis umzusetzen, vielleicht liegt hier der Fehler? Oder, wie stellst du fest, das die Variable leer ist? Dort sollte jetzt ein String drin sein!

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Geht leider nicht

Beitrag von fichte.buche »

Danke Toxitom,

Ich hab das noch einmal ausprobiert, aber in diesem Fall funktioniert es nicht. Ich bin jetzt auf folgendes Problem gestoßen.

Ich hab die Spalte (Formatiertes Feld) des Unterformulars mit 0,00% formatiert.
Wenn ich jetzt den Entwicklungsmodus verlasse, werden die Daten richtig angezeigt.
Allerdings nach dem abspeichern und schließen des Formulars und erneutem öffnen werden keine Daten in dieser Spalte angezeigt.
Geh ich wieder in den Entwicklungsmodus wird auch keine Formatierung mehr angezeigt. Leg ich diese wieder neu fest, dann geht es für das eine mal.

Formatier ich allerdings auf Standardzahl, dann funktioniert es auch nach dem Schließen und wieder Öffnen.

Interessant ist, daß ich in einem anderen Formular fast das gleiche Unterformular habe, das auf die gleiche Abfage zugreift habe und dort geht auch die 0,00% Formatierung

Woran kann das liegen? (OOo1.9.122)

Viele Grüße
Fichte.Buche
fichte.buche
***
Beiträge: 55
Registriert: Di, 29.03.2005 12:38

Geht auch sonst nicht

Beitrag von fichte.buche »

Hallo,

Ich hab jetzt nochmals herumprobiert und festgestellt, daß auch bei Formatierten Feldern, die kein Problem mit der Formatierung haben das
[code] xyz = Field.Text [/code]
und anschließend dem überprüfen mit
[code] msgbox xyz [/code]
die Variable xyz leer ist.

Stell ich wieder um auf ein numerisches Feld und ändere auf
[code] xyz = Field.Value [/code]
dann funktioniert das auslesen aus dem Formular.

Kann mir noch jemand weiterhelfen?

Viele Grüße
Stefan
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Stefan,
Kann mir noch jemand weiterhelfen?
Ich hab deinen Fall eben mal ausprobiert: ein formatiertes Feld in einer Maske angelegt: Formatcode "AB #.##0,00" , den Dialog aufgerufen, 23 eingetragen, es erscheint bei Verlassen des Feldes AB 23,00 - wie erwartet.

Über einen Button ein kleines Makro gestartet:

Code: Alles auswählen

oFeld = oDlg.getControl("FormatiertesFeld")
xyz = oFeld.text
msgbox xyz
und es erscheint in der msgbox der String "AB 23,00" - also alles, wie es sein soll.

Also, poste einfach mal etwas mehr von deinem Code, von deinem Vorgehen und von dem, was du erreichen willst. Dann können wir die wahrscheinlich helfen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Stefan,

sorry, die eben gemachten Aüßerungen bezogen sich auf Dialoge. Bei Formulatren ist es ein wenig anders, funktioniert allerdings genauso. Also, hier gibt es keine Fehler.
Hier der Code für Formulare:

Code: Alles auswählen

sub WertAuslesen2
	oDoc = ThisComponent
	oForm = oDoc.drawpage.forms(0)
	oFeld = oForm.getByName("feld1")
	msgbox oFeld.text
end sub
Ergebnis ebenfalls: AB 25,00 - also, alles in Ordnung.

OOo 1.9.M125, Win xp

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten