Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 RecordsetEste 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 SubEste 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
grsRegistos é 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 SubEste 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 erecé aberta com a linha atual degrscomo origem.Se o recurso for um registo de coleção (conforme especificado por RecordType), o Conjunto de Registos
rslocal é 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 sobrerecFieldso , 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
recFieldse 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 SubEste 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.