Bonjour à tous,
je vous sollicite car je ne comprend pas l'erreur que j'obtiens lors du débogage de mon application dans Visual Studio :
Voici le contexte :
J'ai une base de donnée SQLServer 2019, voici ma chaine de connexion :
Je fait des ouvertures de RecordSet imbriquée : voir ligne 28
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Gestion.Cn = New ADODB.Connection '*** Gestion.Cn.ConnectionString = "Provider=sqloledb;Data Source=XXX;Initial Catalog=YYY;User ID=ZZZ;Password=WWW" '*** Gestion.Cn.Open()
Le 1er cycle complet se passe normalement.
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
34
35
36
37
38
39
40
41
42
43
44
45
46 MyString = "SELECT * FROM Reunions WHERE DateReunion='" & Gestion.DateProno & "' ORDER BY NumReunion" '*** Gestion.RReunion = New ADODB.Recordset With Gestion.RReunion .CursorType = ADODB.CursorTypeEnum.adOpenKeyset .LockType = ADODB.LockTypeEnum.adLockOptimistic .Open(MyString, Gestion.Cn, , , ADODB.CommandTypeEnum.adCmdText) End With Gestion.RReunion.MoveFirst() '*** Do ... MyString = "SELECT * FROM Courses WHERE NumGeny='" & Gestion.RReunion.Fields("NumGeny").Value & "' ORDER BY NumCourse" Gestion.RCourses = New ADODB.Recordset With Gestion.RCourses .CursorType = ADODB.CursorTypeEnum.adOpenKeyset .LockType = ADODB.LockTypeEnum.adLockOptimistic .Open(MyString, Gestion.Cn, , , ADODB.CommandTypeEnum.adCmdText) End With Gestion.RCourses.MoveFirst() Do .... MyString = "SELECT * FROM Chevaux WHERE NumGeny='" & Gestion.RReunion.Fields("NumGeny").Value & "' and NumCourse=" & Gestion.RCourses.Fields("NumCourse").Value & " ORDER BY numero" Gestion.RChevaux = New ADODB.Recordset With Gestion.RChevaux .CursorType = ADODB.CursorTypeEnum.adOpenKeyset .LockType = ADODB.LockTypeEnum.adLockOptimistic .Open(MyString, Gestion.Cn, , , ADODB.CommandTypeEnum.adCmdText) ' <<<<<<<<<<<<<<<<<<<<< ICI >>>>>>>>>>>>>>>>>> End With Gestion.RChevaux.MoveFirst() Do ... Gestion.RChevaux.MoveNext() Loop Until Gestion.RChevaux.EOF Gestion.RChevaux.Close() Gestion.RChevaux = Nothing Gestion.RCourses.MoveNext() Loop Until Gestion.RCourses.EOF Gestion.RCourses.Close() Gestion.RCourses = Nothing Gestion.RReunion.MoveNext() Loop Until Gestion.RReunion.EOF Gestion.RReunion.Close() Gestion.RReunion = Nothing Gestion.Cn.Close() Gestion.Cn = Nothing
RecordSet RChevaux - MyString = "SELECT * FROM Chevaux WHERE NumGeny='8821499999' and NumCourse=3 ORDER BY numero".
Cette même requête dans DBeaver, retourne le résultat suivant :
Le 2ème cycle plante.
RecordSet RChevaux - MyString = "SELECT * FROM Chevaux WHERE NumGeny='8821499999' and NumCourse=4 ORDER BY numero".
Cette même requête dans DBeaver, retourne le résultat suivant :
Voici le message d'erreur que Visual Studio me renvoit :
Je ne vois pas à quoi fait référence le message d'erreur :
Merci de votre aide, Tchicken.System.Runtime.InteropServices.COMException*: 'Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres.'
Partager