Die Anzahl der Elemente, die gleichzeitig geöffnet werden können, wurde vom Serveradministrator begrenzt...
Hallo,
ich möchte aus einem öffentlichen Exchange-Ordner die Position der letzten, von meinem Programm bearbeiteten Mail/Item herausfinden. Dazu verwende ich folgenden Code:
Das ist vermutlich nicht die eleganteste Möglichkeit, funktioniert aber soweit...
BIS AUF... wenn ich hier:
eine höhere Zahl als 200 vorgebe, erhalte ich die Meldung
"Die Anzahl der Elemente, die gleichzeitig geöffnet werden können, wurde vom Serveradministrator begrenzt..."
Wie kann ich das vermeiden, ohne die Anzahl der Elemente, die gleichzeitig geöffnet werden können erhöhen zu müssen?
Einiges hab ich schon ausprobiert, z.B.
Aber das war wohl der falsche Ansatz...
Neugierige Grüße,
Andreas
ich möchte aus einem öffentlichen Exchange-Ordner die Position der letzten, von meinem Programm bearbeiteten Mail/Item herausfinden. Dazu verwende ich folgenden Code:
Public Sub SucheLetzteBearbeiteteMail()
Cursor = Cursors.WaitCursor
txtBxVerlaufAktualisieren("* Suche nach letzter bearbeiteten Mail, bitte warten...")
'objApplication = New Microsoft.Office.Interop.Outlook.Application()
'objNamespace = objApplication.GetNamespace("MAPI")
'objUeberwachterOrdner = objNamespace.Folders("Öffentliche Ordner - " & strPrimarySmtpAddress).Folders.....Item("FolderName")
intAnzahlMails = objUeberwachterOrdner.Items.Count
For m As Integer = 1 To 200
If objUeberwachterOrdner.Items.Item(m).EntryID = strFobjLastMailItemEntryID Then
bolGefunden = True
intPosLetzteMail = m
m = 200
txtBxVerlaufAktualisieren(" ** Letzte bearbeitete Mail an Position " & intPosLetzteMail & " gefunden")
Else
'MsgBox("nicht unter den ersten " & m & " Mails")
End If
Next
If bolGefunden = False Then
txtBxVerlaufAktualisieren(" ** Letzte bearbeitete Mail nicht gefunden.")
End If
txtBxVerlaufAktualisieren("* Suche nach letzter bearbeiteten Mail beendet.")
Cursor = Cursors.Default
End Sub
Das ist vermutlich nicht die eleganteste Möglichkeit, funktioniert aber soweit...
BIS AUF... wenn ich hier:
For m As Integer = 1 To 200
eine höhere Zahl als 200 vorgebe, erhalte ich die Meldung
"Die Anzahl der Elemente, die gleichzeitig geöffnet werden können, wurde vom Serveradministrator begrenzt..."
Wie kann ich das vermeiden, ohne die Anzahl der Elemente, die gleichzeitig geöffnet werden können erhöhen zu müssen?
Einiges hab ich schon ausprobiert, z.B.
objUeberwachterOrdner = nothing
objUeberwachterOrdner = objNamespace.Folders("Öffentliche Ordner - " & strPrimarySmtpAddress).Folders.....Item("FolderName")
objUeberwachterOrdner.Items.item(m).close()
objUeberwachterOrdner.Items.item(m).dispose()
Aber das war wohl der falsche Ansatz...
Neugierige Grüße,
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 214642
Url: https://administrator.de/forum/die-anzahl-der-elemente-die-gleichzeitig-geoeffnet-werden-koennen-wurde-vom-serveradministrator-begrenzt-214642.html
Ausgedruckt am: 04.04.2025 um 12:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Andreas,
kann zwar gerade nicht an einem Exchange testen, aber du könntest versuchen mit zwei verschachtelten Schleifen zu arbeiten. Dabei wird die Gesamtanzahl der Mails durch 200 geteilt und die innere Schleife arbeitet dann immer nur 200 Mails hintereinander ab. solange bis alle Mails abgearbeitet wurden. Der Rest der Division durch 200 wird dann am Ende noch abgearbeitet.
Eventuell bringt das was, musst du testen.
Alternativ könntest du mal mit einer for each -Schleife arbeiten und dann die Mails anhand der EntryID der Mail identifizieren.
Grüße Uwe
kann zwar gerade nicht an einem Exchange testen, aber du könntest versuchen mit zwei verschachtelten Schleifen zu arbeiten. Dabei wird die Gesamtanzahl der Mails durch 200 geteilt und die innere Schleife arbeitet dann immer nur 200 Mails hintereinander ab. solange bis alle Mails abgearbeitet wurden. Der Rest der Division durch 200 wird dann am Ende noch abgearbeitet.
Eventuell bringt das was, musst du testen.
intAnzahlMails = objUeberwachterOrdner.Items.Count
intT = Int(intAnzahlMails / 200)
intRest = intAnzahlMails Mod 200
found = False
For i = 1 To intT
If found = True Then
Exit For
End If
n = (i * 200 )+1
For y = n To (n+200)-1
If checkMail(y) Then
intPosLetzteMail = y
found = True
Exit For
End If
Next
if i = intT and intRest <> 0 then
for y = n To (n+intRest)
If checkMail(y) Then
intPosLetzteMail = y
found = True
Exit For
End If
next
end if
Next
if found then
txtBxVerlaufAktualisieren(" ** Letzte bearbeitete Mail an Position " & intPosLetzteMail & " gefunden")
else
txtBxVerlaufAktualisieren(" ** Letzte bearbeitete Mail nicht gefunden.")
End if
Function checkMail(pos)
If objUeberwachterOrdner.Items.Item(pos).EntryID = strFobjLastMailItemEntryID Then
checkMail = True
Else
checkmail = False
End If
End Function
Alternativ könntest du mal mit einer for each -Schleife arbeiten und dann die Mails anhand der EntryID der Mail identifizieren.
Grüße Uwe
Zitat von @ahstax:
For Each hab ich noch nicht probiert. Kann man da ne Reihenfolge vorgeben? Bezüglich der E-Mails also ausgehend von der
Jüngsten älter werdend?
nein, deshalb hatte ich geschrieben das du zur eindeutigen Identifizierung der Mail die Eigenschaft "EntryID" des MailItems benutzt. Dies ist eine eindeutige Kennung die für jede Nachricht in Outlook unterschiedlich ist.For Each hab ich noch nicht probiert. Kann man da ne Reihenfolge vorgeben? Bezüglich der E-Mails also ausgehend von der
Jüngsten älter werdend?
Grüße Uwe