28. september 2011 - 11:37Der er
12 kommentarer og 1 løsning
output kommer ud i forkert rækkefølge
Jeg har et stykke kode, der gennemgår min outlook kalender for at finde aftaler. Mit problem ligger i at outputtet kommer ud omvendt, altså med de aftaler der er imorgen kommer i bunden, og dem der er i næste uge, kommer i toppen. Nogle der kan se hvorfor det gør dette? og hvordan jeg får det vendt om?
Set objFolder = objNameSpace.GetSharedDefaultFolder(myRecipient, 9) Set MyItems = objFolder.Items
strOutput = strOutput & "<h2>Møder næste uge:</h2>" icount = 0 For Each CurrentAppointment in MyItems If CurrentAppointment.Start > date And CurrentAppointment.Start <= dtNextWeek Then
icount = icount + 1 strOutput = strOutput & icount & ". " & CurrentAppointment.Subject & vbTab & " <b>Start Tid:</b> " & CurrentAppointment.Start & " <b>Varighed</b> " & CurrentAppointment.Duration & vbCRLF if len(CurrentAppointment.Body) > 0 then strOutput = strOutput & CurrentAppointment.body & vbCrLF & vbCrLF else strOutput = strOutput & vbCrLf end if End If Next
du har ret det virker, hvad så hvis jeg har ændret det til sådan her:
---------------start-----------------
Const olFolderCalendar = 9
Set Application = CreateObject("Outlook.application") Set myNameSpace = Application.GetNameSpace("MAPI")
Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNamespace("MAPI") Set myRecipient = myNameSpace.CreateRecipient("IT-Mødelokale It-afdelingen") Set objFolder = objNameSpace.GetSharedDefaultFolder(myRecipient, 9)
Set colItems = objFolder.Items
Set fso = CreateObject("Scripting.FileSystemObject")
Set fl = fso.OpenTextFile("C:\Temp\Kalender.txt", 2, True) fl.Write(strOutput)
Set colFilteredItems = colItems.Restrict("[IsRecurring] = FALSE")
For Each objItem In colFilteredItems Set objPattern = objItem.GetRecurrencePattern If objPattern.PatternStartDate > date Then fl.Write("Dato: " & objItem.Start & " Møde: " & objItem.Subject & " Varighed: " & objItem.Duration) fl.WriteBlankLines(1)
End If
Next
fl.Close : Set fl = Nothing Set fso = Nothing
Set Application = Nothing
Set myNameSpace = Nothing
Set objOutlook = Nothing
Set objNamespace = Nothing
----------------slut-------------------
er der en let måde at vende outputtet om her også?
Har man ikke LINQ i VB# ?? eller er det plain VB du programmere ?
anyways, så kan du altid iterere en collection alle de veje du vil:
i stedet for en ForEach: For Each objItem In colFilteredItems Set objPattern = objItem.GetRecurrencePattern If objPattern.PatternStartDate > date Then fl.Write("Dato: " & objItem.Start & " Møde: " & objItem.Subject & " Varighed: " & objItem.Duration) fl.WriteBlankLines(1)
End If
Next
bruger du en omvendt iterator:
Set i = colFilteredItems.Count For i to 0 step -1 set objItem = colFilteredItems(i) Set objPattern = objItem.GetRecurrencePattern If objPattern.PatternStartDate > date Then fl.Write("Dato: " & objItem.Start & " Møde: " & objItem.Subject & " Varighed: " & objItem.Duration) fl.WriteBlankLines(1)
For i = colFilteredItems.Count to 0 step -1 set objItem = colFilteredItems(i) Set objPattern = objItem.GetRecurrencePattern If objPattern.PatternStartDate > date Then fl.Write("Dato: " & objItem.Start & " Møde: " & objItem.Subject & " Varighed: " & objItem.Duration) fl.WriteBlankLines(1)
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.