supportsService nicht gefunden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
riesentrolli
Beiträge: 2
Registriert: Fr, 17.06.2011 18:28

supportsService nicht gefunden

Beitrag von riesentrolli »

Ahoi,

ich habe unter Calc folgendes Makro eingebaut:

Code: Alles auswählen

    Function CalcDoc_Modification_Date()
    sTemp = "n/a"

    oDoc = thisComponent
    If IsNull( oDoc ) THEN
       CalcDoc_Modification_Date() = sTemp
       msgbox "oDoc null"
       Exit Function
    End If

    If IsEmpty( oDoc ) THEN
       CalcDoc_Modification_Date() = sTemp
       msgbox "oDoc empty"
       Exit Function
    End If

    ' da hier als Calc-Funktion ("cf_")genutzt:
    ' Abfrage des Dokumententyps
    If oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument" ) Then
    ' neue Eigenschaft ab OOo 3.0.0
    cf_oDAT = oDoc.DocumentProperties.ModificationDate
    ' work with DocInfo
    If IsEmpty( cf_oDAT ) Then
      sTemp = "n/a"
       else
          With cf_oDAT
          ' set return format
          ' force month and day to two digits
          sTemp = _
           Format( .Day, "0#" ) & "." & _
           Format( .Month, "0#" ) & "." & _
           .Year
          End With
       End If   'gefülltes Objekt

    ' assign func return value
    CalcDoc_Modification_Date = sTemp

    End If  ' check DOK
    End Function
Damit soll das Datum der letzten Änderung angezeigt werden. Was auch passiert. Zumindest bis ich das Dokument wieder öffne. Dann bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

BASIC-Laufzeitfehler Eigenschaft oder Methode nicht gefunden: supportsService.
Das Ersetzen von

Code: Alles auswählen

oDoc = thisComponent
durch

Code: Alles auswählen

oDoc = StarDesktop.CurrentComponent
hat nichts gebracht. OpenOffice gab die Meldung aus, dass oDoc null und ich hatte nur ein formschönes n/a statt des Datums.

Hat hier jemand eine Ahnung was da schief läuft?
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: supportsService nicht gefunden

Beitrag von F3K Total »

Hallo,
wie startest Du das Makro? von Hand?
Bei mir funktioniert:

Code: Alles auswählen

Sub Main
oDoc=thiscomponent
If oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument" ) Then msgbox "gefunden"
End Sub
auch beim erneuten Öffnen.
W7 OOo3.3

Gruß R
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: supportsService nicht gefunden

Beitrag von Karolus »

Hallo
Das Dokumentobjekt ist noch nicht "vollständig" zu dem Zeitpunkt wenn die Funktion evaluiert wird. → Hol dir das Modification_Date nicht per Calcfunktion, sondern schreibe das Änderungsdatum per Sub zB. beim/vorm Schliessen des Dokuments in die gewünschte Zelle.

Nachtrag: in LO 3.3 und 3.2 gibts bei der Benutzung als Funktion keine Fehlermeldung beim Öffnen.
Nachtrag2: ...wenn die Funktion im Dokument "aufbewahrt" wird.

Gruß Karo
Zuletzt geändert von Karolus am Fr, 17.06.2011 19:26, insgesamt 2-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: supportsService nicht gefunden

Beitrag von DPunch »

Aloha
Karolus hat geschrieben:Hol dir das Modification_Date nicht per Calcfunktion, sondern schreibe das Änderungsdatum per Sub zB. beim/vorm Schliessen des Dokuments in die gewünschte Zelle.
Entweder das, oder Du packst die Funktion in das Dokument selber - dann kann das Evaluieren erst erfolgen, wenn das Dokument schon geladen ist, das dürfte auch keine Fehlermeldung mehr produzieren.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: supportsService nicht gefunden

Beitrag von Karolus »

Hallo
...oder Du packst die Funktion in das Dokument selber - dann kann das Evaluieren erst erfolgen, wenn das Dokument schon geladen ist, das dürfte auch keine Fehlermeldung mehr produzieren.
Klar, natürlich - genau das hab ich beim Testen gerade "instinktiv" auch gemacht.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
riesentrolli
Beiträge: 2
Registriert: Fr, 17.06.2011 18:28

Re: supportsService nicht gefunden

Beitrag von riesentrolli »

DPunch hat geschrieben:Aloha
Karolus hat geschrieben:Hol dir das Modification_Date nicht per Calcfunktion, sondern schreibe das Änderungsdatum per Sub zB. beim/vorm Schliessen des Dokuments in die gewünschte Zelle.
Entweder das, oder Du packst die Funktion in das Dokument selber - dann kann das Evaluieren erst erfolgen, wenn das Dokument schon geladen ist, das dürfte auch keine Fehlermeldung mehr produzieren.
Hat funktioniert. Tausend Dank!
*tanz*
Antworten