Fazendo uma cópia de um
Recordset ADO.
Vamos mostrar como fazer uma cópia de um recordset ADO usando código. A dica é salvar os registros do recordset no formato XML e então abrir um segundo recordset usando o arquivo gerado.
Vamos usar uma conexão com o SQL Server 2000 e abrir a tabela Authors do banco de dados Pubs. A seguir vamos filtrar alguns autores , usando um critério , para em seguida fazer a cópia deste recordset gerado usando ADO Stream . Depois é só abrir um novo recordset e abrir o arquivo gerado.
Nota: A string de conexão usada é a seguinte: oConn.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;User ID=sa;Password=;"
1-) Inicie um novo projeto no Visual Basic e no formulário padrão insira um botão de comando e duas caixas de textos e labels conforme no layout abaixo:
Agora insira o seguinte código no botão de comando :
Private Sub Command1_Click() Dim oConn As ADODB.Connection Dim oRs As ADODB.Recordset Dim oStm As ADODB.Stream Dim oRs2 As ADODB.Recordset ' Cria e abre uma nova conexão Set oConn = New ADODB.Connection oConn.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;User ID=sa;Password=;" ' Cria e abre um novo recordset baseado na tabela Authors do banco de dados Pubs Set oRs = New ADODB.Recordset oRs.CursorLocation = adUseClient oRs.Open "Select * From authors", oConn, adOpenStatic, adLockBatchOptimistic, adCmdText Label5.Caption = oRs.RecordCount ' Filtra e exibe somente os autores com o criterio - state = 'CA' oRs.Filter = "state = 'CA'" Label6.Caption = oRs.RecordCount ' Salva os registros filtrados em um ADO Stream Set oStm = New ADODB.Stream oStm.Open oRs.Save oStm, adPersistXML ' Cria um novo Recordset baseado no recordset inicial(via Stream) Set oRs2 = New ADODB.Recordset oRs2.Open oStm Label1.Caption = oRs2.RecordCount End Sub |
- oRs é o recordset gerado pela tabela Authors - Select * From authors
- Usamos a propriedade Filter do objeto recordset para selecionar alguns autores pelo critério: oRs.Filter = "state = 'CA'"
- Salvamos o recordset filtrado usando ADO Stream (XML) - oRs.Save oStm, adPersistXML
- Finalmente criamos um novo recordset e abrimos o arquivo gerado no formato anterior- oRs2.Open oStm.
Obs: Exibimos a titulo de comparação a quantidade de registros para cada recordset usando : oRs.RecordCount e oRs2.RecordCount
Acabamos de gerar uma cópia do recordset.
Até mais...