Getting Item Counts by using GROUP BY
Topic Last Modified: 2006-06-12
You can use the GROUP BY clause to get a tally of specific items, such as the number of messages with low, normal, or high importance. The DAV:visiblecount property contains the total for each group in the returned recordset.
Note
Using the GROUP BY query produces a recordset that does not support Microsoft® ActiveX® Data Objects (ADO) bookmarks. Attempts to use methods that are only available for Recordsets that support bookmarks, such as the Recordset.Clone method, on a Recordset generated with the GROUP BY predicate, will return an error.
The property values shown in the following table would return a tally of 3 low-importance, 207 normal-importance, and 27 high-importance, messages.
Property | Value |
---|---|
3 |
|
0 (low importance) |
|
207 |
|
1 (normal importance) |
|
27 |
|
2 (high importance) |
Example
VBScript
Example
' Tallies the number of high, normal, and low importance messages.
On Error GoTo ErrHandler
Const adErrNoCurrentRecord = 3021
' Get computer and domain information.
Set info = CreateObject("ADSystemInfo")
Set infoNT = CreateObject("WinNTSystemInfo")
cName = infoNT.ComputerName
dName = info.DomainDNSName
' Create the connection object.
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Exoledb.DataSource"
' The URL for the connection object
' is at the virtual directory root.
' You must have access to userA's mailbox
' for this sample to work.
cURL = "http://" & cName & "." & dName & "/" & "exchange/userA"
Conn.Open cURL
' The relative URL is the folder to search.
relURL = "Inbox"
Set rs = CreateObject("ADODB.Recordset")
' Construct the SQL query.
strQ = "SELECT ""DAV:visiblecount"", "
strQ = strQ & " ""urn:schemas:httpmail:importance"" "
strQ = strQ & "FROM """ & relURL & """ "
strQ = strQ & "GROUP BY ""urn:schemas:httpmail:importance"" "
Rs.Open strQ, Conn
' If the recordset is empty, return an error.
' If it was successful, display the results.
If Rs.EOF = True Then
WScript.Echo "No items found, run another query."
Else
Rs.MoveFirst
Do Until Rs.EOF
Select Case Rs("urn:schemas:httpmail:importance")
Case 2
strI = "High"
Case 1
strI = "Normal"
Case 0
strI = "Low"
End Select
WScript.Echo Rs("DAV:visiblecount") & " " & strI & " importance messages"
Rs.MoveNext
Loop
End If
GoTo Ending
' Implement custom error handling here.
ErrHandler:
WScript.echo Err.Number + " " + Err.Description
Err.Clear
Ending:
Conn.Close
Rs.Close
Set Conn = Nothing
Set Rs = Nothing