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

 67.630 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

 

 

<< Objecto Connection | Objecto Field >>

referências > ado > objecto recordset


. : : . objecto recordset . : : .

  Os objectos Recordset oferecem mais funcionalidades do que simplesmente um método de guardar e navegar pelos dados. O objecto Recordset é uma tabela de valores. Tem linhas e colunas como uma tabela de uma base de dados, mas um objecto Recordset não é uma tabela. É mais uma tabela virtual ou uma vista.

  Primeiro, os valores das colunas dos objectos Recordset podem vir de várias tabelas diferentes através de uma operação JOIN.
  Segundo, os valores das colunas podem ser valores calculados - podem não coincidir com nenhum valor na base de dados.
  Finalmente, podes procurar e ordenar os objectos Recordset, guardá-los em strings ou arrays, e ainda preservá-los e recuperá-los de um disco de armazenamento como objectos ou como dados XML.

Usar o Método Recordset.Open
  Se precisas de um objecto Recordset com qualquer tipo de cursor para além do cursor forward-only ou do cursor read-only, tens de abrir o objecto directamente em vez de chamar o método Execute do objecto Connection. Os objectos Recordset também têm o método Open, que tem vários argumentos.

Recordset.Open ComandoTexto, Connection|ConnectionString, TipoCursor, TipoFechadura, Opcoes

  O argumento ComandoTexto contém a query de SQL. O argumento Connection|ConnectionString contém a referência para um objecto Connection aberto ou um argumento ConnectionString válido. Se usares o argumento ConnectionString, o método Open cria-te um objecto Connection.

  Se vais apenas fazer uma chamada à base de dados na página, então deixar o ADO criar um objecto Connection é uma opção viável. Mas se fizeres mais do que uma chamada, deves criar e abrir o teu próprio objecto Connection. Isto porque assim tens mais controlo sobre o tipo e a duração do objecto Connection, se tu mesmo o abrires e fechares.

  O argumento TipoCursor é um valor derivado de um ou mais valores de adCursorTypeEnum. A seguinte lista mostra os valores válidos e a descrição de cada um deles:

  • adOpenForwardOnly
    Retorna um cursor forward-only (só para a frente). Esta é o cursor por defeito. Se não especificares o tipo do cursor, o ADO retorna sempre um cursor forward-only. Como o próprio nome indica, apenas podes mover para a frente, e não para trás, pelo objecto Recordset. Usa este cursor sempre que precisas apenas de passar uma vez  pelo objecto Recordset, porque é o tipo de cursor mais rápido.
     

  • adOpenKeySet
    Retorna um cursor keyset (chave de valores). Com este cursor podes mover em qualquer direcção, primeiro, último, seguinte, anterior, saltar registos, ou mover para uma marca (se o fornecedor suportar marcas). Podes ver alterações que outros fazem aos registos no objecto Recordset, mas não podes registos adicionados, uma vez que abriste o objecto Recordset. Não podes aceder ou alterar registos que outros utilizadores apagaram. Usa este cursor para grandes conjuntos de registos nos quais tens de poder andar para trás ou alterar. O servidor cria uma marca única para cada linha quando executas primeiramente uma query. Essas marcas não se alteram durante o tempo de vida do objecto Recordset, e é por isso que não podes ver registos novos.
     

  • adOpenDynamic
    Retorna um cursor dinâmico. Este cursor é exactamente igual ao cursor keyset, excepto que podes ver novos registos que outros adicionaram. Um cursor dinâmico verifica constantemente actualizações e adições no conjunto resultante. Não constrói um conjunto de marcas para o conjunto resultante, por isso um cursor dinâmico abre frequentemente mais depressa que o cursor ketset. Cursores dinâmicos são os que requerem mais recursos de todos os tipos de cursores, por isso não o deves usar a não ser que precises de ver adições no conjunto resultante enquanto o objecto Recordset está aberto.
     

  • adOpenStatic
    Retorna um cursor estático, que é uma cópia fixa de um conjunto de registos. Não podes ver quaisquer alterações ou adições por outros utilizadores sem executares novamente a query. Os objectos Recordset com cursores estáticos podem ser actualizados.

  O argumento TipoFechadura informa o ADO de como tratar as fechaduras da base de dados. Em geral, evita-se fechar os dados para actualizações ou inserções, porque fechaduras criadas por um utilizador pode causar problemas a outros utilizadores na aplicação. Fechaduras Read-Only não causam esses problemas. A seguinte lista mostra os valores válidos de cada uma delas:

  • adLockReadOnly
    Não podes alterar dados.
     

  • adLockPessimistic
    É o mais forte tipo de fechadura.
     

  • adLockBatchOptimistic
    Fecha como a fechadura optimistic, excepto que funciona para updates batch. Favorece as actualizações de muitos registos ao mesmo tempo em vez de actualizar cada registo imediatamente. És tu quem decide se ao usar esta fechadura melhora o funcionamento da aplicação, e em parte, depende do nível de interactividade que a aplicação exige.

  O último argumento são as Opções. Toma exactamente os mesmos valores que as opções do argumento Connection.Execute. O argumento Opções não é obrigatório, mas convém utilizá-lo, pois informa o ADO se a query é uma tabela, vista, procedimento ou uma declaração SQL dinâmica.

