Sdílet prostřednictvím


Enumerating Event Registrations for a Folder

Topic Last Modified: 2006-06-11

The following code opens an event registration item and lists the events it is registering.

Example

Visual Basic

Public Sub Enum_Event(Server As String)
  On Error Resume Next
  Dim Query
  Dim fld

  Dim rs As New ADODB.Recordset
  Dim strParentFolder
  Dim strEventRegistrationName
  Dim aPropNames

  aPropNames = Array( _
    "DAV:contentclass", _
    "https://schemas.microsoft.com/exchange/events/Criteria", _
    "https://schemas.microsoft.com/exchange/events/Enabled", _
    "https://schemas.microsoft.com/exchange/events/EventMethod", _
    "https://schemas.microsoft.com/exchange/events/MatchScope", _
    "https://schemas.microsoft.com/exchange/events/Priority", _
    "https://schemas.microsoft.com/exchange/events/ScriptUrl", _
    "https://schemas.microsoft.com/exchange/events/SinkClass", _
    "https://schemas.microsoft.com/exchange/events/TimerExpiryTime", _
    "https://schemas.microsoft.com/exchange/events/TimerInterval", _
    "https://schemas.microsoft.com/exchange/events/TimerStartTime")


  ' Specify the event folder and the event registration name
  strParentFolder = "file://./backofficestorage/" + _
                     Server + "/mbx/user1/inbox"

  strEventRegistrationName = "evtreg1"  'If you want to enum all the events, then leave this blank

  'Build the sql query to get the events
  'This section gets all event types so that you don't have to change this per event type
  'To limit the event types, remove the unwanted event types from aPropNames
  Dim i

  Query = "SELECT "
  For i = LBound(aPropNames) To UBound(aPropNames)
    Query = Query + Chr(34) + aPropNames(i) + Chr(34)
    If i <> UBound(aPropNames) Then
      Query = Query + ", "
    End If
  Query = Query + " FROM SCOPE('shallow traversal of " + Chr(34) + strParentFolder + Chr(34) + "')"
  Query = Query + " WHERE " + Chr(34) + "DAV:contentclass" + Chr(34) + " = 'urn:content-class:storeeventreg'"
  If strEventRegistrationName <> "" Then
    'event folder name specified
    Query = Query + " AND " + Chr(34) + "DAV:displayname" + Chr(34) + " = '" + strEventRegistrationName + "'"
  End If


  Dim rec As New ADODB.Record
  rec.Open strParentFolder  'root binder will select the correct provider
  If Err.Number <> 0 Then
    Debug.Print "Error Executing Query : " & Err.Number & " " & Err.Description & vbCrLf
    Exit Sub
  End If

  rs.Open Query, rec.ActiveConnection
  If Err.Number <> 0 Then
    Debug.Print "Error Executing Query : " & Err.Number & " " & Err.Description & vbCrLf
    Exit Sub
  End If

  ' Go thru each entry in the recordset
  Do While (rs.BOF <> True And rs.EOF <> True)
    For Each fld In rs.Fields
      If fld.Value <> vbNull Then
        Debug.Print fld.Name & ", " & fld.Value & vbCrLf
      End If
    Debug.Print "***********************************************" & vbCrLf
    rs.MoveNext
    If Err.Number <> 0 Then
      Debug.Print "Error Moving To Next Record : " & Err.Number & " " & Err.Description & vbCrLf
      Exit Sub
    End If
  Loop

  Set rs = Nothing

End Sub