Seite 1 von 1

[gelöst] .callFunction("Nettoarbeitstage"...) LO5 vs AO

Verfasst: Mo 6. Jun 2016, 16:27
von der_Zerstreute
Hallo Leute,

Durch den partiellen Umstieg auf LO bei uns , bekomme ich gerade etwas Probleme mit meinen Makros.
Teilweise funktionieren gewisse Befehle anscheinend neuerdings anders.

Vieleicht kann mir einer Sagen warum ich jedesmal unter LO bei der oben genannten Zeile (im folgenden Code) eine Fehlermeldung bekomme.
Ich habe bereits versucht die Parameter als "variant"-Array zu übergeben oder als "String" aber grundsätzlich bekomme ich immer eine Fehlermeldung wenn ich versuche diese Funktion aufzurufen.
Unter AO läuft das Makro fehlerfrei.

Code: Alles auswählen

Global anfang as date
global ende as date
global bEU,bSU,bFK
global sGSU as string
dim temp as string
global MyDialog as object


Sub Main
'--------------------------------------------
' Variablen zuordnen
'--------------------------------------------

Dim Profil(0) as new com.sun.star.beans.PropertyValue
dim document as object
dim args(1) as double
dim argsL(1) as variant 'alternative Argumente für Libreoffice
dim tn as string  	 'Techniker Name
dim abt as string	 'Abteilung
dim PerNo as integer 'Personalnummer
dim wt as integer	 'Werktage
Dim ov as string	 'Office Version

dim fil as object

document = ThisComponent 
globalScope.BasicLibraries.LoadLibrary("Tools") ' einbinden der OOBasic Funktionen 
DialogLibraries.LoadLibrary( "Standard" )
MyDialog = CreateUnoDialog(DialogLibraries.Standard.Eingabe)

'--------------------------------------------
' Variablen beschreiben 
'--------------------------------------------
oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )

xray oFunctionAccess'.callFunction( "NETTOARBEITSTAGE", args()) 
Benutzer = createUnoService("com.sun.star.configuration.ConfigurationProvider")
Profil(0).Name = "nodepath"
Profil(0).Value = "org.openoffice.UserProfile/Data"
Benutzerdaten = Benutzer.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", Profil())
ov = OfficeVersion() ' Aufruf der Funktion OfficeVersion
'--------------------------------------------
' Hinweistext erstellen
'--------------------------------------------
temp = "Bitte hier die notwendigen Daten eintragen und auswählen ." & chr(13) & chr(13)
temp = temp & ">> Das Formular wird automatisch ausgefüllt. <<" & chr(13)
temp = temp & chr(13)
MyDialog.getControl("iTitel").model.Label = temp

temp = ""
temp = temp & "Bitte wähle den Beginn und das Ende deines Urlaubs aus." & chr(13) &chr(13)
MyDialog.getControl("Mitte").model.Label = temp

MyDialog.getControl("Label5").visible = false
MyDialog.getControl("eSUG").visible = false

myDialog.execute

if anfang  ="00:00:00" then goto fin

if instr(OV,"Foundation") then
argsL(0) = DateValue(anfang)
argsL(1) = DateValue(ende)
wt = oFunctionAccess.callFunction( "NETTOARBEITSTAGE",Array(anfang,Ende)) 
Else
args(0) = DateValue(anfang)
args(1) = DateValue(ende)
wt = oFunctionAccess.callFunction( "NETTOARBEITSTAGE", args()) 
end if

abt = Benutzerdaten.givenname
tn = Benutzerdaten.sn
PerNo = Benutzerdaten.initials

if args(0) = args(1) then 
	temp = "am  " & anfang & "  = 1 Tag" 
else 
	temp = "vom  " & anfang & "  bis  " & ende & "  =  " & str(wt) & "  Tage"
end if


Es wäre schön wenn hier mal kurz jemand drüber blicken könnte und mir den Unterschied im Handling zwischen LO und AO erklärt.

Danke schonmal für Eure Zeit ;)
PS. Bei Bedarf kann ich auch das ganze Dokument mal posten, weil hier fehlt natürlich noch einiges da ich nur den relevanten Code gepostet habe.

Re: .callFunction("Nettoarbeitstage"...) LO vs AO

Verfasst: Mo 6. Jun 2016, 21:21
von mikele
Hallo,

die Funktion scheint die Daten als String zu erwarten. Folgender Code läuft unter LO4.4.7.2

Code: Alles auswählen

	dim args(1)
	args(0) ="1.5.2016"
	args(1) ="1.6.2016"
	oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	wt = oFunctionAccess.callFunction("NETTOARBEITSTAGE",args())

Re: .callFunction("Nettoarbeitstage"...) LO 5 vs AO/LO4

Verfasst: Di 7. Jun 2016, 09:12
von der_Zerstreute
Hi Mikele,

Leider liegt genau hier das Problem ... unter LO 4 läuft der Code auch noch :? unter 5.1 jedoch nicht mehr :| .

und ich weiß nicht wie ich herrausbekommen kann woran das liegt ..
bei deinem Code erscheint
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
Wenn ich die Argumente in einen Datevalue oder Datum direkt verwandle bekomme ich
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.
Mir gehen gerade etwas die Ideen aus .. Haben die Programmierer hier vieleicht eine entsprechende Funktion in den Basic Code direkt implementiert ?
Nen Changelog wäre bei sowas echt mega hilfreich :(.

Also .. wieder an alle .. Hat noch wer ne idee ?

Re: .callFunction("Nettoarbeitstage"...) LO vs AO

Verfasst: Di 7. Jun 2016, 09:27
von mikele
Hallo,

probier' mal die englische Funktionsbezeichnung (networkdays). Die Fehlermeldung scheint darauf hinzudeuten, dass der Funktionsname unbekannt ist.

Re: .callFunction("Nettoarbeitstage"...) LO vs AO

Verfasst: Di 7. Jun 2016, 12:42
von der_Zerstreute
Hast recht .. damit gehts :) ..

Danke..
Manchmal wärs schön wenn man die Fehlermeldungen besser verstände ;) .