Compartilhar via


Cenário de Publicação de Internet

Aplica-se ao: Access 2013, Office 2013

Este exemplo de código demonstra como usar o ADO com o Provedor DB Microsoft OLE para Publicação na Internet. Neste cenário, você criará um aplicativo do Visual Basic que usa os objetos Recordset, Record e Stream para exibir o conteúdo dos recursos publicados com o Internet Publishing Provider.

As seguintes etapas são necessárias para criar este cenário:

  1. Configure o projeto do Visual Basic.
  2. Inicialize a caixa de listagem Principal.
  3. Preencha a caixa de listagem Campos.
  4. Preencha a caixa de texto Detalhes.

Passo 1: Configurar o projeto do Visual Basic

Neste cenário, considera-se que você tem o Microsoft Visual Basic 6.0 ou posterior, ADO 2.5 ou posterior e o Microsoft OLE DB Provider for Internet Publishing instalado no seu sistema.

Criar um projeto ADO

  1. No Microsoft Visual Basic, crie um novo projeto EXE padrão.

  2. No menu Projeto, clique em Referências.

  3. Selecione Microsoft ActiveX Data Objects 2.5 Library e, em seguida, clique em OK.

Inserir controlos no formulário principal

  1. Adicione um controle ListBox em Form1. Defina a respetiva propriedade Name como lstMain.

  2. Adicione outro controle ListBox em Form1. Defina a respetiva propriedade Name como lstDetails.

  3. Adicione um controle TextBox em Form1. Defina a respetiva propriedade Name como txtDetails.

Passo 2: inicializar a caixa de listagem Principal

Declarar objetos globais de Registo e Conjunto de registos

  • Insira o seguinte código em (General) (Declarations) para Form1:

    
      Option Explicit 
      Dim grec As Record 
      Dim grs As Recordset 
    

    Este código declara as referências de objetos globais para os objetos Record e Recordset que serão usados posteriormente neste cenário.

Ligar a um URL e preencher lstMain

  • Insira o seguinte código no manipulador de eventos Form Load para 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 
    

    Este código instancia os objetos Record e Recordset globais. O Registogrec é aberto com um URL especificado como ActiveConnection. Se o URL existir, estará aberto; se ainda não existir, será criado.

    Tenha em atenção que deve substituir por https://servername/foldername/ um URL válido do seu ambiente.

    O Conjunto degrs Registos é aberto nos subordinados do Registogrec. Em seguida, o lstMain é preenchido com os nomes de ficheiro dos recursos publicados no URL.

Passo 3: preencher a caixa de listagem Campos

  • Insira o seguinte código no manipulador de eventos 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 
    

    Este código declara e instancia os objetos reclocais Record e Recordset ers, respetivamente.

    A linha correspondente ao recurso selecionado em lstMain torna-se a linha atual de grs. Em seguida, a caixa de listagem Detalhes é desmarcada e rec é aberta com a linha atual de grs como origem.

    Se o recurso for um registo de coleção (conforme especificado por RecordType), o Conjunto de Registosrs local é aberto nos subordinados de rec. Em seguida, lstDetails é preenchido com os valores das linhas de rs.

    Se o recurso for um registo simples, recFields é chamado. Para obter mais informações sobre recFieldso , consulte o passo seguinte.

    Nenhum código será implementado se o recurso for um documento estruturado.

Passo 4: preencher a caixa de texto Detalhes

  • Crie uma nova subrreplicação com o nome recFields e insira o seguinte código:

    
      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 
    

    Este código preenche lstDetails com os campos e valores do registo simples transmitido para recFields. Se o registro for um arquivo de texto, um texto Stream será aberto a partir do registro de recurso. O código determina se o conjunto de carateres é ASCII e copia os conteúdos do Stream para txtDetails.