Acesse conjuntos de registros VBA - Open, Count, Loop e muito mais

Neste tutorial, aprenderemos como abrir um Recordset, contar o número de registros no Recordset, percorrer o Recordset, adicionar um registro, atualizar um registro, ler um valor de um registro e excluir um registro.

Temos uma Tabela de Acesso, chamada ProductsT, mostrada a seguir:

Abrindo um conjunto de registros

Precisamos primeiro estabelecer o banco de dados que pretendemos usar, neste caso, é o banco de dados aberto no momento. Podemos então usar o método CurrentDB.OpenRecordSet para abrir / criar nosso conjunto de registros.

Para criar um Recordset que nos permitirá manipular os dados da tabela chamada ProductsT, usaríamos o seguinte código:

1 CurrentDb.OpenRecordset ("ProductsT")

Contando o número de registros usando VBA

Depois de criar um conjunto de registros, é mais do que provável que você queira fazer algo útil com ele ou manipular os dados nele de alguma forma. Você pode contar o número de registros em seu conjunto de dados (neste caso, a tabela chamada ProductsT) usando o seguinte código:

1 MsgBox CurrentDb.OpenRecordset ("ProductsT"). RecordCount

Loop por meio de um RecordSet usando VBA

O código a seguir percorre nosso RecordSet:

1234567891011121314 Sub RecordSet_Loop ()Dim ourDatabase As DatabaseDim ourRecordset As RecordsetDefina ourDatabase = CurrentDbDefina ourRecordset = ourDatabase.OpenRecordset ("ProductsT")Faça até o nossoRecordset.EOFMsgBox ourRecordset! ProductIDourRecordset.MoveNextCicloEnd Sub

Adicionar um registro a um RecordSet

Use o método Recordset.AddNew para adicionar um novo registro ao RecordSet:

1234567891011121314 Sub RecordSet_Add ()Com CurrentDb.OpenRecordset ("ProductsT").Adicionar novo! [ProductID] = 8! [ProductName] = "Produto HHH"! [ProductPricePerUnit] = 10! [ProductCategory] = "Brinquedos"! [UnitsInStock] = 15.AtualizarTerminar comEnd Sub

O resultado é:

Atualizando um conjunto de registros

Você deve usar o método Recordset.AddNew ou Recordset.Edit. Após esta instrução, você deve usar o método Recordset.Update para manter as alterações.

Lendo valores de um registro

Você tem que usar o método Recordset.FindFirst para fazer um registro, o registro atual. Em seguida, você deve usar Recordset.Fields para especificar qual campo examinar.

12345678910111213141516 Sub RecordSet_ReadValue ()Dim ourDatabase As DatabaseDim ourRecordset As RecordsetDefina ourDatabase = CurrentDbDefina ourRecordset = ourDatabase.OpenRecordset ("ProductsT", Type: = RecordsetTypeEnum.dbOpenDynaset)Com nosso conjunto de registros.FindFirst "ProductName =" & "'Produto CCC'"Se .NoMatch entãoMsgBox "Nenhuma correspondência encontrada"OutroMsgBox ourRecordset.Fields ("ProductCategory")Fim seTerminar comEnd Sub

O resultado é:

Exclusão de um registro de um conjunto de registros

Para excluir um registro de um conjunto de registros, você deve primeiro torná-lo o registro atual usando o método Recordset.FindFirst. Você pode então excluí-lo usando o método Recordset.Delete. O código a seguir mostra como excluir o registro 2 no conjunto de dados:

1234567891011121314151617181920212223 Sub RecordSet_DeleteRecord ()Dim ourDatabase As DatabaseDim ourRecordset As RecordsetDefina ourDatabase = CurrentDbDefina ourRecordset = ourDatabase.OpenRecordset ("ProductsT", Type: = RecordsetTypeEnum.dbOpenDynaset)Com nosso conjunto de registros.FindFirst "ProductName =" & "'Produto BBB'"Se .NoMatch entãoMsgBox "Nenhuma correspondência encontrada"OutroourRecordset.DeleteFim seTerminar com'Reabrir mesaDoCmd.Close acTable, "ProductsT"DoCmd.OpenTable "ProductsT"End Sub

O resultado é:

wave wave wave wave wave