Cette documentation est archivée et n’est pas conservée.

Recherche de modifications spécifiques

Windows SharePoint Services 3

Pour rechercher des types de modifications spécifiques dans un type spécifique d'objet, vous devez définir l'objet et le ou les événements correspondants de la classe SPChangeQuery. Par conséquent, pour rechercher les ajouts d'un utilisateur dans un site Web, affectez aux propriétés User et Add la valeur true. Définir uniquement la propriété User avec la valeur true ne permet pas d'extraire les modifications de tous les utilisateurs. Pour rechercher tous les types de modifications dans les objets utilisateur, vous devez affecter à la propriété User et à toutes les propriétés d'événement possibles la valeur true (en d'autres termes, Add, Delete et Update).

Exemple

Le code exemple suivant montre comment rechercher les modifications apportées à un type d'objet particulier. Dans ce cas, toutes les modifications SPUser font l'objet d'une recherche dans l'étendue de la base de données de contenus. Dans l'appel à la méthode GetChanges, un objet SPChangeQuery est passé et recherche tous les utilisateurs ajoutés dans l'étendue de la base de données.

Dim database As SPContentDatabase = New SPSite("http://siteUrl").ContentDatabase

' Creating a change token using the time stamp.
Dim startTime As DateTime = DateTime.Now.Subtract(TimeSpan.FromDays(1))
Dim startToken As New SPChangeToken(SPChangeCollection.CollectionScope.ContentDB, database.Id, startTime)
Dim changeQuery As New SPChangeQuery(False, False)
changeQuery.User = True
changeQuery.Add = True
changeQuery.ChangeTokenStart = startToken

' Querying for changes at a later time.
changeQuery.ChangeTokenEnd = database.CurrentChangeToken
Dim changes As SPChangeCollection = database.GetChanges(changeQuery)
Dim change As SPChange

For Each change In changes
    Dim userChange As SPChangeUser = CType(change, SPChangeUser)
    ' Use the SPChangeUser properties e.g. Id to retrieve 
    ' the SPUser object if needed.
Next change

SPContentDatabase database = new SPSite("http://siteUrl").ContentDatabase;

/* Creating a change token using the time stamp.*/
DateTime startTime = DateTime.Now.Subtract(TimeSpan.FromDays(1));
SPChangeToken startToken = new SPChangeToken(SPChangeCollection.CollectionScope.ContentDB, database.Id, startTime);
SPChangeQuery changeQuery = new SPChangeQuery(false, false);
changeQuery.User = true;
changeQuery.Add = true;
changeQuery.ChangeTokenStart = startToken;

/* Querying for changes at a later time.*/
changeQuery.ChangeTokenEnd = database.CurrentChangeToken;
SPChangeCollection changes = database.GetChanges(changeQuery);
foreach (SPChange change in changes)
{
    SPChangeUser userChange = (SPChangeUser)change;
    /* Use the SPChangeUser properties (e.g. Id) to retrieve 
    the SPUser object if needed.*/
}
Afficher: