Date: prev next · Thread: first prev next last
2021 Archives by date, by thread · List index


Hallo Gerhard,

nochmals HERZLICHEN DANK für Deine wiederholte Mithilfe :-))

Das mit der Makro-Ablauf-Asynchronität war mir bekannt und ich hatte auch ein "wait (5000)" gesetzt, jedoch ohne Wirkung - und dann eben wieder "aus den Augen verloren". Jetzt weiß ich auch, warum das "wait" keine Wirkung hatte: Ich öffnete die ODS.ods im Modus "Hidden" = True !

[0] CSV.csv

Für die nachfolgenden Tests habe ich die CSV.csv immer nur so modifiziert:

0,1,2,3,4

oder

0,1,2,3,4,5
0,1,2,3,4,5

Das komplette Makro ist hier: https://bugs.documentfoundation.org/show_bug.cgi?id=146099

[1] Test 1

:
Dim aP(0) As New com.sun.star.beans.PropertyValue
aP(0).Name = "Hidden"
aP(0).Value = ?????
oODS = StarDesktop.loadComponentFromURL(ConvertToUrl(HOME & ODS),"_blank",0,aP())
wait (3000)
oSheet  = oODS.Sheets(0)
oCursor = oSheet.createCursor
oCursor.GotoEndOfUsedArea(False)
Xmax = oCursor.getRangeAddress().endColumn
Ymax = oCursor.getRangeAddress().endRow
:

[1.1] "Hidden" = False

Ergebnisse: OKAY

[1.2] "Hidden" = True

Ergebnisse: ERROR

[2] Test 2

:
Dim aP(0) As New com.sun.star.beans.PropertyValue
aP(0).Name = "Hidden"
aP(0).Value = True
oODS = StarDesktop.loadComponentFromURL(ConvertToUrl(HOME & ODS),"_blank",0,aP())
oODS.getCurrentController().getFrame().getContainerWindow().setVisible(True)
wait (3000)
oSheet  = oODS.Sheets(0)
oCursor = oSheet.createCursor
oCursor.GotoEndOfUsedArea(False)
Xmax = oCursor.getRangeAddress().endColumn
Ymax = oCursor.getRangeAddress().endRow
:

[2.1] "Hidden" = True | oODS.getCurrentController().getFrame().getContainerWindow().setVisible(True)

Ergebnisse: ERROR

[3] Zusammenfassung (vorbehaltlich einer Fehl-Deutung meinerseits)

Das wait(3000) hat NUR Wirkung, wenn die ODS.ods im Modus "Hidden" = False geöffnet wird.

Ein Öffnen der ODS.ods im Modus "Hidden" = False mit einem nachfolgenden Sichtbarmachen ( siehe [2.1] ) liefert auch keine korrekten Ergebnisse.

Das Ganze funktioniert - so meine Einschätzung - also nur, wenn die ODS.ods im Modus "Hidden" = False geöffnet wird UND ein "wait" der Art "wait (3000)" eingefügt wird.

Ist das jetzt trotzdem noch ein BUG, weil die ODS.ods zwingend im Modus "Hidden" = False geöffnet werden muss und nachträgliches Sichtbarmachen nach dem Öffnen ohne Wirkung ist, trotz des eingefügten "wait" ?

In anderen Makros von mir, wo ich NICHT MIT VERLINKTEN ODS-Dateien arbeite, funktioniert das "oCursor.GotoEndOfUsedArea(False)" mit "Hidden" = True problemlos.

Das mit dem "wait" kann ich ja noch verstehen und akzeptieren, aber dass "Hidden" = False zwingend ist und sonst nichts anderes funktioniert, das kann ich nicht wirklich nachvollziehen ...

Was jetzt tun mit meinem BUG-Report ? Diese Erkenntnisse hinzufügen ?

Viele Grüße
Hans-Werner


------ Originalnachricht ------
Von: "Gerhard Weydt" <gerhard.weydt@t-online.de>
An: "Hans-Werner Herold" <HansWernerHerold@t-online.de>
Gesendet: 11.12.2021 00:41:45
Betreff: Re: [de-users] BUG-Report - Macro Basic - CALC - Link To External Data - GotoEndOfUsedArea(False) not updating

Hallo Hans-Werner,

Zitat aus eiiner älteren Mail von dir:
+ Unabhängig davon, ob das Häckchen gesetzt ist oder nicht: Wird die ODS.ods neu geöffnet, wird die (importierte) CSV.csv korrekt/aktualisert angezeigt.
Eben das war bei mir nicht der Fall, daher gingen meine Gedanken in eine andere Richtung. Ich bin dem jetzt nachgegangen: In den Optionen für Calc gibt es unter Allgemein eine Auswahl, ob Verknüpfungen beim Laden aktualisiert werden sollen, das war bei mir (sicher Standardeinstellung) auf "Nachfrage" eingestellt. Nach der Änderung auf "Immer (von vertrauenswürdigen Orten" ist das bei mir nun auch so.

Nun habe ich auch eine Lösung für dein Makro: es ist einfach zu schnell für das Aktualisieren, das ja erst nach dem Laden erfolgt! Ich habe nach dem load einen Wait (2000) eingefügt, dann klappt es. Das kann man nach meinen sonstigen Erfahrungen, wo eine Aktion abgewartet werden musste, wahrscheinlich deutlich verkürzen, zumindest bei der kleinen Testdatei. Aber ich könnte mir vorstellen, dass die Aktualisierungszeit von der Größe der verknüpften Datei abhängt, so dass man keinen allgemein gültigen Wartezeitraum festlegen kann. Das Problem tritt ja wohl nur deshalb auf, weil die Datei gerade erst geladen wurde. Vielleicht kannst du da etwas ändern.

Aber auf jeden Fall ist das kein Bug, sondern ein grundsätzliche Verhalten, auf das man sich einstellen mus, dass manche Prozesse asynchron laufen, ohne dass das Makro wartet.

Viele Grüße
Gerhard


Am 10.12.2021 um 20:53 schrieb Hans-Werner Herold:
Hallo Gerhard,

das "Aktualisieren alle ?? Sekunden" bedeutet, dass die GEÖFFNETE ODS.ods, die mit der CSV.csv verlinkt ist, alle "?? Sekunden" AKTUALISIERT WIRD.

Damit man die LibreOffice-"Sanduhr" (blauer Kreis) sieht, braucht es allerdings eine etwas größer CSV-Datei, sonst kriegt man das nicht mit.

Über den WEB-Link

https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv

der "Johns Hopkins University" kannst Du Dir mit "FIREFOX [Datei][Seite speichern unter...]" eine etwas größere CSV-Datei (knapp 1MB, 281 Zeilen, 3607 Spalten je Zeile) generieren/herunterladen.

Verlinkst Du nun eine (neue) ODS.ods mit dieser großen CSV-Datei
und
setzt dabei "Aktualisieren alle 5 Sekunden"
und
speicherst die ODS.ods
und
öffnest die ODS.ods wieder
und
lässt die ODS.ods geöffnet,
dann
solltest Du alle 5 Sekunden - zwar kurz, aber wahrnehmbar - die LibreOffice-"Sanduhr" sehen.

Ich schließe daraus:

[1] Ist "Aktualisieren alle ?? Sekunden" nicht gesetzt, wird die mit der CSV.csv verlinkte ODS.ods nur beim Öffnen aktualisiert
und
im geöffneten Zustand nicht mehr aktualisiert.

[2] Ist "Aktualisieren alle ?? Sekunden" gesetzt, wird die mit der CSV.csv verlinkte ODS.ods beim Öffnen aktualisiert
und
im geöffneten Zustand alle ?? Sekunden immer wieder aktualisiert.

[3] Das geschilderte Makro-Problem ist unabhängig davon, ob "Aktualisieren alle ?? Sekunden" gesetzt ist, da die ODS.ods beim erstmaligen Öffnen aktualisiert wird, nur bekommen es die BASIC-Makro-Funktionen - so meine Einschätzung - nicht mit, aber natürlich lasse ich mich gerne eines Besseren belehren ...

Viele Grüße
Hans-Werner ;-))




--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.