2017-10-03 2 views
0

Mise à jour avec le code correct pour une utilisation futurecomment capturer erreur SQL en utilisant vbscript

objRecordSet.open sql_statement, objConnection, 1 retourne une erreur.

quelque chose comme dans le serveur SQL Msg 50011, niveau 16, état 1, procédure xRaiseError, ligne 38 non valide Paramètre Valeur Paramètre @SerialNumber est pas valide: 234f5-kjxi-vcbr

je dois saisir cela et Stockez une chaîne. voici la fonction.

Public Function ExecuteSQLStatement_String(Sql_Statement, colname) 
    On Error Resume Next 
objRecordSet.open Sql_Statement,objconnection,1 
If Err.Number <> 0 Then 
    ExecuteSQLStatement_String = Err.description 
    objRecordSet.Close 
    Err.Clear 
Else 
    ExecuteSQLStatement_String = objRecordSet.Fields(colname).Value 
    objRecordSet.Close 
End If 
On Error GoTo 0 
End Function 

Quelqu'un peut-il vous aider s'il vous plaît? Très nouveau à vbscript. Je me connecte à la base de données et passe une instruction sql. Si les paramètres de l'instruction sql sont corrects, ma fonction renvoie la valeur du jeu d'enregistrements. Mais si l'un des paramètres est faux, l'instruction sql ne peut pas être exécutée. comment capturer cette erreur? J'espère que je suis clair. Merci Madhavi

Répondre

0

Le code d'erreur et la description seront dans l'objet Err. Vous testez déjà pour le code d'erreur. Pour obtenir l'utilisation de ce code Description:

If Err.Number <> 0 Then 
    ExecuteSQLStatement_String = Err.description 
    objRecordSet.Close 
    Err.Clear 
End If 

En outre, ne pas oublier de manipuler tour Fautes dos à la fin de votre fonction:

' ----turn vbscript error handler back on 
On Error GoTo 0 
+0

Merci @cha. quand je suis mise au point, dès que je frappe sur cette ligne passe latérale à objRecordSet.open sql_statement, objConnection, 1, Je reçois cette erreur: erreurs multiples étapes opération OLE DB généré. Vérifiez chaque valeur d'état OLE DB, si disponible. Aucun travail n'a été fait. Ligne (104): "objRecordSet.open Sql_Statement, objconnection, 1". – user2329418

+0

Fonction publique ExecuteSQLStatement_String (sql_statement, colname) \t On Error Resume Next \t objRecordSet.open sql_statement, objConnection, 1, adLockOptimistic, adCmdText \t Si Err.Number <> 0 Then \t \t ExecuteSQLStatement_String = Err.Description \t \t objRecordSet.Close \t \t Err.Clear \t Else \t \t objRecordSet.open sql_statement, objConnection, 1 \t \t \t ExecuteSQLStatement_String = objRecordSet.Fields (colname) .Value \t \t objRecordSet.Close \t End If \t On Error GoTo 0 End Function maintenant son fonctionnement. Merci @cha. – user2329418