Realizar cambios masivos en un objeto Recordset de DAO
Después de crear un objeto Recordset de tipo tabla o dynaset, puede cambiar, eliminar o agregar nuevos registros. Sin embargo, no podrá cambiar, eliminar o agregar registros en un objeto Recordset de tipo Snapshot o de sólo avance.
Muchos de los cambios que se pueden efectuar en un bucle se pueden llevar a cabo de forma más eficiente con una consulta de actualización o de eliminación utilizando SQL. En el ejemplo siguiente se crea un objeto QueryDef para actualizar la tabla Employees y, a continuación, se ejecuta la 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
En este ejemplo, es posible reemplazar la cadena SQL entera por una consulta de parámetros guardada, en cuyo caso el procedimiento solicitará al usuario los valores de los parámetros. En el ejemplo siguiente se muestra cómo se puede volver a escribir el ejemplo anterior como una consulta de parámetros almacenados.
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
Nota:
Una consulta de eliminación es mucho más eficiente que el código que recorre un objeto Recordset, modificando o eliminando los registros de uno en uno.
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de