BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[GELÖST] Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Alles zur Programmierung im LibreOffice.
Antworten
berndz2001
Beiträge: 6
Registriert: Di 26. Aug 2014, 21:47

[GELÖST] Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von berndz2001 » Sa 18. Feb 2023, 13:10

Hallo Forum,
ich benutze seit langer Zeit eine Tabelle, um Rechnungen zu schreiben. Die Datei habe ich mal angehängt.
In LibreOffice 7.0.6.2 (Xubuntu 20.04.LTS) arbeitet die Tabelle korrekt.
Auf dem Rechnungsblatt existiert ein Schalter Drucken und ein Schalter PDF-Datei speichern. Dabei werden Leerzeilen aus der Tabelle bis zu einer bestimmten Zeile entfernt, um ein kompaktes Erscheinungsbild zu bekommen. In späteren Versionen von LibreOffice erscheint der im Betreff genannte Fehler.
Bei meinen Recherchen im Netz habe ich keine nachvollziehbare Lösung gefunden. Auch der Programmierer will sich des Problems nicht annehmen. Meine Hoffnung ist nun, dass hier jemand bei der Lösung des Problems behilflich sein kann.
Schon jetzt besten Dank.
Bernd
Dateianhänge
RechnungEasyDS-OOo-3.0.ods
(99.74 KiB) 104-mal heruntergeladen
Zuletzt geändert von berndz2001 am So 19. Feb 2023, 13:06, insgesamt 1-mal geändert.
Grüße.
Bernd

DavidG
Beiträge: 195
Registriert: Do 22. Mär 2018, 21:41

Re: Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von DavidG » Sa 18. Feb 2023, 16:42

Hallo Bernd,

Dein Progamm habe ich mit diesen LO-Versionen getestet:
  1. Version: 7.4.5.1 (x64) / LibreOffice Community
    Build ID: 9c0871452b3918c1019dde9bfac75448afc4b57f
    CPU threads: 4; OS: Windows 10.0 Build 19045; UI render: Skia/Raster; VCL: win
    Locale: de-DE (de_DE); UI: de-DE
    Calc: CL
  2. Version: 6.2.5.2 (x86) portable
    Build-ID: 1ec314fa52f458adc18c4f025c545a4e8b22c159
    CPU-Threads: 4; BS: Windows 10.0; UI-Render: GL; VCL: win;
    Gebietsschema: de-DE (de_DE); UI-Sprache: de-DE
    Calc: C
Zu 1
  1. Fehler konnte ich nachvollziehen
  2. Die Anweisung

    Code: Alles auswählen

    Wert= ThisComponent.getCurrentSelection.string
    
    in Modul2 der Sub-Routine druckansicht verursacht dort den Fehler.
    Mittels des X-Ray_Tool’s habe ich das Objekt ThisComponent.getCurrentSelection untersucht. Es gibt dort eine Eigenschaft namens string, als auch eine Methode namens getString.
    Damit ist diese Angabe richtig, wird aber falsch interpretiert.
Zu 2
Das Programm läuft fehlerfrei durch.

Workaround
Mit folgendem Behelf, kannst Du den Fehler abfangen.
ABER, es besteht die Möglichkeit, dass an anderer Stelle des Codes falsche Daten übermittelt werden, weil in diesem Fall die String-Variable Wert weitesgehend leer, also wert = "" ist, oder sie enthält nicht das richtige.
Dies musst Du bei Dir mal testen.

Behelf für Modul2 der Sub druckansicht

Code: Alles auswählen

on error resume next						' Umgehung des Fehlers
Wert= ThisComponent.getCurrentSelection.string	' vermutlich ein Bug
'Print wert
EDIT:
Ich revidiere diese Aussage, wegen korrekter Anwort von mikele:
viewtopic.php?f=12&t=38655#p102199
[S]Wenn Du magst, dann melde den Fehler unter Bugzilla und lade dort Deine Musterdatei als Attachment hoch.
Ändere ggf. Deine Musterdatei z.T. in englische Sprache (z.B. Button Beschriftung)
[/S]

Hier die geänderte Behelfs-Datei:
RechnungEasyDS-OOo-3.0_01.ods
Behelf:
on error resume next
(98.31 KiB) 103-mal heruntergeladen
Zuletzt geändert von DavidG am Sa 18. Feb 2023, 20:08, insgesamt 1-mal geändert.
Gruß

David
___________________
WIN 10 PRO
LO 7.4.5.1 (x64)

mikele
Beiträge: 1659
Registriert: Mo 1. Aug 2011, 20:51

Re: Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von mikele » Sa 18. Feb 2023, 16:54

Hallo,
es wäre einfacher gewesen, wenn die Codezeile, in der der Fehler auftritt, benannt wäre.
Der schnellste Weg wäre, im Modul 2 in der Sub "druckansicht" die Zeile (Nr. 57)

Code: Alles auswählen

