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:
- Configure o projeto do Visual Basic.
- Inicialize a caixa de listagem Principal.
- Preencha a caixa de listagem Campos.
- 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
No Microsoft Visual Basic, crie um novo projeto EXE padrão.
No menu Projeto, clique em Referências.
Selecione Microsoft ActiveX Data Objects 2.5 Library e, em seguida, clique em OK.
Inserir controlos no formulário principal
Adicione um controle ListBox em Form1. Defina a respetiva propriedade Name como lstMain.
Adicione outro controle ListBox em Form1. Defina a respetiva propriedade Name como lstDetails.
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 Registo
grec
é 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 de
grs
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
rec
locais 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 erec
é aberta com a linha atual degrs
como origem.Se o recurso for um registo de coleção (conforme especificado por RecordType), o Conjunto de Registos
rs
local é aberto nos subordinados derec
. Em seguida, lstDetails é preenchido com os valores das linhas ders
.Se o recurso for um registo simples,
recFields
é chamado. Para obter mais informações sobrerecFields
o , 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 paratxtDetails
.