O Método Move
  Depois de abrir um objecto Recordset, podes usar os métodos Move Forward e (dependendo do cursor) Backward através das linha de registos. O objecto Recordset fornece a propriedade RecordCount, que retorna o número de registos no objecto Recordset.

  Pensa no objecto Recordset como uma tabela com uma linha vazia no topo e no fundo, e um ponteiro para um registo actual. O ponteiro aponta apenas para um registo de cada vez. Quando usas um dos métodos Move, não andas pelo conjunto de registos, mas sim moves o ponteiro do registo. Os objectos Recordset têm os métodos EOF (end of file) e BOF (begining of file) para que saibas quando o ponteiro do registo se moveu para o último registo ou para o primeiro. EOF e BOF são propriedades Booleanas.

While Not R.EOF
    'Faz Qualquer Coisa
    R.MoveNext
Wend

  É importante verificar sempre se um objecto Recordset está na posição BOF ou EOF antes do pedido de informação, porque senão é gerado um erro quando o objecto Recordset está em ambas as posições ao mesmo tempo (ou seja, quando temos um ficheiro vazio).

Métodos de Ordenação e de Procura
  Podes procurar e ordenar dados com métodos Recordset, aliás é muito mais eficiente obter apenas os dados que precisas do servidor e obtê-los já ordenados. Para ordenar um conjunto de registos, define a propriedade Sort com o(s) nome(s) do(s) campo(s) que queres ordenar. Por exemplo, para ordenar o Recordset:

Select * From Alunos

 pelo último nome, escrevia-se:

R.Sort = "UltimoNome"

  Para ordenar por mais de um campo, separa os nomes dos campos com uma vírgula (,) como se segue:

R.Sort = "UltimoNome, PrimeiroNome"

  Por defeito o sentido da ordenação é ascendente, por isso não precisas escrever um sentido específico (apesar de ser possível). Para ordenar num sentido específico, adiciona-se ASC ou DESC no final da string de ordenação:

R.Sort = "UltimoNome, PrimeiroNome DESC"

  Podes também pesquisar registos específicos num conjunto de registos. Para isso usa o método Recordset.Find. As condições são especificadas tal como numa cláusula Where em SQL, mas sem a palavra Where.
  Depois de executada uma pesquisa, o objecto Recordset é posicionado no primeiro registo encontrado, ou se não forem encontrados registos, no fim do objecto Recordset (EOF).

  Podes incluir múltiplas condições, tal como numa cláusula Where. Em adição ao critério de pesquisa, o método Find aceita três argumentos opcionais:

  • SaltaRegistos
    número de registos a saltar antes de iniciar a pesquisa. Este argumento é particularmente útil quando estás a pesquisar num ciclo ou loop. Dando o valor 1 a este argumento, podes começar a pesquisar num registo seguinte ao registo actual. Quando a pesquisa for efectuada para trás, atribui-lhe valores negativos.
     

  • DirecçãoPesquisa
    especifica a direcção da pesquisa, adSearchForward (para a frente) ou adSearchBackward (para trás).
     

  • Inicio
    o número da marca do registo por onde a pesquisa deve começar. Deves especificar ou o SaltaRegistos ou o Inicio, mas nunca ambos.

R.Find "TextoDePesquisa",  SaltaRegistos, DirecçãoPesquisa, Inicio

<< Objecto Connection | Objecto Field >>

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