Partilhar via


Fazer alterações em massa a um Conjunto de Registros de DAO

Depois de criar um objeto Recordset do tipo de tabela ou do tipo dynaset, você pode alterar, excluir ou adicionar novos registros. Não é possível alterar, excluir nem adicionar registros em um objeto Recordset do tipo instantâneo ou apenas encaminhamento.

Várias alterações que poderiam ser realizadas em um loop, podem ser executadas de forma mais eficiente com uma consulta atualização ou exclusão usando SQL. O exemplo a seguir cria um objeto QueryDef para atualizar a tabela Funcionários e, em seguida, executa a consulta.

Dim dbsNorthwind As DAO.Database 
Dim qdfChangeTitles As DAO.QueryDef 
 
   Set dbsNorthwind = CurrentDb 
   Set qdfChangeTitles = dbsNorthwind.CreateQueryDef("") 
 
   qdfChangeTitles.SQL = "UPDATE Employees SET Title = " & _ 
                         "'Account Executive' WHERE Title = " & _ 
                         "'Sales Representative'" 
 
   ' Invoke query. 
   qdfChangeTitles.Execute dbFailOnError 

Você pode substituir a cadeia de caracteres SQL inteira por uma consulta parâmetro armazenada e, nesse caso, o procedimento pediria os valores do parâmetro ao usuário. O exemplo a seguir mostra como o exemplo anterior pode ser reescrito como uma consulta de parâmetro armazenada.

Dim dbsNorthwind As DAO.Database 
Dim qdfChangeTitles As DAO.QueryDef 
Dim strSQLUpdate As String 
Dim strOld As String 
Dim strNew As String 
 
   Set dbsNorthwind = CurrentDb 
 
   strSQLUpdate = "PARAMETERS [Old Title] Text, [New Title] Text; " & _ 
                  "UPDATE Employees SET Title = [New Title] WHERE " & _ 
                  "Title = [Old Title]" 
 
   ' Create the unstored QueryDef object. 
   Set qdfChangeTitles = dbsNorthwind.CreateQueryDef("", strSQLUpdate) 
 
   ' Prompt for old title. 
   strOld = InputBox("Enter old job title:") 
 
   ' Prompt for new title. 
   strNew = InputBox("Enter new job title:") 
 
   ' Set parameters. 
   qdfChangeTitles.Parameters("Old Title") = strOld 
   qdfChangeTitles.Parameters("New Title") = strNew 
 
   ' Invoke query. 
   qdfChangeTitles.Execute 

Observação

Uma consulta exclusão é muito mais eficiente que o código que faz loop por um Recordset, modificando ou excluindo um registro por vez.

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.