3 pièce(s) jointe(s)
Erreur de System.Runtime.InteropServices.COMException
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 :
Code:
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() |
Je fait des ouvertures de RecordSet imbriquée : voir ligne 28
Code:
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 |
Le 1er cycle complet se passe normalement.
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 :
Pièce jointe 624391
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 :
Pièce jointe 624392
Voici le message d'erreur que Visual Studio me renvoit :
Pièce jointe 624393
Je ne vois pas à quoi fait référence le message d'erreur :
Citation:
System.Runtime.InteropServices.COMException*: 'Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres.'
Merci de votre aide, Tchicken.