Hola, yo lo haría de la siguiente manera:
'------------------------------------------------------------------------------
' Procedimiento............: pfEjecutaComando
' Descripción..............: Ejecuta una sentencia SQL
' Autor....................: caliaga
'------------------------------------------------------------------------------
Public Function pfEjecutaComando( _
ByVal lvStrComando As String) As Boolean
Dim BolResultado As Boolean
On Error GoTo pfEjecutaComandoError
pvLngError = 0
pvStrError = ""
cnn.IsolationLevel = adXactReadCommitted
cnn.BeginTrans
psGrabaLog clInformacion, cSql, lvStrComando
cnn.Execute lvStrComando
psGrabaLog clInformacion, cVB, "Query ejecutado"
cnn.CommitTrans
BolResultado = True
pfEjecutaComando = BolResultado
On Error GoTo 0
Exit Function
pfEjecutaComandoError:
cnn.RollbackTrans
pvLngError = Err.Number
pvStrError = Err.Description
psGrabaLog clError, cSql, "Error: " & pvStrError
If Not EsCompilado Then
Debug.Assert pvLngError = 0
MsgBox "Query: " & lvStrComando & vbCrLf & "Error: " & pvStrError, vbCritical + vbOKOnly, "Atención"
End If
Screen.MousePointer = vbDefault
pfEjecutaComando = False
End Function