Avatar billede starf Nybegynder
15. november 2011 - 14:40 Der er 8 kommentarer og
1 løsning

hent møde gentagelser fra exchange

Hej

jeg forsøger at lave et stykke vbkode, der hiver alle reucouring events ud af en kalender. Problemet er at exchange kun indeholde start og slut dato, samt interval for gentagelse.

Jeg skal så bruge et stykke vbkode, de udregner alle datoer og smider den i en tekst fil, fra start til slut dato. jeg har taget udgangs punkt i dette kode, hvor de godt nok finde interval osv.

http://technet.microsoft.com/da-dk/library/ee692908%28en-us%29.aspx

Jeg har så forsøgt at lave et loop der udregner de møder, der gentager sig hver uge, dette ser sådan her ud:

datoslut = "06-05-2012"
daguge = 7
Do While i<datoslut
i = DateAdd("d",daguge,"06-05-2011")
                           
fl.Write(i)
fl.WriteBlankLines(1)
Loop

dette giver dog bare en tekst fil med en dato i der gentager sig. uden der bliver lagt noget på. Er der nogen der kan gennemskue hvordan man får skrevet det kode om, så den udregner alle datoérne ?
Avatar billede tjp Mester
15. november 2011 - 15:29 #1
Du får ikke opdateret datoen i DateAdd. Prøv fx:

Dim datoslut, i
datoslut = DateValue("06-05-2012")
i = DateValue("06-05-2011")
Do While i < datoslut
i = DateAdd("ww", 1, i) 'lægger én uge til
fl.Write(i)
fl.WriteBlankLines(1)
Loop
Avatar billede starf Nybegynder
16. november 2011 - 09:36 #2
tak, det ser ud til at virke, så kommer der lige en ændring.

hvordan vil du lave så datoslut, automatisk tager dags dato, og lægger et år til. således den kun genere tidspunkter for et år?
Avatar billede tjp Mester
16. november 2011 - 10:15 #3
Følgende gi'r datoerne fra 06-05-2011 til 04-05-2012:

Dim datoslut, i

i = DateValue("06-05-2011")
datoslut = DateAdd("yyyy", 1, i) 'lægger ét år til

Do While i < datoslut
fl.Write (i)
fl.WriteBlankLines (1)
i = DateAdd("ww", 1, i)          'lægger én uge til
Loop
Avatar billede tjp Mester
16. november 2011 - 10:19 #4
Bemærk at jeg har byttet om på skrivning til fil og tilskrivning af en uge i loop'et for at få startdato med, samt at gøre slutdato eksklusiv.
Avatar billede starf Nybegynder
16. november 2011 - 10:57 #5
Det er jeg godt klar over, men bruger jeg de parametere jeg får fra exchange, er der events frem til år 4500, det er lidt overkill at udregne så mange møde tidspunkter, så hvis man kunne lave så den kun regende ud fra dags dato og et år frem?

det ser sådan her ud:

Dim datoslut, i
datoslut = DateValue(objPattern.PatternEndDate)
i = DateValue(objPattern.PatternStartDate)
Do While i < datoslut
i = DateAdd("ww", 1, i) 'lægger én uge til
fl.Write(i)
fl.WriteBlankLines(1)
Loop

objPattern.PatternEndDate = dato for endelse af events, ser sådan her ud: "31-12-4500 23:59:00"

objPattern.PatternStartDate = start dato, ser sådan her ud: "13-05-2011"

der ud over, hvis man har brug for at have 2 loops i sin kode, hvordan gør man så det? hvis jeg genbruger din kode, og ændre parameterne, så får man fejl på "i" da det er brugt, og ændre man det til "i2" så giver det også en fejl.?
Avatar billede starf Nybegynder
16. november 2011 - 11:29 #6
nå har vist fået det til at virke, hvordan får jeg den til at tage dags dato, og lægge et år der til?
Avatar billede tjp Mester
16. november 2011 - 13:30 #7
Skifter:
i = DateValue(objPattern.PatternStartDate)
ud med:
i = Date    'Sætter 'i' lig dagsdato (systemdato forstås)
Avatar billede starf Nybegynder
16. november 2011 - 13:37 #8
har fået det til at virke, tak for hjælpen. Kom med et svar :)
Avatar billede tjp Mester
16. november 2011 - 13:48 #9
Det lyder fint. :-)
Og svar...
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
Kurser inden for grundlæggende programmering

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