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.
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>
Últimos Comentários