28. oktober 2005 - 09:14Der er
12 kommentarer og 1 løsning
Indsæt automatisk i ens kalender
Hej
Kan man i en Lotus Notes database lave følgende funktion:
Når man klikker på en knap, så skal der automatisk registreres følgende i brugerens kalender "Frokost", og varigheden skal sættes fra knappen aktiveres og ½ time frem!!!
Brugerne har ikke fastsatte pauser, så derfor er vi nødt til at lave en fleksibel registrering. Da omstillingen kan se alles kalendere via gruppekalendere, så er det samtidig nødvendigt at registrere frokost som optaget tid.
Mød en af Nordens fremmeste eksperter i adfærdsdesign – Morten Münster, der bl.a. har skrevet ” Jytte fra marketing er desværre gået for i dag” – på Computerworld Cloud & AI Festival.
Sub Click(Source As Button) Dim workspace As New NotesUIWorkspace Dim session As New notessession Dim maildb As NotesDatabase Dim maildoc As NotesUIDocument
Dim subject$, mailserver$, maildtabase$
Dim starttime As NotesDateTime Dim endtime As NotesDateTime
Jeg kender absolut intet til Lotus Script, så måske du kunne uddybe lidt.
Jeg skal vel lave knappen som en handling, og så indsætte din kode sp, Lotus Script til handlingen? Hvilke steder i din kode, skal jeg tilpasse så det passer til mit setup?
Har du Designer installeret? Hvor vil du køre den fra? En fælles database alle bruger eller en knap i hver brugers postkasse? Hvilke programmeringssprog har du prøvet før? (blot for at finde ud af hvordan jeg skal forklare tingene)
Prøv bare at lave en handlingsknap eller en button (på en formular) og kopier alt ind som står MELLEM Sub Click og End Sub linierne. Du kan teste i din egen postkasse først. Tryk derefter og se om det virker. Umiddelbart vil jeg mene at koden er nem at forstå. DIM-sætningerne anvendes kun for at fortælle LotusScript hvad type variablene har, bindingen mellem LotusScript og Notes opnås ved at erklære og initialisere de 2 variable session og workspace (som linker ind i henholdsvis bagrunds og forgunds Notes). NotesDateTime er en klasse til at håndtere dato-tid-formater.
Ideen med at lade koden oprette et forgrundsdokument er den at så får vi al den validering med, som UI-interfacet har at byde på. Hvis man kun laver baggrundskald, så skal vi selv udfylde og beregne en hulens masse data, som kalendersystemet har brug for.
Har oprettet en handlingsknap i formularen. Har derefter kopieret al din kode ind i handlingsvinduet og valgt "Kør" - "Lotusscript". Når jeg aktiverer knappen i databasen, så kommer følgende fejl: "Ugyldigt eller ikke-eksisterende dokument" trykkes der "OK" til det, så kommer der yderligere en fejl "Unable to find Document Window". Jeg ved ikke om det har noget at sige, men det er Lotus Notes Version 5.0.11
Har du prøvet at afvikle koden med debuggeren tændt? Hvilken version er din postkasse? Tænd LS-debugger ved at vælge File->Tools->Debug LotusScript (placering i N6 og 7, husker ikke længere hvor den var i N5)
Det er rigtigt, men det burde ikke have de konsekvenser som Jesper angiver. Så skulle der være helt andre fejl :-) Jeg tror det har noget med Set maildoc = workspace.ComposeDocument( mailserver$ , maildatabase$, "Appointment")
at gøre og Version 5 (eller endda version 4?) Formularen Appointment, jeg husker ikke om navnet blev ændret engang i version 4-5-6
Jesper, foran de sidste 3 linier i koden kan du indsætte et apostrof ' foran hver linie, så bliver de 3 sidste kommandoer ikke udført. Når du så trykker på knappen skal du stå med en kalenderformular foran dig.
Check evt. også om din Notes.ini indeholder variablene Mailserver og Maildatabase.
Indtil videre har jeg kun prøvet at lave knappen i en ekstern database.
Det sidste jeg har gjort er: - at rette tastefejlen - tjekket notes.ini, hvor variablen Maildatabase ikke var at finde. Istedet hed den Mailfile, hvilket jeg har rettet alle steder i koden. - oprettet knappen i formularen _kalenderoplysning, således kalenderformularen er åben når jeg aktiverer knappen.
Efter udførelse af ovenstående så opretter den godt nok en Frokost appointment ½ time frem når jeg har trykket ok. Men det virker fortsat ikke når jeg gør det fra en anden database, og efter knappen aktiveres, så springer den tilbage til en ny kalenderappointment (et spring til indbakken ville være bedre).
Kan det laves så det virker fra den fælles database?
Nu ved jeg hvad der er galt. Jeg har taget ovenstående kode fra et større system, hvor man faktisk (hvis man vil det), kan oprette (semi-)automatiske kalenderting i hinandens (eller sin egen) kalender. I den sammenhæng vedligeholdes hvilken database man skal tilgå i andre variable end standardvariable.
I ovenstående skal du derfor erstatte mailserver$ = session.getenvironmentstring("MailServer") maildatabase$ = session.getenvironmentstring("MailDatabase")
Det er vigtigt at du angiver "True" foroven i koden til GetEnvironmentstring, da det er systemvariablen vi er interesseret i (og ikke en brugervariabel, som har et $ foranstillet i NOTES.INI).
Suverænt - det virker sgu...............du skulle belønnes med både champagne og kaviar.............men desværre kan jeg "kun" give dig eksperten point!!! Smid lige et svar :-)
Og så ellers mange tak for hjælpen endnu en gang!!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.