Como Clonar os conjuntos de Registros (recordset)

 

Imagine a situação onde será necessário fazer uma cópia exata de seus registros. Como você faria isso ?

Você poderia criar e abrir um outro objeto recordset, usando a mesma conexão e instrução SQL que a original, mas essa não é a format mais eficiente de fazer isso, e as mudanças em um recordset não seriam as mesma refletidas no outro.Alem disto, não há nenhuma garantia que ambos os conjuntos de registros iriam conter os mesmos dados, pois os dados da fonte poderiam ter sido mudados entre a criação dos dois.

Com ADO você pode fazer isso de forma, isto se chama CLONAGEM

O método clone permite a criação de uma copia exata, sincronizada de um obj RecordSet existente, é importante saber que este método não  cria dois recordsets independentes, o que voce obtem, quando cria um clone , é uma cópia dos dados e dois ponteiros.Voce pode mover estes ponteiros independentemente e, como só há uma cópia dos dados as mudanças feitas através do ponteiro aparecem no outro.Isto acontece até você reconsulte o conjunto de registros original.Isto quebra o elo entre os dois – o conjunto de registros clonados não está mais sincronizado com o original – e então você tem duas cópias de dados.

 

Como criar um Clone

Há varias formas de clonar um conjunto de registros.A sintaxe geral para o método é:

 

Set rs_clone=rs_original.clone ([LockType])

 

Onde:

 

LockType – especifica o tipo de bloqueio para o novo clone.

 

Abaixo uma criação de clone com o mesmo tipo de bloqueio do seu progenitor.

 

Set rs_clone= rs.clone adLockUnspecified

 

Um valor LockTpeEnum de adLockUnspecified indica que os tipos de bloqueio devem ser os mesmos.Este valor é de default, então o código acima vai fazer a mesma tarefa que o seguinte:

 

Set rs_clone = rs.clone

 

 

O único valor válido para o parâmetro LockType é adLockReadOnly, que cria um clone somente de leitura.

 

Set rs_clone = rs.clone adLockReadOnly

 

Vale a pena observar que você só pode clnar os conjuntos de registros que podem ser indicados.Você pode descobrir se o seu conjunto de registro suporta indicadores usando o método Supports do recordset (falaremos desse método em outro artigo).

 

If rs.Supports (adBookMark) then

     Set rs_clone = rs.Clone

End if

 

Como criar o nosso primeiro clone

 

Espeficicando explicitamente um cursor estático para o conjunto de registros original.O cursor estático, como os cursoresde tipo de chaves e dinâmicos, é um cursor rolante que aceita indicadores e portanto um tipo legal de clonagem:

 

Set rs=Server.CreateObject(“ADODB.Recorset”)

‘ cria o objeto recordset

‘ usa o tipo de cursor estático para clonar

‘ você também poderia usar um cursor de conjunto chaves

rs.cursorType = 3   ‘adOpenStatic

Set rs.ActiveConnection = conexao

rs.Open strSQL ‘abre o conjunto de registros

 

Uma vez que oconjunto de registros esteja aberto, podemos cloná-los e ver que ele fornece alguma saída:

 

Set rs_clone = rs.Clone   ‘ executa a clonagem

Do While Not rs_clone.EOF   

    response.Write rs_clone (1).Value & “<BR>”

    rs_clone.MoveNext

Loop

%>

</Body>

</HTML>

Escrito por X@nBuRzUm on novembro 28, 2008. Arquivado em ASP.net. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>