Seite 1 von 1

Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Mi 5. Dez 2012, 14:39
von thomas.weiss
Hallo Leute,

ich benötige Eure Hilfe auf meinen Formular habe eine Listbox eingereicht, über die nach Datensatz Nummern suchen kann. Bei einer Listbox kann aber keine Eintrage hinzufügen, leider funktioniert das Makro bei einem Kombinationsfeld nicht mehr.

Sub Speichern_und_Neuladen
oForm = ThisComponent.drawpage.forms.getByName("Standard")
oCtr = oForm.getByName("ListBox") 'Objekt es Kontrollelementes
oForm.UpdateInt(2, oCtr.selectedItems(0))
oForm.updateRow() 'geänderten Datensatz speichern
oForm.reload() 'Formular neu einlesen
End Sub

Wie muss man das Makro ändern, damit es bei einem Kombinationsfeld unter Base (Version 3.5.4.2) funktioniert? Leider reichen meine Kenntnisse dafür nicht aus. Vielen Dank für die Hilfe im Voraus.

Gruß
Thomas

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Mi 5. Dez 2012, 20:29
von RobertG
Hallo Thomas,
thomas.weiss hat geschrieben: Sub Speichern_und_Neuladen
oForm = ThisComponent.drawpage.forms.getByName("Standard")
oCtr = oForm.getByName("ListBox") 'Objekt es Kontrollelementes
oForm.UpdateInt(2, oCtr.selectedItems(0))
Hier wird der Haken sein. Bei einer Listbox ist ein Unterschied zwischen dem Wert, den sie anzeigt, und dem Wert, den sie schreibt. Bei einem Kombinationsfeld sind die Werte gleich. Das Feld schreibt das, was es anzeigt, also keinen Integer-Wert. Du kannst also auf das Feld auch direkt zugreifen, z.B. mit

Code: Alles auswählen

oForm.UpdateString(oCtr.GetCurrentValue())
Nur setzt das natürlich voraus, dass Du da tatsächlich ein Varchar-Feld liegen hast und kein Integer-Feld


Gruß

Robert

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Do 6. Dez 2012, 19:41
von thomas.weiss
Hallo Robert,

erstmal vielen Dank für Hilfe, aber das Makro bricht mit folgender Fehler Meldung ab:

Basic- Laufzeitfehler
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.llieal.ArguementException

Message: arguments len differ!

Was hat diese Fehlermeldung für eine Bedeutung wo kann der Fehler liegen.

Gruß
Thomas

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Do 6. Dez 2012, 20:02
von gogo

Code: Alles auswählen

oForm.UpdateInt(2, oCtr.selectedItems(0))
diese Zeile?

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Do 6. Dez 2012, 20:39
von thomas.weiss
Hallo gogo,

Vielen Dank für die Hilfe, ich habe ein Kombinationsfeld eingefügt und die Zeile von Robert
oForm.UpdateString(oCtr.GetCurrentValue()) übernommen, danach folgt die Fehlermeldung.

Mit freundlichen Grüßen
Thomas

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Do 6. Dez 2012, 21:28
von RobertG
Hallo Thomas,

stimmt, hat einen Fehler:
nicht
oForm.UpdateString(oCtr.GetCurrentValue())
sondern
oCtr.BoundField.UpdateString(oCtr.GetCurrentValue())

Dass bei Dir "arguments len differ" als Meldung erscheint, liegt daran, dass Du entweder auf das Feld der Datenbank mit Hilfe von
oForm.UpdateInt(2, oCtr.selectedItems(0))
über das Formular und das entsprechende Element der Tabelle in den Datensatz schreibst; "2" steht dabei für die Position dieses Feldes in der Tabelle der Datenbank.
In diesem Fall hat also der Update-Befehl zwei voneinander getrennte Werte: eine Zahl und einen Wert, der durch oCtr.selectedItems(0) ausgelesen wird.
Gebe ich hingegen auf andere Art bekannt, zu welchem Feld denn der Wert gehört, so spare ich mir die Nummerierung. Das mache ich, indem ich das an das Formularfeld gebundene (BoundField) Feld anspreche.

Gruß

Robert

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Verfasst: Fr 7. Dez 2012, 12:52
von thomas.weiss
Hallo Robert,

vielen herzlichen Dank, es funktioniert prima!

Gruß
Thomas