Avatar billede r11jep Nybegynder
28. oktober 2005 - 09:14 Der 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.

Med venlig hilsen

Jesper
Avatar billede jogii Nybegynder
28. oktober 2005 - 09:44 #1
Dette burde virke.

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
   
    mailserver$ = session.getenvironmentstring("MailServer")
    maildatabase$ = session.getenvironmentstring("MailDatabase")
   
    Set maildoc = workspace.ComposeDocument( mailserver$ , maildatabase$,  "Appointment")
   
    subject$ = "Frokost"
    Call maildoc.gotofield("subject")   
    Call maildoc.FieldSetText( "Subject", subject$)
   
    Set starttime = New NotesDateTime( Cstr(Now ))
   
   
   
    Call maildoc.FieldSetText("StartTime", Format( starttime.LSLocalTime, "Short Time"))
    Call starttime.AdjustMinute( 30 )
    Call maildoc.FieldSetText("EndTime", Format( starttime.LSLocalTime, "Short Time"))
   
    Call maildoc.Save
    Call maildoc.Close
    Msgbox "Du har nu en halv time frokost", 0, "Frokost"
   
   
End Sub
Avatar billede r11jep Nybegynder
28. oktober 2005 - 11:24 #2
Hej Jogii

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?

Mvh
Jesper
Avatar billede jogii Nybegynder
28. oktober 2005 - 11:27 #3
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)
Avatar billede r11jep Nybegynder
28. oktober 2005 - 12:28 #4
Jep, jeg har designer installeret, og jeg kender til programmering i Lotus Notes. Bare ikke Lotus script, det lærer man ikke på AD 1 og AD 2 :-)

Vi har en regional gruppekalender database, så planen var at placere knappen i den, så knappen kun skal placeres 1 sted.

Mvh
Jesper
Avatar billede jogii Nybegynder
28. oktober 2005 - 12:37 #5
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.
Avatar billede r11jep Nybegynder
28. oktober 2005 - 12:45 #6
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

Mvh
Jesper
Avatar billede jogii Nybegynder
28. oktober 2005 - 13:10 #7
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)
Avatar billede mmmtm Nybegynder
28. oktober 2005 - 13:40 #8
Der er lige en tastefejl i linje 5,
Dim subject$, mailserver$, maildtabase$ skal rettes til
Dim subject$, mailserver$, maildatabase$
Avatar billede jogii Nybegynder
28. oktober 2005 - 13:47 #9
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.
Avatar billede r11jep Nybegynder
28. oktober 2005 - 14:17 #10
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?

Indtil videre tak
Avatar billede jogii Nybegynder
28. oktober 2005 - 14:30 #11
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")

med

    mailserver$ = session.GetEnvironmentString( "MailServer", True)
    maildatabase$ = session.getenvironmentstring("MailFile", True)

Så burde det virke.
Man kan også lave nøjagtig det samme i @Formula, men så er det jo for nemt :-)
Avatar billede jogii Nybegynder
28. oktober 2005 - 14:32 #12
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).
Avatar billede r11jep Nybegynder
28. oktober 2005 - 14:41 #13
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!!!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester