Scénario de publication Internet
S’applique à : Access 2013, Office 2013
Cet exemple de code illustre la façon dont ADO doit être utilisé avec le fournisseur Microsoft OLE DB pour la publication Internet. Ce scénario consiste à créer une application Visual Basic qui utilise des objets Recordset, Record et Stream pour afficher le contenu des ressources publiées à l'aide du fournisseur de la publication Internet.
La création de ce scénario passe par l'exécution des étapes suivantes :
- Configurez le projet Visual Basic.
- Initialisez la zone de liste Main.
- Renseignez la zone de liste Champs.
- Remplissez la zone de texte Détails.
Étape 1 : Configurer le projet Visual Basic
Dans ce scénario, vous êtes censé avoir installé sur votre système Microsoft Visual Basic version 6.0 ou ultérieure, ADO version 2.5 ou ultérieure, et le fournisseur Microsoft OLE DB pour la publication Internet.
Créer un projet ADO
Dans Microsoft Visual Basic, créez un nouveau projet EXE standard.
Dans le menu Projet, choisissez Références.
Sélectionnez Bibliothèque Microsoft ActiveX Data Objects 2.5, puis cliquez sur OK.
Insérer des contrôles sur le formulaire principal
Ajoutez un contrôle ListBox à Form1. Définissez sa propriété Name sur lstMain.
Ajoutez un autre contrôle ListBox à Form1. Définissez sa propriété Name sur lstDetails.
Ajoutez un contrôle TextBox à Form1. Définissez sa propriété Name sur txtDetails.
Étape 2 : Initialiser la zone de liste principale
Déclarer des objets Record et Recordset globaux
Insérez le code suivant dans (Général) (Déclarations) pour Form1 :
Option Explicit Dim grec As Record Dim grs As Recordset
Ce code déclare des références pour les objets globaux Record et Recordset qui seront utilisés par la suite dans ce scénario.
Se connecter à une URL et remplir lstMain
Insérez le code suivant dans le gestionnaire d'événements Form Load pour Form1 :
Private Sub Form_Load() Set grec = New Record Set grs = New Recordset grec.Open "", "URL=https://servername/foldername/", , _ adOpenIfExists Or adCreateCollection Set grs = grec.GetChildren While Not grs.EOF lstMain.AddItem grs(0) grs.MoveNext Wend End Sub
Ce code instancie les objets Record et Recordset globaux. L’enregistrement
grec
est ouvert avec une URL spécifiée comme ActiveConnection. Si l'URL existe, elle est ouverte ; si elle n'existe pas encore, elle est créée.Notez que vous devez remplacer par
https://servername/foldername/
une URL valide de votre environnement.L’objet Recordset
grs
est ouvert sur les enfants de l’objet Recordgrec
. LstMain est ensuite rempli avec les noms de fichiers des ressources publiées sur l’URL.
Étape 3 : Remplir la zone de liste Champs
Insérez le code suivant dans le gestionnaire d'événements Click de lstMain :
Private Sub lstMain_Click() Dim rec As Record Dim rs As Recordset Set rec = New Record Set rs = New Recordset grs.MoveFirst grs.Move lstMain.ListIndex lstDetails.Clear rec.Open grs Select Case rec.RecordType Case adCollectionRecord: Set rs = rec.GetChildren While Not rs.EOF lstDetails.AddItem rs(0) rs.MoveNext Wend Case adSimpleRecord: recFields rec, lstDetails, txtDetails Case adStructDoc: End Select End Sub
Ce code déclare et instancie les objets
rec
Record et Recordset locaux, etrs
respectivement.La ligne correspondant à la ressource sélectionnée dans lstMain est la ligne actuelle de
grs
. La zone de liste Détails est ensuite désactivée etrec
est ouverte avec la ligne actuelle degrs
comme source.Si la ressource est un enregistrement de collection (comme spécifié par RecordType), l’objet Recordset
rs
local est ouvert sur les enfants derec
. lstDetails est ensuite rempli avec les valeurs des lignes ders
.Si la ressource est un enregistrement simple,
recFields
est appelé. Pour plus d’informations surrecFields
, consultez l’étape suivante.Si la ressource est un document structuré, aucun code n'est implémenté.
Étape 4 : Remplir la zone de texte Détails
Créez une sous-routine nommée
recFields
et insérez le code suivant :Sub recFields(r As Record, l As ListBox, t As TextBox) Dim f As Field Dim s As Stream Set s = New Stream Dim str As String For Each f In r.Fields l.AddItem f.Name & ": " & f.Value Next t.Text = "" If r!RESOURCE_CONTENTCLASS = "text/plain" Then s.Open r, adModeRead, adOpenStreamFromRecord str = s.ReadText(1) s.Position = 0 If Asc(Mid(str, 1, 1)) = 63 Then '//63 = "?" s.Charset = "ascii" s.Type = adTypeText End If t.Text = s.ReadText(adReadAll) End If End Sub
Ce code remplit lstDetails avec les champs et les valeurs de l’enregistrement simple passé à
recFields
. Si la ressource est un fichier texte, un objet Stream de type texte est ouvert à partir de l'enregistrement de la ressource. Le code détermine si le jeu de caractères est ASCII et copie le contenu stream danstxtDetails
.