Bonjour,
J'ai besoin de vos conseils car même si j'ai déjà écrit des posts sur DAO/ADO, j'ai encore de grandes difficultés à comprendre à quoi ça correspond. Mon objectif final est d'injecter ma syntaxe SQL écrite en partie en VBA dans une requête SQL direct.
Jusque là, mon programme fonctionnait à peu près car il se pouvait que, de façon aléatoire, il y ait parfois un message indiquant que l'appel à ODBC avait échoué. Comme j'avais déjà eu ce problème, j'ai voulu changer DAO en ADO en pensant que ça allait résoudre la situation...
Voici le code où j'utilise un recordset DAO et où parfois j'ai une erreur:
Voici le code où j'utilise un recordset ADO qui semble marcher mais j'ai peur de tout mélanger en mixant du code DAO et ADO (j'ai laissé db as DAO.database) donc j'aimerai avoir votre avis sur ce code: suis-je en train de faire n'importe quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Sub ComputeQueries(SQLWhere As String, db As DAO.Database) On Error GoTo err Dim RstTable As DAO.Recordset Dim strSQLModele As String Dim strNomRqt As String Set RstTable = db.OpenRecordset("SELECT QueryName, QueryCode FROM QUERIES where TypeV='TYPE1'") RstTable.MoveFirst While Not RstTable.EOF strNomRqt = RstTable.Fields("QueryName").Value strSQLModele = RstTable.Fields("QueryCode") db.QueryDefs(strNomRqt).SQL = strSQLModele ' cette ligne injecte la syntaxe SQL contenue dans strSQLModele dans ma requête SQL direct déjà existante au nom strNomRqt RstTable.MoveNext Wend RstTable.Close Set RstTable = Nothing Exit Sub err: MsgBox "Une erreur est survenue" & vbCrLf & err.Description, vbCritical, "ComputeQueries" End Sub
Pouvez-vous me dire si je m'y prends bien ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Public Sub ComputeQueriesADO(SQLWhere As String, db As DAO.Database) On Error GoTo err Dim oCn As ADODB.Connection Dim oRS As ADODB.Recordset Dim sSql As String Dim strSQLModele As String Dim strNomRqt As String Set oCn = Application.CurrentProject.Connection Set oRS = New ADODB.Recordset Set oRS.ActiveConnection = oCn sSql = "SELECT QueryName, QueryCode FROM QUERIES where TypeV='TYPE1'" oRS.Open sSql, , adOpenForwardOnly, adLockReadOnly, adCmdText oRS.MoveFirst While Not oRS.EOF strNomRqt = oRS.Fields("QueryName").Value strSQLModele = oRS.Fields("QueryCode") db.QueryDefs(strNomRqt).SQL = strSQLModele oRS.MoveNext Wend oRS.Close Set oRS = Nothing oCn.Close Set oCn = Nothing Exit Sub err: MsgBox "Une erreur est survenue" & vbCrLf & err.Description, vbCritical, "ComputeQueriesADO" End Sub
J'ai fait des tests en utilisant command et catalogue ADOX mais je ne m'en suis pas sortie donc je suis revenue à QueryDefs ...
Merci !
Partager