¿Es posible ejecutar una declaración preparada en MS Access en una tabla local en VBA así:MS Access prepara declaraciones
UPDATE part SET part_description=? WHERE part_id=?
Si es así ¿cómo se hace?
¿Es posible ejecutar una declaración preparada en MS Access en una tabla local en VBA así:MS Access prepara declaraciones
UPDATE part SET part_description=? WHERE part_id=?
Si es así ¿cómo se hace?
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSql As String
Set db = CurrentDb
strSql = "UPDATE Month_Totals Set item_date = [which_date]" & _
" WHERE id = [which_id];"
Debug.Print strSql
Set qdf = db.CreateQueryDef(vbNullString, strSql)
With qdf
.Parameters("which_date").Value = Date()
.Parameters("which_id").Value = 1
.Execute dbFailOnError
End With
Este ejemplo utiliza un nuevo y sin guardar QueryDef
. Si usted tiene una consulta de parámetros guardado, puede utilizarlo en su lugar mediante la sustitución de esta línea para la línea CreateQueryDef
:
Set qdf = db.QueryDefs("YourQueryName")
De cualquier manera, a continuación, puede hacer referencia a los parámetros individuales por sus nombres como yo, o por sus posiciones en la instrucción SQL ... así que esto va a funcionar igual que el anterior:
.Parameters(0).Value = Date()
.Parameters(1).Value = 1
notas adicionales:
.Value
es la propiedad predeterminada para un Parameter
, por lo que incluirlo aquí no es estrictamente obligatorio. Por otro lado, no está de más ser explícito.!which_id
, que es más conciso que .Parameters("which_id")
"notación de la explosión" también trabaja para establecer los valores de los parámetros, por ejemplo, 'QDF! which_id = 1' –