'Puede ser util si quieres comprobar si una instrucción sql se ejecutará correctamente sin afectar a la base de datos.
Private Function CheckSql(ByVal nOrden As Integer, ByVal Sql As String, ByVal cnStr As String) As String
Dim report As String = ""
Dim SqlNoExec As String = "SET FMTONLY ON"
Dim cn As SqlClient.SqlConnection
Dim value As Integer
Try
cn = New SqlClient.SqlConnection(cnStr)
cn.Open()
'lanzamos instruccion contra el servidor SQL para evitar cualquier cambio
Dim cmd As New SqlClient.SqlCommand(SqlNoExec, cn)
'ejecutamos SET FMTONLY ON en la base de datos
value = cmd.ExecuteNonQuery()
If value = -1 Then
'a partir de este momento lo que ejecutemos no tendra efecto sobre la base de datos
cmd.CommandText = Sql
value = cmd.ExecuteNonQuery()
End If
cmd.Dispose()
cmd = Nothing
'en este punto el comando SET FMONLY ON ya no afecta, pues esta ligado a la vida del objeto cmd
report = String.Format("{0,-8} {1,-12} {2} {3}", "OK", "Orden: " & nOrden, " SQL: " & Sql, vbTab & " ConnString: " & cnStr)
Catch ex As Exception
report = String.Format("{0,-8} {1,-12} {2} {3} {4}", "ERROR", "Orden: " & nOrden, " SQL: " & Sql, vbTab & " ConnString: " & cnStr, vbCrLf & ex.Message)
End Try
Return report
End Function
Suscribirse a:
Enviar comentarios (Atom)
VBA Access. Redondeo de números decimales con el método medio redondeo. Alternativa a la función Round (bankers round)
Private Function Redondeo(ByVal Numero As Variant, ByVal Decimales As Integer) As Double 'Aplica método medio redondeo (half round ...
-
Option Compare Database Option Explicit '***************************** ' 'Ejemplo de uso ' 'selecciona 1 ficher...
-
Option Compare Database Option Explicit 'Zip / UnZip file or folder 'http://www.codekabinett.com/rdumps.php?Lang=2&targetDoc...
No hay comentarios:
Publicar un comentario