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 Sub

Pour 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+

Rechercher des sujets similaires à "recordset retourne rien"