1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| Sub daoTempQrySqlDirect2()
Dim db As DAO.Database
Dim qry As DAO.QueryDef
Dim rs As DAO.Recordset
Dim strConnect As String
Dim strSQL As String
Dim ErrX As DAO.Error
Dim strErrMsg As String
On Error GoTo ErrH
Set db = CurrentDb
' Récupère chaîne de connexion de la requête SQL Direct modèle
strConnect = db.QueryDefs("PassThroughQuery_Modele").Connect
' Récupère SQL de la requête SQL Direct modèle
strSQL = db.QueryDefs("PassThroughQuery_Modele").SQL
' Remplace <PARAMETRE> par une valeur
strSQL = Replace(strSQL, "<PARAMETRE>", "FR")
' Crée requête temporaire.
' (!) si on fournit le SQL à CreateQueryDef, DAO le valide
' par rapport à la syntaxe du moteur Jet. C'est pour cela
' que le code SQL est défini plus tard dans le code.
Set qry = db.CreateQueryDef("")
' Définit la chaîne de connexion de la requête temporaire.
qry.Connect = strConnect
' Définit l'instruction SQL de la requête temporaire.
qry.SQL = strSQL
' Exécute la requête temporaire et renvoie le jeu de donnée
' dans un recordset DAO.
Set rs = qry.OpenRecordset()
MsgBox rs(0)
rs.Close
Sortie:
Set rs = Nothing
Set qry = Nothing
Set db = Nothing
Exit Sub
ErrH:
strErrMsg = "Erreur N° " & CStr(Err.Number) & " : " & Err.Description
Select Case Err.Number
Case 3146, 3151, 3154, 3155, 3156, 3157, 3231, 3232, 3234, 3225, 3238, 3247, 3254
strErrMsg = strErrMsg & vbCrLf & vbCrLf & _
">>> Erreurs complémentaires DAO :" & vbCrLf & _
"======================"
'Récupérations Erreur(s) driver ODBC
For Each ErrX In DBEngine.Errors
strErrMsg = strErrMsg & vbCrLf & Format(ErrX.Number, "00000") & " : " & ErrX.Description
Next
End Select
MsgBox strErrMsg
Resume Sortie
End Sub |
Partager