Freigeben über


Szenario für Veröffentlichungen im Internet

Gilt für: Access 2013, Office 2013

Mit diesem Code wird die Verwendung von ADO (ActiveX Data Objects) mit dem Microsoft OLE DB-Anbieter für Internet Publishing veranschaulicht. In diesem Szenario erstellen Sie eine Visual Basic-Anwendung, von der mithilfe der Objekte Recordset, Record und Stream die Inhalte von Ressourcen angezeigt werden, die mit dem Internet Publishing-Anbieter veröffentlicht wurden.

Für die Erstellung dieses Szenarios sind die folgenden Schritte erforderlich:

  1. Richten Sie das Visual Basic-Projekt ein.
  2. Initialisieren Sie das Hauptlistenfeld.
  3. Füllen Sie das Listenfeld Felder aus.
  4. Füllen Sie das Textfeld Details aus.

Schritt 1: Einrichten des Visual Basic-Projekts

Dieses Szenario geht davon aus, dass Sie Microsoft Visual Basic 6.0 oder höher, ADO 2.5 oder höher und den Microsoft OLE DB-Anbieter für Internet Publishing auf dem System installiert haben.

Erstellen eines ADO-Projekts

  1. Erstellen Sie in Microsoft Visual Basic ein neues Standard EXE-Projekt.

  2. Klicken Sie im Menü Project auf References.

  3. Wählen Sie Microsoft ActiveX Data Objects 2.5 Library aus, und klicken Sie dann auf OK.

Einfügen von Steuerelementen im Hauptformular

  1. Add a ListBox control to Form1. Legen Sie die Name-Eigenschaft auf lstMain fest.

  2. Add another ListBox control to Form1. Legen Sie die Name-Eigenschaft auf lstDetails fest.

  3. Add a TextBox control to Form1. Legen Sie die Name-Eigenschaft auf txtDetails fest.

Schritt 2: Initialisieren des Hauptlistenfelds

Deklarieren von globalen Record- und Recordset-Objekten

  • Insert the following code into the (General) (Declarations) for Form1:

    
      Option Explicit 
      Dim grec As Record 
      Dim grs As Recordset 
    

    Dieser Code deklariert globale Objektverweise für die Objekte Record und Recordset, die später in diesem Szenario verwendet werden.

Herstellen einer Verbindung mit einer URL und Auffüllen von lstMain

  • Fügen Sie im Form Load-Ereignishandler für Form1 den folgenden Code ein:

    
      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 
    

    Dieser Code instanziiert die globalen Objekte Record und Recordset. Der Datensatzgrec wird mit einer URL geöffnet, die als ActiveConnection angegeben ist. Wenn die URL vorhanden ist, wird sie geöffnet. wenn sie noch nicht vorhanden ist, wird sie erstellt.

    Beachten Sie, dass Sie durch eine gültige URL aus Ihrer Umgebung ersetzen https://servername/foldername/ sollten.

    Das Recordsetgrs wird für die untergeordneten Elemente des Datensatzesgrec geöffnet. Der lstMain wird dann mit den Dateinamen der Ressourcen aufgefüllt, die in der URL veröffentlicht wurden.

Schritt 3: Auffüllen des Listenfelds "Felder"

  • Insert the following code into the Click event handler of 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 
    

    Dieser Code deklariert und instanziiert lokale Record- und Recordset-Objekterec bzw rs.

    Die Zeile, die der in lstMain ausgewählten Ressource entspricht, wird zur aktuellen Zeile von grsgemacht. Das Listenfeld Details wird dann gelöscht und rec mit der aktuellen Zeile von grs als Quelle geöffnet.

    Wenn es sich bei der Ressource um einen Sammlungsdatensatz handelt (wie durch RecordType angegeben), wird das lokale Recordsetrs für die untergeordneten Elemente von recgeöffnet. lstDetails wird dann mit den Werten aus den Zeilen von rsgefüllt.

    Wenn die Ressource ein einfacher Datensatz ist, recFields wird aufgerufen. Weitere Informationen zu recFieldsfinden Sie im nächsten Schritt.

    Ist die Ressource ein strukturiertes Dokument, wird kein Code implementiert.

Schritt 4: Auffüllen des Textfelds "Details"

  • Erstellen Sie eine neue Unterroutine namens , recFields und fügen Sie den folgenden Code ein:

    
      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 
    

    Dieser Code füllt lstDetails mit den Feldern und Werten des einfachen Datensatzes auf, der an recFieldsübergeben wird. If the resource is a text file, a text Stream is opened from the resource record. Der Code bestimmt, ob der Zeichensatz ASCII ist, und kopiert den Streaminhalt in txtDetails.