Bonjour,
Lorsque j'exécute ma requète manuellement, j'obtiens une fenêtre vide : il n'y a pas d'enregistrement correspondant à mes critères.
Lorsque j'exécute cette même requète avec ce code, VBA (fenêtre immediate) me dit qu'il y a 600 enregistrements ! POURQUOI ?
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 Function Q380() Dim cnx As ADODB.Connection Dim rst As ADODB.Recordset Dim strPath As String strPath = Application.CurrentDb.Name Set cnx = New ADODB.Connection cnx.ConnectionString = strPath cnx.Provider = "Microsoft.Ace.OLEDB.12.0" 'MS Access 2007 cnx.Open Set rst = New ADODB.Recordset rst.Open "SELECT * FROM [380_QRY_Exact Match];", cnx, adOpenKeyset Debug.Print "rst.RecordCount = ", rst.RecordCount Debug.Print "rst.Fields.Count = ", rst.Fields.Count rst.Close cnx.Close Set rst = Nothing Set cnx = Nothing End Function
Je suis parvenu à trouver une solution en contournant le problème mais je voudrais comprendre !
Ma requète est basée sur deux autres requètes avec un JOIN et chacune de ces requètes sont elles-mêmes basées sur d'autres requètes. MS Access n'aime pas trop cette série de requètes les unes sur les autres. Pour résoudre le problème, j'ai changé les deux requètes et au lieu d'avoir de simples requètes SELECT, j'en ai fait des requètes de création de tables. Ensuite, jai modifié ma requète "380_QRY_Exact Match" pour qu'elle s'effectue sur les deux tables plutôt que sur deux requètes complexes.
Voilà. La solution est simple mais je ne comprends pas pourquoi VBA se trompait. Si vous connaissez la raison, merci de m'expliquer.




Répondre avec citation


Partager