🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

Alles zur Programmierung im LibreOffice.
Antworten
der_Zerstreute
Beiträge: 6
Registriert: Mo 6. Jun 2016, 16:21

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

Beitrag von der_Zerstreute » Mo 6. Jun 2016, 16:27

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.
Zuletzt geändert von der_Zerstreute am Di 7. Jun 2016, 12:43, insgesamt 1-mal geändert.

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

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

Beitrag von mikele » Mo 6. Jun 2016, 21:21

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())
Gruß,
mikele

der_Zerstreute
Beiträge: 6
Registriert: Mo 6. Jun 2016, 16:21

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

Beitrag von der_Zerstreute » Di 7. Jun 2016, 09:12

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 ?

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

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

Beitrag von mikele » Di 7. Jun 2016, 09:27

Hallo,

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

der_Zerstreute
Beiträge: 6
Registriert: Mo 6. Jun 2016, 16:21

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

Beitrag von der_Zerstreute » Di 7. Jun 2016, 12:42

Hast recht .. damit gehts :) ..

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten