Recordset ne me retourne rien ?
Bonjour à tous,
Je viens vers vous, car je n'arrive pas à comprendre pourquoi mon Recorset ne contient rien du tout (valeur du recordcount : -1) alors que j'attends 2 enregistrements.
La requête qui est dans le code ci-dessous me retourne deux enregistrements quand je la lance sous Oracle.
'Déclaration de la variable de connexion à la base de données
Public cnx As New ADODB.Connection
Sub testselect()
ConnexionOracle
nni = "F54170"
Set rs = New ADODB.Recordset
rqst = "SELECT EXPIRATION_DT FROM SC_USR_GRP_USR WHERE TRIM(USER_ID) = UPPER('" & nni & "')"
'rqst2 = "SELECT EXPIRATION_DT FROM SC_USR_GRP_USR"
MsgBox rqst
Set rs = cnx.Execute(rqst)
'With rs
If rs.RecordCount > 0 Then
MsgBox "il y a des enregistrements : " & rs.RecordCount
Else: MsgBox "il n'y a pas des enregistrements : " & rs.RecordCount
End If
'End With
DeconnexionOracle
End Sub
Sub ConnexionOracle()
'récupération info pour connexion gardian
Open fichierGardian For Input As #2
Line Input #2, gard
Close #2
'Définition de la chaîne de connexion
cnx.ConnectionString = gard
'Si il y a une erreur de Base De Donnees => on stoppe le traitement
On Error GoTo ErreurBDD
'Ouverture de la base de données
If cnx.State <> adStateOpen Then
cnx.Open
End If
Exit Sub
ErreurBDD:
If cnx.Errors.Count > 0 Then
'Affichage des erreurs
reponse = reponse & "Connexion Oracle Impossible : " & Chr(13) & "Erreur : " & Err.Description
Exit Sub
Else
MsgBox Err.Description
End If
End Sub
Sub DeconnexionOracle()
If cnx.State = adStateOpen Then
cnx.Close
End If
End SubPour info, la connexion ADODB cnx marche bien, elle est utilisée dans d'autres procédures (où je ne fais pas de select-c'est la première fois que je fais un select- mais des updates/insert)
Et pour être sûr que le select retourne bien quelque chose, j'ai même essayé avec un :
Pour tester, j'avais remplacé ma requête Select par celle-ci :
rqst="select sysdate from dual"qui retourne obligatoirement un résultat.
Or le recorcount du recordset qui a récupéré le résultat du sysdate me retourne -1 au lieu de 1 ...
Je ne comprends pas ce qui ne va pas ... peut-être manque t'il du code ? ...
Par avance, merci pour votre aide ...
Vincent.
Bonjour vinzmeister,
Pour moi cela vient de ta chaîne de connexion
rqst = "SELECT EXPIRATION_DT FROM SC_USR_GRP_USR WHERE TRIM(USER_ID) = UPPER('" & nni & "')"As-tu essayer, simplement ?
rqst = "SELECT EXPIRATION_DT FROM SC_USR_GRP_USR"A+