Ajout d'un abonnement

L'objet Subscription expose les propriétés qui vous permettent de définir les informations d'abonnement comme l'ID d'abonné, un indexeur pour les champs qui définissent les données d'abonnement, et d'indiquer si l'abonnement est activé pour générer les notifications.

La méthode Add de cet objet écrit les données dans la base de données d'application et renvoie le SubscriptionId généré par le système pour l'abonnement. Le SubscriptionId est stocké comme un entier 64 bits dans la base de données, mais il est renvoyé à l'application sous forme de chaîne.

Ajout d'un abonnement de base

L'exemple de code suivant montre comment utiliser la méthode Item de la classe Subscription pour définir la valeur des champs d'abonnement spécifiques à l'application :

// Create the NSInstance object.
NSInstance testInstance = new NSInstance("Tutorial");

// Create the NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, "Weather");

// Create the Subscription object.
Subscription testSubscription =
    new Subscription(testApplication, "WeatherCity");


// Set the properties that describe the subscription record.
testSubscription.Enabled = true;
testSubscription.SubscriberId = "TestUser1";

// Set the subscription data fields (as defined in the ADF),
// using the indexer to set fields by field name.
testSubscription["DeviceName"] = "Work e-mail";
testSubscription["SubscriberLocale"] = "en-US";
testSubscription["City"] = "Shoreline";

// Add the subscription to the database.
testSubscription.Add();

Code supplémentaire pour un abonnement planifié

Certaines classes d'abonnement prennent en charge les abonnements planifiés. Pour les abonnements planifiés, vous devez fournir deux propriétés supplémentaires pour indiquer la récurrence et la date de début de la planification.

Ajoutez le code suivant à l'exemple ci-dessus, avant la méthode Add, pour créer un abonnement planifié. La propriété ScheduleRecurrence configure l'abonnement à traiter quotidiennement. La propriété ScheduleStart configure l'abonnement devant être traité à l'heure actuelle dans le fuseau horaire du Pacifique. Pour la liste de codes de fuseau horaire pris en charge, consultez Time Zone Codes.

ms171385.note(fr-fr,SQL.90).gifRemarque :
Les valeurs des propriétés ScheduleStart et ScheduleRecurrence de la classe Subscription doivent respecter le sous-ensemble de Notification Services de la spécification d'interface ICalendar. Pour plus d'informations, consultez les rubriques suivantes :
// Set the recurrence of the subscription.
testSubscription.ScheduleRecurrence = "FREQ=DAILY";

// Set the start date and time of the subscription.
StringBuilder scheduleBuilder = new StringBuilder();
scheduleBuilder.AppendFormat("TZID={0}:{1}{2}{3}T{4}{5}{6}",
    "4",
    DateTime.Now.Year.ToString("D4"),
    DateTime.Now.Month.ToString("D2"),
    DateTime.Now.Day.ToString("D2"),
    DateTime.Now.Hour.ToString("D2"),
    DateTime.Now.Minute.ToString("D2"),
    DateTime.Now.Second.ToString("D2"));
testSubscription.ScheduleStart = scheduleBuilder.ToString();

Ajout d'un abonnement basé sur des conditions

Le code suivant montre comment créer un abonnement pour une classe d'abonnement qui utilise des actions de condition. Les propriétés RuleName et Condition sont de la classe Subscription. Les objets utilisés pour définir la condition, telle que la classe OrCondition proviennent de l'espace de noms Microsoft.SqlServer.NotificationServices.Rules.

Cet exemple montre comment créer un abonnement et une condition en utilisant des valeurs de texte codées de manière irréversible. Votre interface de gestion d'abonnement peut proposer des listes déroulantes et des zones de texte pour permettre aux utilisateurs de sélectionner et d'entrer des valeurs.

// Create the NSInstance object.
NSInstance testInstance =
    new NSInstance("InventoryTrackerInstance");

// Create the NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, "InventoryTracker");

// Define subscription properties
Subscription s = new Subscription(testApplication, "InventoryTrackerSubscriptions");
s.SubscriberId = "TestUser1";
s.Enabled = true;
s.RuleName = "InventoryTrackerRule";
s["DeviceName"] = "Work e-mail";
s["SubscriberLocale"] = "en-US";

// Define OrCondition
s.Condition = new OrCondition(
    new SimpleLeafCondition(new FieldValue("Quantity"),
        SimpleOperator.GreaterThanOrEqualTo,
        500),
    new SimpleLeafCondition(new FieldValue("Quantity"),
        SimpleOperator.LessThanOrEqualTo,
        35)
);

// Add subscription
s.Add();

La condition d'abonnement peut être un graphique d'objets complexe combinant de nombreuses conditions AND, OR et NOT, ainsi que différents types d'arguments, ou même d'autres règles, via les objets LinkLeafCondition.

Exemple COM Interop

L'exemple de code suivant montre comment utiliser la méthode SetFieldValue de la classe Subscription pour définir la valeur des champs d'abonnement spécifiques à l'application :

ms171385.note(fr-fr,SQL.90).gifRemarque :
Interop COM n'est pas pris en charge pour les abonnements basés sur les conditions.
Dim testInstance, testApplication, testSubscription, subscriptionId

const instanceName = "Tutorial"
const applicationName = "Weather"
const subscriptionClassName = "WeatherCity"

' Create the NSInstance object.
set testInstance = WScript.CreateObject( _ 
    "Microsoft.SqlServer.NotificationServices.NSInstance")
testInstance.Initialize instanceName

' Create the NSApplication object.
set testApplication = WScript.CreateObject( _ 
    "Microsoft.SqlServer.NotificationServices.NSApplication")
testApplication.Initialize (testInstance), applicationName

' Create the Subscription object.
set testSubscription = WScript.CreateObject( _
    "Microsoft.SqlServer.NotificationServices.Subscription")
testSubscription.Initialize (testApplication), subscriptionClassName


' Set the properties that describe the subscription record.
testSubscription.SubscriberId = "TestUser2"
testSubscription.Enabled = true

' Set the subscription data fields 
testSubscription.SetFieldValue "DeviceName", "Work e-mail"
testSubscription.SetFieldValue "SubscriberLocale", "en-US"
testSubscription.SetFieldValue "City", "Anaheim"

' Add the subscription to the database.
subscriptionId = testSubscription.Add

wscript.echo "Subscription added."

Voir aussi

Concepts

Création d'un objet d'abonnement
Mise à jour d'un abonnement
Suppression d'un abonnement
Obtention d'informations sur le champ d'abonnement
Remplissage d'une liste de paramètres régionaux d'abonnés
Remplissage d'une liste de fuseau horaire

Aide et Informations

Assistance sur SQL Server 2005