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
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
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.