Wert= ThisComponent.getCurrentSelection.string
abzuändern in

Code: Alles auswählen

Wert= ThisComponent.getCurrentSelection.getCellByPosition(0,0).string
Der sinnvollere wäre, das ganze neu zu programmieren und die Unmengen von verwirrendem und teilweise unnützem Dispatcher-Code zu vereinfachen.
Gruß,
mikele

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von gogo » Sa 18. Feb 2023, 17:07

getCurrentSelection hat vermutlich die Methode nicht immer. Du kannst das so überprüfen:

Code: Alles auswählen

...
if InStr(ThisComponent.getCurrentSelection.Dbg_methods(), "SbxSTRING getString ( void )") = 0 then
	msgbox "ABBRUCH! ThisComponent.getCurrentSelection hat derzeit keine Methode namens getString"
	exit sub
end if
...
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

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von F3K Total » Sa 18. Feb 2023, 17:13

Bitteschön!
Diese aufgezeichneten Makros sind ein Horror.
Hier lag der Fehler darin, das in dem Makro zeileaus1rauf mit der Zeile

Code: Alles auswählen

dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args2())
unter LibreOffice ein Zellbereich, nämlich die verbundenen Zellen B140:K140, ermittelt werden.
Unter AOO wird hier die erste Zelle des Zellbereiches ermittelt.
Ein Zellbereich hat keinen .String, daher muss die erste Zelle des Zellbereiches ausgelesen werden.
Dazu habe ich folgenden Bereich im Makro druckansicht angepasst:

Code: Alles auswählen

For i = 133 To 141 '(die Variablenbelegung korrespondiert NICHT mit der Zeilennummer, 
REM die zudem rückwärts gezählt werden müßte, da nach oben gesprungen wird).
REM DIE ERSTE GEFÜLLTE ZEILE FÜHRT ZUM ENDE DER AUSBLENDABFRAGEN
'Wert = ThisComponent.getCurrentSelection.String 'geht nicht unter LO7.4.5 <-------------------------------
Cursel = ThisComponent.getCurrentSelection 
if Cursel.Supportsservice("com.sun.star.sheet.SheetCellRange") then 'Wenn es sich um einen Zellbereich handelt <-------------
    oCell = Cursel.getCellbyPosition(0,0)'erste Zelle wählen
    Wert = oCell.String 'string auslesen
else '<---------Sonst
    Wert = Cursel.string
endif
if wert = "" then
call zeileaus1rauf
Else
goto positionszeilenausblendung
End if
Next i
EDIT: UPS, da haben wohl einige in kurzer Zeit (ca. 30 Minuten) eine Antwort vorbereitet, im Prinzip habe mikele und ich die gleiche Lösung, es wird die 1. Zelle und nicht der Zellbereich ausgelesen.
Gruß R
Dateianhänge
RechnungEasyDS-LO745.ods
(101.4 KiB) 102-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

berndz2001
Beiträge: 6
Registriert: Di 26. Aug 2014, 21:47

Re: Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von berndz2001 » Sa 18. Feb 2023, 18:19

Liebe Leute,
das ist beeindruckend, wie schnell ihr hier unterstützt. DANKE.
Welche Version nehme ich denn jetzt? :? Heruntergeladen habe ich mal beide.
Den Bug würde ich bei Bugzilla gerne melden, habe das aber noch nie gemacht. Was muss ich hier beachten?
DavidG schrieb: Wenn Du magst, dann melde den Fehler unter Bugzilla und lade dort Deine Musterdatei als Attachment hoch.
Ändere ggf. Deine Musterdatei z.T. in englische Sprache (z.B. Button Beschriftung)
Die Beschriftung habe ich angepasst.
mikele schrieb: Der sinnvollere wäre, das ganze neu zu programmieren und die Unmengen von verwirrendem und teilweise unnützem Dispatcher-Code zu vereinfachen.
Das kann ich leider nicht und der Programmierer hat da anscheinend keine Lust zu. :(
Dateianhänge
RechnungEasyDS-OOo-3.0.ods
(101.08 KiB) 105-mal heruntergeladen
Grüße.
Bernd

mikele
Beiträge: 1659
Registriert: Mo 1. Aug 2011, 20:51

Re: Basic-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: string

Beitrag von mikele » Sa 18. Feb 2023, 19:39

Hallo,
ich würde es nicht als Bug bezeichnen. Der Dispatcher bekommt den Auftrag eine Zelle nämlich B140 anzuspringen/auszuwählen.
Da diese Zelle aber mit den Nachbarzellen verbunden ist, ist dadurch de facto (und auch optisch) der Bereich B140:K140 ausgewählt. Das ist durchaus plausibel und passt zu den Änderungen die mittlerweile im Zusammenhang mit verbundenen Zellen implementiert wurden. Das muss sich natürlich auch in der Programmierung niederschlagen.
Gruß,
mikele

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten