NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!
UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI
« Lição anterior | ![]() |
Δ Página principal | ![]() |
¤ Capítulos | ![]() |
Próxima lição » |
SQL Server 2005 - CURSO COMPLETO Autor: Júlio Battisti | |||
---|---|---|---|
Lição 196 - Capítulo 11 - UM EXEMPLO UTILIZANDO ODBC | |||
Neste item, vamos utilizar a fonte ODBC, nwind, criada anteriormente, para criar uma página ASP que conecta o Banco de Dados Northwind.mdb do Access e mostra uma listagem de Clientes com as seguintes informações, da tabela Clientes: • Código do Cliente (CódigoDoCliente). • Cargo (CargoDoContato). • Endereço (Endereço). • Telefone (Telefone). Nota: O nome entre parênteses é o nome do campo na tabela Clientes do Banco de Dados C:\Meus documentos\Northwind.mdb, o qual é o banco associado a fonte ODBC nwind.mdb. Caso você esteja utilizando outro Banco de Dados ou outra tabela, utilize os nomes de campo adequados. Na Figura 11.33, podemos ver a estrutura da tabela Clientes que está sendo utilizada no nosso exemplo.
No Exemplo 11.3 apresentamos uma página ASP que faz a conexão com o Banco de Dados Northwind.mdb e exibe uma listagem de Clientes. Após a listagem explicaremos cada um dos comandos utilizados. Nota: Crie este exemplo utilizando o editor de textos de sua preferência. Não inclua o número das linhas, os quais servem apenas para referência. Salve este exemplo na pasta C:\LivroSQL2005\Capitulo11, com o nome de Exemplo11-3.asp. Exemplo 11.3 – Uma página ASP que conecta com o Banco de Dados Northwind – Exemplo11-3.asp. 1. <%@ Language=VBScript %> 2 <HTML> 3 <HEAD> 4 <TITLE>Clientes no Banco de Dados Northwind !</TITLE> 5 </HEAD> 6 <BODY> 7 <H1> 8 <FONT color=navy>Listagem de Clientes !!!</FONT> 9 </H1> 10 <% 11 ‘O primeiro passo é criar a conexão com o Banco de Dados 12 ‘Para isto crio um objeto do tipo Connection 13 ‘Cria um objeto do Tipo ADODB.Connection 14 Set conn = Server.CreateObject(“ADODB.Connection”) 15 ‘Agora abro uma conexão com a fonte ODBC “nwind” 16 ‘criada anteriormente. 17 conn.Open “nwind” 18 ‘O próximo passo é criar uma instrução SQL 19 ‘a qual é utilizada para criar a listagem de Clientes. 20 inst_sql=“SELECT Clientes.CódigoDoCliente, Clientes.CargoDoContato, Clientes.Endereço,Clientes.Telefone FROM Clientes” 21 ‘Esta instrução SQL retorna os campos CódigoDoCliente, CargoDoContato, 22 ‘Endereço e Telefone, da tabela Clientes. 23 ‘Agora criamos um objeto RecordSet. 24 ‘Este objeto irá executar a instrução SQL e 25 ‘receber o resultado da consulta. 26 Set Clientes = Server.CreateObject(“ADODB.Recordset”) 27 ‘Agora executamos a instrução SQL 28 ‘retornando os registros da tabela Clientes. 29 Clientes.Open inst_sql, conn, 3, 3 30 ‘Os dois últimos parâmetros serão discutidos 31 ‘no próximo item, quando estudarmos o objeto RecordSet em detalhes. 32 ‘Neste ponto já tenho todos os registros retornados 33 ‘pela instrução SQL. Estes registros estão armazenados 34 ‘no objeto Clientes, que é um objeto do tipo Recordset. 35 ‘Agora passo a montar a página que será retornada para o 36 ‘navegador do Cliente. Vamos montar uma tabela com o 37 ‘resultado da consulta. 38 %> 39 <P> 40 <HR> 41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=“100%”> 42 <TR> 43 <TD align=middle bgColor=gray>Código</TD> 44 <TD align=middle bgColor=gray>Cargo</TD> 45 <TD align=middle bgColor=gray>Endereço</TD> 46 <TD align=middle bgColor=gray>Telefone</TD> 47 </TR> 48 <% 49 ‘Inicio um Loop para percorrer todos os registros 50 ‘do RecordSet Clientes, exibindo um registro em 51 ‘cada linha da tabela. 52 Do Until Clientes.eof %> 53 <TR> 54 <TD align=middle bgColor=gray><%=Clientes.Fields(“CódigoDoCliente”)%></TD> 55 <TD align=middle bgColor=gray><%=Clientes.Fields(“CargoDoContato”)%></TD> 56 <TD align=middle bgColor=gray><%=Clientes.Fields(“Endereço”)%></TD> 57 <TD align=middle bgColor=gray><%=Clientes.Fields(“Telefone”)%></TD> 58 </TR> 59 <% 60 Clientes.MoveNext 61 loop %> 62 </TABLE> 63 </P> 64 <HR> 65 </BODY> 66 </HTML> Ao carregar esta página no Internet Explorer, o usuário recebe uma listagem conforme indicado na Figura 11.34.
Antes de comentarmos esta listagem gostaria, mais uma vez, de salientar a natureza dinâmica das páginas criadas com ASP. Neste exemplo, qualquer alteração que seja feita nos dados da tabela Clientes, refletirá na listagem de Clientes, na próxima vez que o usuário carregar a página Exemplo11-3.asp. Isto acontece porque a listagem é montada, a partir do Banco de Dados, cada vez que a página é carregada. Com isso, ao carregar a página, todos os dados existentes na tabela Clientes serão exibidos. Por isso que dizemos que a página é criada dinamicamente, ou seja, cada vez que a página é solicitada, o código ASP estabelece a conexão com o Banco de Dados, solicita a listagem atualizada de Clientes e apresenta a listagem no formato de uma tabela, conforme definimos. Agora vamos às explicações a respeito do código do Exemplo11.3. Embora existam diversos comentários na própria listagem, cabe aqui, alguns esclarecimentos. Vamos detalhar diversos trechos de código deste exemplo. Trecho 1: Considere o seguinte trecho de código: 14 Set conn = Server.CreateObject(“ADODB.Connection”) Esta linha cria um objeto Connection chamado conn. Poderíamos utilizar qualquer nome válido para este objeto. Um ponto importante a salientar é a utilização da instrução Set. Sempre que formos criar um objeto (Connection, Recordset, etc.), devemos usar a instrução Set. Se não utilizarmos a instrução Set na criação de objetos, obteremos um erro na hora de carregar a página. Também é importante observarmos o seguinte: Server.CreateObject(“ADODB.Connection”) Este código cria um objeto no servidor, sendo que este objeto é do tipo ADODB.Connection, ou seja, uma conexão ADO para Banco de Dados. Após a execução deste comando, um objeto Connection foi criado, porém o objeto ainda não faz referência a nenhum Banco de Dados específico. Trecho 2: Considere o seguinte trecho de código: 15 ‘Agora abro uma conexão com a fonte ODBC “nwind” 16 ‘criada anteriormente. 17 conn.Open “nwind” Na linha 17, estou associando a conexão conn a uma fonte ODBC nwind. Lembrando que esta fonte ODBC foi criada previamente. Caso você esteja utilizando uma fonte ODBC diferente, utilize o nome adequado. Esta associação é feita através do método Open, do objeto Connection. A partir deste momento, a minha conexão conn está associada ao Banco de Dados Northwind.mdb, conforme definido pala fonte ODBC nwind. Uma vez estabelecida a conexão é hora de retornar dados, isto é, registros, a partir do Banco de Dados. Isto é feito pelo trecho de código a seguir. Trecho 3: Considere o seguinte trecho de código. 20 inst_sql=“SELECT Clientes.CódigoDoCliente, Clientes.CargoDoContato, Clientes.Endereço,Clientes.Telefone FROM Clientes” 21 ‘Esta instrução SQL retorna os campos CódigoDoCliente, CargoDoContato, 22 ‘Endereço e Telefone, da tabela Clientes. 23 ‘Agora criamos um objeto RecordSet. 24 ‘Este objeto irá executar a instrução SQL e 25 ‘receber o resultado da consulta. 26 Set Clientes = Server.CreateObject(“ADODB.Recordset”) 27 ‘Agora executamos a instrução SQL 28 ‘retornando os registros da tabela Clientes. 29 Clientes.Open inst_sql, conn, 3, 3 30 ‘Os dois últimos parâmetros serão discutidos 31 ‘durante o estudo do objeto Recordset. Na linha 20, simplesmente, criamos uma variável chamada inst_sql, a qual contém a instrução SQL que será executada no Banco de Dados Northwind.mdb. Observe que é uma instrução SQL bastante simples, a qual, basicamente, seleciona os campos CódigoDoCliente, CargoDoContato, Endereço e Telefone da tabela Clientes do Banco de Dados Northwind.mdb. Uma vez definida a instrução SQL, partimos para a criação de um objeto RecordSet. A criação deste objeto é feita na linha 26, onde é criado um RecordSet chamado Clientes. Poderíamos ter escolhido qualquer nome para este objeto. Observe a utilização da instrução Set. Como estamos criando um objeto (do tipo RecordSet), devemos utilizar a instrução Set. Agora devemos executar a instrução SQL, para que o objeto Recordset contenha os registros retornados pela instrução SQL. Isto é feito pelo seguinte código: 29 Clientes.Open inst_sql, conn, 3, 3 Neste caso, utilizamos o método Open do objeto RecordSet Clientes. O primeiro parâmetro é a instrução SQL a ser utilizada – inst_sql. O segundo parâmetro é o nome da conexão a ser utilizada – conn. O terceiro e quatro parâmetros definem comportamentos para o objeto RecordSet, tais como se é possível mover-se para frente e para trás, avançando e voltando pelos registros, se os registros retornados são apenas para leitura ou para leitura e alterações e assim por diante. Estudaremos estas opções no próximo tópico. Bem, neste momento já temos um objeto RecordSet chamado Clientes, o qual possui uma série de registros obtidos a partir da tabela Clientes do Banco de Dados Northwind. Cada registro tem quatro campos, conforme foi definido pela nossa instrução SQL, que somente retorna os campos CódigoDoCliente, CargoDoContato, Endereço e Telefone. Uma vez que o RecordSet Clientes foi criado com sucesso, é hora de criarmos uma tabela que exibe os dados do objeto RecordSet. Começamos criando a primeira linha da tabela, a qual irá conter o título das colunas. Isto é feito pelo código descrito a seguir. Trecho 4: Considere o seguinte trecho de código. 41 <TABLE bgColor=gray border=1 borderColor=navy cellPadding=1 cellSpacing=1 width=“100%”> 42 <TR> 43 <TD align=middle bgColor=gray>Código</TD> 44 <TD align=middle bgColor=gray>Cargo</TD> 45 <TD align=middle bgColor=gray>Endereço</TD> 46 <TD align=middle bgColor=gray>Fone</TD> 47 </TR> Observe que, para criar o cabeçalho da tabela, utilizamos código HTML puro. Veja que estamos criando uma tabela com quatro colunas. Vamos exibir um registro por linha; como cada registro tem quatro campos, precisamos de uma tabela com quatro colunas. Esta tabela terá tantas linhas quantos forem os registros do objeto Clientes. A construção do corpo da tabela é feita com o seguinte trecho de código: 52 Do Until Clientes.eof %> 53 <TR> 54 <TD align=middle bgColor=gray><%=Clientes.Fields(“CódigoDoCliente”)%></TD> 55 <TD align=middle bgColor=gray><%=Clientes.Fields(“CargoDoContato”)%></TD> 56 <TD align=middle bgColor=gray><%=Clientes.Fields(“Endereço”)%></TD> 57 <TD align=middle bgColor=gray><%=Clientes.Fields(“Telefone”)%></TD> 58 </TR> 59 <% 60 Clientes.MoveNext 61 loop %> 62 </TABLE> Na linha 52, iniciamos um laço Do Until Condição... Loop. Como condição utilizamos a propriedade Eof do objeto Clientes. O laço continua sendo executado, até que a condição Clientes.eof se torne verdadeira. Esta condição somente irá tornar-se verdadeira quando o indicador de registro já estiver além do último registro, ou seja, após ter sido atingido o último registro do objeto RecordSet. Com isso, o laço somente será encerrado depois que tivermos percorrido todos os registros do objeto Clientes, que é exatamente o que queremos. Para cada registro é criada uma nova linha na tabela. Isto é feito pelo seguinte trecho de código: 53 <TR> 54 <TD align=middle bgColor=gray><%=Clientes.Fields(“CódigoDoCliente”)%></TD> 55 <TD align=middle bgColor=gray><%=Clientes.Fields(“CargoDoContato”)%></TD> 56 <TD align=middle bgColor=gray><%=Clientes.Fields(“Endereço”)%></TD> 57 <TD align=middle bgColor=gray><%=Clientes.Fields(“Telefone”)%></TD> 58 </TR> Observe o fragmento de código: <%=Clientes.Fields(“CódigoDoCliente”)%> Este fragmento retorna o valor do campo CódigoDoCliente do registro atual do Recordset Clientes. Com isso, vamos preenchendo cada coluna com os respectivos valores de cada campo de cada registro. A primeira coluna com o campo CódigoDoCliente, a segunda com o campo CargoDoContato e assim por diante. Neste caso, utilizamos a coleção Fields do RecordSet Clientes, a qual nos dá acesso aos campos individuais de cada registro. As linhas seguintes são de grande importância: 59 <% 60 Clientes.MoveNext 61 loop %> 62 </TABLE> Se não colocássemos a linha 60, esta página ASP entraria em Loop infinito e somente o primeiro registro seria exibido repetidamente, até congelar a página. Quando criamos um objeto RecordSet, por padrão, o indicador de registro é posicionado no primeiro registro. Utilizamos o método MoveNext para mover o indicador para o próximo registro. Com isso, a cada passagem do Laço Do Until, o indicador é posicionado no próximo registro, até o momento em que todos os registros foram percorridos. Se não houvesse esta linha, o indicador ficaria sempre no primeiro registro e o laço nunca seria encerrado, pois a condição Clientes.eof seria sempre verdadeira, impedindo que o laço fosse encerrado. A linha 62 é simplesmente a tag HTML de fechamento da tabela. Já vimos alguns exemplos nos quais utilizamos o objeto Recordset. Agora vamos estudá-lo em detalhes. Vamos falar sobre seus métodos, propriedades e eventos. Também veremos exemplos de utilização do objeto Recordset. |
|||
« Lição anterior | ![]() |
Δ Página principal | ![]() |
¤ Capítulos | ![]() |
Próxima lição » |
Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela
Aplica-se ao Access 2019, 2016, 2013 e 2010!
Para todos os detalhes, acesse:
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2025 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI