GELÖST RELOAD: geht mal, geht mal nicht

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

GELÖST RELOAD: geht mal, geht mal nicht

Beitrag von WSO »

Habe ein merkwürdiges Verhalten von Makros mit "RELOAD":

Formular "Kundenübersicht" hat Filerfunktionen, die per Makro an/abgeschaltet werden koennen:
SUB FilterReset(oEvent AS OBJECT)
REM Dieses Makro loescht den Filter im aktuellen Formular

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oBearbForm AS OBJECT

oDoc=thisComponent
oDrawpage=oDoc.drawpage
oBearbForm = oDoc.drawpage.forms.getbyindex(0)

' Filter inaktivieren
oBearbForm.Filter = Empty
oBearbForm.ApplyFilter = False
oBearbForm.reload()
End Sub

Das geht einwandfrei.

Wenn ich einen reload auf Dieses Formular, wegen update der Daten von einem anderen Formular machen will, bleibt das reload-Stetement wirkungslos:
sub fKundenuebersichtReload

DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
Dim oFormDocs As Object
DIM oBearbForm as object

oDoc=thisComponent
oDrawpage=oDoc.Drawpage
oFormDocs = ThisDatabaseDocument.FormDocuments.getByName("fKundenuebersicht").open
oBearbForm = oFormDocs.Drawpage.Forms.getByName("fKundenuebersicht")

msgbox ("RELOAD wird ausgefuehrt") ------> aber die Daten im Formuler sind nicht aktualisiert !!!!!

oBearbForm.reload()
end sub
Die harte Methode wiederum funktioniert:
sub Kundenuebersicht_Close_open

ThisDatabaseDocument.FormDocuments.getByName("fKundenuebersicht").close
ThisDatabaseDocument.FormDocuments.getByName("fKundenuebersicht").open

end sub
Kann mir das nicht erklären :shock:
Zuletzt geändert von WSO am Mo, 14.07.2014 23:37, insgesamt 1-mal geändert.
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: RELOAD: geht mal, geht mal nicht

Beitrag von acco »

Hallo,

nur ne Vermutung:
Wenn die MsgBox auf dem Schirm ist und Du zu diesem Zeitpunkt prüfst ob die Daten gespeichert sind, kann das nicht funktionieren. Die Vermutung beruht auf dieser Zeile:
WSO hat geschrieben:msgbox ("RELOAD wird ausgefuehrt") ------> aber die Daten im Formuler sind nicht aktualisiert !!!!!
Reload wird in Deinem Makro erst nach schließen der Box ausgeführt.

Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: RELOAD: geht mal, geht mal nicht

Beitrag von RobertG »

Und hier noch ein kleiner Zusatz:

mit

Code: Alles auswählen

oFormDocs = ThisDatabaseDocument.FormDocuments.getByName("fKundenuebersicht").open
öffnest Du doch gerade das Formular. Was soll ein anschließender reload, wo es doch gerade geladen wurde?

Gruß

Robert
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: RELOAD: geht mal, geht mal nicht

Beitrag von WSO »

klar, das open ist ueberfluessig und kommt raus.
Zu accos Hinweis:
Natuerlich pruefe ich das Ergebnis nach der msgbox, es tut sich aber nichts.

Um meine Verwirrung kolplett zu machen:
Das Phänomen war in 2 unterschiedlichen Formularen.
Bei einem war es nach Neustart von oO weg, in dem zweiten Formulat hält es sich hartnäckig ...

Gruss,
Wolfram
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: RELOAD: geht mal, geht mal nicht

Beitrag von WSO »

Antworten