🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Probleme mit einem Kombinationsfeld und meinem Makro

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
thomas.weiss
! Supporter - Spende !
Beiträge: 45
Registriert: Mi 29. Aug 2012, 18:18

Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von thomas.weiss » Mi 5. Dez 2012, 14:39

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

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von RobertG » Mi 5. Dez 2012, 20:29

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

thomas.weiss
! Supporter - Spende !
Beiträge: 45
Registriert: Mi 29. Aug 2012, 18:18

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von thomas.weiss » Do 6. Dez 2012, 19:41

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

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von gogo » Do 6. Dez 2012, 20:02

Code: Alles auswählen

oForm.UpdateInt(2, oCtr.selectedItems(0))
diese Zeile?
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

thomas.weiss
! Supporter - Spende !
Beiträge: 45
Registriert: Mi 29. Aug 2012, 18:18

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von thomas.weiss » Do 6. Dez 2012, 20:39

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

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von RobertG » Do 6. Dez 2012, 21:28

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

thomas.weiss
! Supporter - Spende !
Beiträge: 45
Registriert: Mi 29. Aug 2012, 18:18

Re: Probleme mit einem Kombinationsfeld und meinem Makro

Beitrag von thomas.weiss » Fr 7. Dez 2012, 12:52

Hallo Robert,

vielen herzlichen Dank, es funktioniert prima!

Gruß
Thomas


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten