HOME | GUIA ASP | NOTÍCIAS | LIVRO DE VISITAS

 67.627 visitas desde 18-10-2000

Terça-Feira, 7 de Setembro de 2010 

Pesquisar Guia ASP
>>
Dicas de Pesquisa

Join WebHost4Life.com

  Bem Vindo!
  Abordagem às ASP
  Requisitos para as ASP
  Escrever no Browser
  Declarar Variáveis
  If
  For ... Next
  For Each Objecto In Colecção ... Next
  While ... Wend
  Select Case
  And, Or, Not
  Subrotinas
  Funções
  Inclusões
  Introdução ao Modelo de Objectos
  Request
  ServerVariables
  Response
  Server
  Session
  Application
  Ficheiro Global.asa
  Request.Form
  Request.QueryString
  Get vs. Post
  Listar Registos
  Inserir Registos
  Actualizar Registos
  Eliminar Registos
  Declarações e Operadores
  Verificar Dados
  Converter Dados
  Funções de Formatação
  Funções Matemáticas
  Funções Data
  Constantes Data
  Constantes Dia Semana
  Strings
  Outras Funções
  Estruturas de Controlo
  Introdução SQL
  Select
  Inner Join e Outer Join
  Valores Calculados e Cláusula Group By
  Insert
  Update
  Delete
  Introdução ADO
  Objecto Connection
  Objecto Recordset
  Objecto Field
  Introdução COM
  TextStream
  Componentes de E-mail
  Mapa do Guia ASP

 

 

<< Get vs. Post | Inserir Registos >>

tratar dados > bases de dados > listar registos


. : : . listar registos . : : .

  Aqui vamos ver um exemplo prático de como usar ASP e ADO para criar um site navegável com base de dados. Vamos primeiro ver exemplos simples, e depois passamos aos mais complexos.

  Considera uma base de dados para uma turma de alunos. O esquema da base de dados é o seguinte:

Tabela: Aluno
ID Número ID do aluno; também chave primária da tabela.
PrimeiroNome Primeiro nome do aluno.
UltimoNome Último nome do aluno.
DataNascimento Data de nascimento do aluno.
Email Endereço de e-mail do aluno.

Obter os Dados
  Precisas de usar a declaração Select do SQL para ler os dados de uma tabela (podes consultar mais informações sobre SQL mais à frente na Referência SQL).
  Digamos que queres visualizar uma lista completa de todos os alunos da turma. Aqui está uma página que lista os registos de todos os alunos numa Tabela:

<HTML>
<HEAD>
<TITLE>Registos de Alunos</TITLE>
</HEAD>
<BODY>
<%

Dim Conn
Dim DsnAccess
Set Conn = Server.CreateObject("ADODB.Connection")
DsnAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BasesDados\Alunos.mdb"
Conn.Open DsnAccess

Dim RS
Set RS = Server.CreateObject ("ADODB.Recordset")
Dim SqlString
SqlString = "Select * From Aluno"
Set RS = Conn.Execute(SqlString)

If RS.EOF And RS.BOF Then
    Response.Write "Existem 0 registos."
Else
    RS.MoveFirst
    While Not RS.EOF
        Response.Write RS("PrimeiroNome")
        Response.Write RS("UltimoNome")
        Response.Write "<HR>"
        RS.MoveNext
    Wend
End If
%>
</BODY>
</HTML>

  Vamos agora ver o exemplo linha a linha.
  As primeiras linhas são de abertura das etiquetas de HTML para qualquer página. Não têm qualquer código ASP. O bloco de ASP começa com a declaração,

Dim Conn
Dim DsnAccess

que é a declaração de duas variáveis que vamos usar mais tarde.
  A segunda linha,

Set RS = Server.CreateObject ("ADODB.Connection")

faz as seguintes duas coisas:
  Primeiramente, o lado direito da declaração, Server.CreateObject() é usado para criar uma instância de um objecto COM que tem o ProgID ADODB.Connection.
  Depois a declaração Set atribui esta referência à nossa variável RS. Agora usamos o objecto criado para ligarmos à base de dados usando uma Connection String (string de ligação).

  A string,

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BasesDados\Alunos.mdb"

é uma string de expressão que diz ao objecto onde procurar a base de dados, e acima de tudo, que tipo de base de dados é (quer seja uma base de dados Access, Sybase, Oracle, ou outras).
  Atenção, esta string de ligação é específica para bases de dados Access 2000. Este exemplo não usa ODBC.

  Se a declaração Conn.Open for executada sem erros, temos uma ligação válida para a nossa base de dados em consideração. Só após este passo podemos começar a usar a base de dados.

  As linhas seguintes,

Dim RS
Set RS = Server.CreateObject ("ADODB.Recordset")

têm a mesma finalidade que as linhas para criar o objecto ADODB.Connection, a diferença é que aqui estamos a criar o objecto ADODB.Recordset!

  Agora,

Dim SqlString
SqlString = "Select * From Aluno"
Set RS = Conn.Execute(SqlString)

estas são talvez as linhas mais importantes deste exemplo. Dada uma declaração SQL, a última destas três linhas executa o pedido (query), e atribui os registos retornados ao nosso objecto Recordset.

  Agora, assumindo que todos os registos que queremos estão no nosso objecto Recordset, vamos proceder à sua visualização.

If RS.EOF And RS.BOF Then
    Response.Write "Existem 0 registos."

  Em qualquer situação em que é esperado que não existam registos, esta é uma importante verificação de erro a ser testada. Caso o teu pedido não retorne qualquer resultado, o Recordset.BOF (inicio do ficheiro) e o Recordset.EOF (fim do ficheiro) têm ambos o valor True (verdadeiro) ao mesmo tempo. Então podes facilmente escrever uma declaração If para efectuar uma verificação muito básica de um erro (se não o fizeres nesta altura vais encontrar erros em partes de script mais à frente. É sempre mais sábio prevenir do que remediar os erros!).

  Vamos ver as próximas linhas do código como um bloco completo, sem separar as linhas de código.

Else
    RS.MoveFirst
    While Not RS.EOF
        Response.Write RS("PrimeiroNome")
        Response.Write RS("UltimoNome")
        Response.Write "<HR>"
        RS.MoveNext
    Wend
End If

  RS.MoveFirst é o método que move o ponteiro do registo (por agora, considera que é uma estrutura imaginária que aponta sempre para o registo actual no Recordset) para o primeiro registo. Por defeito, pode ou não estar correctamente posicionado, por isso é imperativo posicioná-lo antes fazeres alguma operação.

  Depois temos o ciclo While que faz a iteração por todos os registos contidos no Recordset. A condição que verificamos é que RS.EOF deve ser ter o valor False. No momento em que toma o valor True, significa que não existem mais registos a serem procurados.

  O RS("PrimeiroNome") recupera o valor do campo "PrimeiroNome" do registo actual. Usamos a declaração Response.Write para escrever o primeiro nome do aluno na página. Escrevemos igualmente o RS("UltimoNome") depois do primeiro nome. Depois escrevemos a etiqueta HTML <HR> que coloca uma linha horizontal a separar os dados de cada aluno.

  Quando acabas esta operação, deves mover o ponteiro para o próximo registo, então executas um RS.MoveNext. E é tudo o que queres fazer dentro do ciclo, por isso agora fechas o ciclo escrevendo Wend, e o ciclo acaba, assim como este exemplo!

Avançando para Queries (pedidos) Complexos
  O que fica mais complexo são as queries, e não o método de aceder aos dados! Por isso quaisquer que sejam os dados que queres, usas sempre exactamente a mesma sintaxe no teu código. A única coisa que muda é a declaração SQL e, talvez, os campos que realmente queres mostrar numa página.

<< Get vs. Post | Inserir Registos >>

powered by
nrwebdesign.com

 

 

copyright © 2000/2010 - SafeMode WebArts - todos os direitos reservados

site optimizado para IE 5+, resolução de 800x600 e ligação RDIS ou ISDN

www.safemode.pt.vu produzido por nrwebdesign.com