Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: yannick am 14.06.13 - 11:07:51

Titel: @FindFreeResource
Beitrag von: yannick am 14.06.13 - 11:07:51
Hallo zusammen, ich versuche gerade so viel wie möglich über diese Funktion herauszufinden. Hintergrund, wir wollen eine Raumliste erstellen und bräuchten dafür alle verfügbaren Räume. Der Kalender nutzt ja bekannterweise diese Funktion um freie Räume zu einem bestimmten Zeitpunkt zu finden. Allerdings klappt bei mir der Aufruf nie. Ich bekomme immer eine leere Liste. Die Syntax habe ich über google gefunden:
@FindFreeResource( Schlüssel ; RessourcenTyp ; StartDateTime ; EndDateTime ; Kapazität ; Treffer )
Zum Testen habe ich einfach mal folgenden Code probiert:
Code
dim ResNameCheck as Variant
ResNameCheck = Evaluate({@FindFreeResource("CN=*/O=Ehningen";"1";"7/1/2013 10:15:00 AM";"7/1/2011 10:45:00 AM";1;30)})

Messagebox ResNameCheck
Messagebox ResNameCheck(0)
Messagebox ResNameCheck(1) 
Ohne Erfolg (natürlich habe ich vorher geprüft, ob die richtige Funktion zu dem Datum etwas findet). Wie ist diese Funktion genau zu nutzen/was mache ich falsch?
Und viel mehr würde mich die Frage interessieren, ob jemand weiß auf welche Datenbank diese Funktion zugreift :)
Danke!
Titel: Re: @FindFreeResource
Beitrag von: Tode am 14.06.13 - 11:13:16
Du versuchst nicht ernsthaft einen Text als Datetime zu übergeben, oder?
Zeit-/Datumswerte in Formeln sind immer in eckige Klammern zu setzen:
[01.07.2013 14:45]
Titel: Re: @FindFreeResource
Beitrag von: yannick am 14.06.13 - 11:19:48
Wie gesagt - ich habe den Code-Snippet auch im Internet gefunden (http://www-10.lotus.com/ldd/46dom.nsf/DateAllFlatweb/65592965521f1635852578190063a4e1?OpenDocument). Wenn ich die "" durch [] ersetze bekomme ich jedoch einen Script Error... :-\
Code
ResNameCheck = Evaluate({@FindFreeResource("CN=*/O=Mainz";"1";[01.07.2013 10:15];[01.07.2013 10:45];1;30)})
Titel: Re: @FindFreeResource
Beitrag von: yannick am 14.06.13 - 12:57:43
Entschuldigt den Doppelpost, aber ich sitze hier jetzt schon Stunden verzweifelt an dieser Funktion und bekomme einfach kein Ergebnis. Gibt es denn niemanden, der diese Funktion schon einmal benutzt hat?  :(
Titel: Re: @FindFreeResource
Beitrag von: ascabg am 14.06.13 - 13:09:24
Hallo,

Und was genau fuer einen Fehler erhaelst Du?


Andreas
Titel: Re: @FindFreeResource
Beitrag von: yannick am 14.06.13 - 13:12:27
Ich bekomme beim Versuch zu speichern im Domino Designer die Meldung
"Data not saved due to script error(s)"
Unten steht weiter:
"Errors: ...3: Error in EVALUATE macro"
Titel: Re: @FindFreeResource
Beitrag von: ascabg am 14.06.13 - 13:19:52
Schon mal so versucht?

Code
	Dim varRes As Variant
	Dim strMacro As String
	strMacro = {@FreeResource("CN=*/O=Mainz";"1";[01.07.2013 10:15];[01.07.2013 10:45];1;30)}
	varRes = Evaluate(strMacro)


Andreas
Titel: Re: @FindFreeResource
Beitrag von: yannick am 14.06.13 - 13:22:26
Okay danke. Jetzt kann ich wenigstens speichern, bekomme dann beim Ausführen der Zeile
Code
varRes = Evaluate(strMacro)
aber einen "Operation failed" Error.
Titel: Re: @FindFreeResource
Beitrag von: cebolina am 14.06.13 - 13:36:36
probier mal

Code
strMacro = {@FindFreeResource("CN=*/O=Mainz" ; "1" ; @Date(2013 ; 06 ; 17 ; 10 ; 00 ; 00) ; @Date(2013 ; 06 ; 17 ; 11 ; 00 ; 00) ; 1 ; 30)}

Gruß
Stefan
Titel: Re: @FindFreeResource
Beitrag von: yannick am 14.06.13 - 13:39:41
So ähnlich hatte ich es vorher schon ausprobiert. Aber anscheinend nicht genauso, jetzt funktioniert es endlich! :) Super, Vielen Dank an alle Helfer!

Weiß hier noch jemand zufällig auf welche DB diese Funktion zurückgreift?
Titel: Re: @FindFreeResource
Beitrag von: cebolina am 14.06.13 - 14:11:29
so funktionierts auch:

Code
strMacro = {@FindFreeResource("CN=*/O=Mainz" ; "1" ; @ToTime("01.07.2013 10:00") ; @ToTime("01.07.2013 11:00") ; 1 ; 30)}

oder wenn du zwei DateTime-Felder verwendest (im Beispiel "StartDateTime" und "EndDateTime"), dann vielleicht so:
Code
strMacro = {@FindFreeResource("CN=*/O=Mainz" ; "1" ; @ToTime("} & Cstr(doc.StartDateTime(0)) & {") ; @ToTime("} & Cstr(doc.EndDateTime(0)) &  {") ; 1 ; 30)}

Gruß Stefan