BUG-Report - Macro Basic - CALC - Link To External Data - GotoEndOfUsedArea(False) not updating

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 ;-))

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

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 ------

Hallo Hans-Werner,

[..]
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 ...

Doch, ich schon. Gehe doch mal davon aus, dass die Verknüpfungen nur im View-Modus überhaupt aktualisiert werden ( müsste man im Quellcode nachsehen, oder Du fragst einen "echten" Calc-Entwickler;)). Würde für mich aber Sinn machen. Dann bedarf es noch eines Triggers, der den Aktualisierungsvorgang anstösst.

Das könnte im View-Mode geschehen nach Öffnen des Dokumentes.

Öffnest Du das Dokument "hidden", wird zwar das Objekt erzeugt, nicht aber die Verknüpfungen aktualisiert. Der Trigger fällt aus wegen fehlenden View-Modus. Nun ist das Objekt bereits im Hauptspeicher komplett vorhanden, ein setzen auf "View" ändert das Objekt nicht mehr. Daher möglicherweise die fehlenden Daten.

Also, erklärbar wäre das alles. Ob es ein Bug ist.... keine Ahnung.  Vielleicht eher ein Feature Request?

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

[..]

Viele Grüße

Thomas

Hallo *,

danke für die Rückmeldungen und die Mithilfe.

Ich habe - nach Thomas' Erläuterungen - nun den BUG-Report auf "medium enhancement" gesetzt, müsste so was sein wie "Feature Request".

Alles weitere im BUG-Report: https://bugs.documentfoundation.org/show_bug.cgi?id=146099

Wenn jetzt noch jemand den BUG-Status "Unconfirmed" modifiziert wäre eine Chance gegeben, dass sich ein CALC-Entwickler diese Sache vielleicht mal anschaut.

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

------ Originalnachricht ------