IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Perte d'information dans un Recordset


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut Perte d'information dans un Recordset
    Bien le bonjour brave gens !

    Je viens de passer en mode arrachage de cheveux à cause de la manipulation d'un Recordset qui me fait que des malheurs. Je m'explique !

    Je récupère des informations sur une base SQL SERER Express. Ma requête se passe bien, elle retourne bien des résultats. J'avance donc tranquillement en lui apposant un simple MoveFirst, puis je rentre dans ma boucle.

    Or, si l'espion me montre bien la ligne de résultat dans rs, lorsque j'avance pas à pas et que j'exécute l'instruction suivante, POUF !, le Recordset perd presque toutes ses informations. Presque oui, puisqu'en fait, seules les valeurs issus de VARCHAR dans ma table sont perdues. Les INT, elles, sont bien conservées.

    Par la suite, dans la boucle, bis repetita, à l'exécution du MoveNext, l'espion me montre bien que le recordset récupère les valeurs, mais dès la ligne suivante, je perd les informations.

    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
    Dim rs As ADODB.Recordset
     
        ' Récupération de la liste des fichiers à réaliser (requete, c'est aussi une fonction de mon cru)
        Set rs = requete("SELECT UTILISATEUR.id_user, UTILISATEUR.prenom_user, UTILISATEUR.nom_user, UTILISATEUR.email_user, LABORATOIRE.id_labo, LABORATOIRE.libelle_labo " & _
                         "FROM UTILISATEUR, LABORATOIRE " & _
                         "WHERE UTILISATEUR.id_labo=LABORATOIRE.id_labo " & _
                         "  AND UTILISATEUR.actif=1 " & _
                         "  AND UTILISATEUR.type=1 " & _
                         "  AND UTILISATEUR.id_user<>2 " & _
                         "ORDER BY LABORATOIRE.libelle_labo")
     
        rs.MoveFirst
        Do
           msgbox(rs(1))
     
            rs.MoveNext
         Loop Until rs.EOF = True
    Si vous avez des explications je suis preneur, si vous avez besoin de plus d'informations, je suis aussi présent

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    A la place de ça :
    Do
    msgbox(rs(0))

    rs.MoveNext
    Loop Until rs.EOF = True
    J'essaierai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Do while not rs.EOF
           msgbox(rs(0))
     
            rs.MoveNext
         Loop

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    Ce que tu veux dire c'est que tout va bien sauf au moment

    msgbox(rs(0))

    ?

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Je fais du pas à pas, pour mieux cerner

    Après exécution de :

    1 rs.MoveFirst

    rs(0) est bien égale à X
    rs(1) est bien égale à "YYYYYY"
    etc...

    2 Do

    rs(0) est toujours égale à X
    Mais rs(1) perd sa valeur

    3 msgbox(rs(1))

    du coup msgbox(rs(1)) n'affiche pas "YYYYYY" mais du vide

    4 rs.MoveNext

    Enregistrement suivant,
    rs(0) est bien égale à Y
    rs(1) est bien égale à "ZZZZZZZ"
    etc...

    5 Loop Until rs.EOF = True

    On repart sur le Do
    rs(0) est toujours égale à Y
    mais rs(1) perd sa valeur...

    Ensuite, à chaque tour de boucle,
    après le passage sur le MoveNext, rs(...) prendra les valeurs de l'enregistrement, mais dès l'instruction suivante, rs(1) perdra sa valeur.

    Ce n'est donc que mes champs VARCHAR qui perdent leurs valeurs.

    Ce n'est pas spécialement un souci de boucle...

    PS : J'ai corrigé mon code sur le 1er post qui n'est pas la retranscription de la réalité

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    tu as essayé en utilisant rs.field(1) à la place ?

  6. #6
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    La fonction requete fait quoi ?
    Peut-on la voir dans les détails ?

  7. #7
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Bujuman
    La fonction requete fait quoi ?
    Peut-on la voir dans les détails ?
    Actuellement elle est light, mais je l'améliorais surement pour des messages d'erreurs plus conséquents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function requete(ByVal req As String) As ADODB.Recordset
        ' Exécution de la requête
        Set requete = New ADODB.Recordset
        requete.Open req, cnx
    End Function
    Mais bon, parlons peu parlons bien, il y a un truc marrant en fait...

    Il s'avère que quand j'avance au pas à pas, le Recordset perd ses informations, mais à traitement "normal", no soucy, il roule sans perdre les infos... pffffff

    Pour la forme je mets un Résolu, mais ça me gave là !

  8. #8
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par heddicmi
    Pour la forme je mets un Résolu
    A moins que tu veuilles imposer aux users de faire du pas à pas

  9. #9
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Bujuman
    A moins que tu veuilles imposer aux users de faire du pas à pas

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    tu as la dernière version mdac ?
    Tu as essayé avec rs.fields ?

    Je n'ai pas ce problème pourtant je boucle souvent sur des adodb.recordsets.

  11. #11
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Vld44
    tu as la dernière version mdac ?
    Tu as essayé avec rs.fields ?

    Je n'ai pas ce problème pourtant je boucle souvent sur des adodb.recordsets.
    Figure toi que moi aussi je boucle souvent des recordset et que c'est la 1ère fois que ça me fait ça

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    tu as la dernière version mdac ?
    Tu as essayé avec rs.fields ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Géocodage inverse : pertes d'information dans la réponse
    Par mga_geo dans le forum IGN API Géoportail
    Réponses: 7
    Dernier message: 13/12/2013, 09h00
  2. [XSLFO] Perte d'information dans découpe de page
    Par henri93 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/07/2009, 10h52
  3. Recherches d'informations dans un recordset
    Par the_6L20 dans le forum Access
    Réponses: 3
    Dernier message: 14/08/2006, 14h31
  4. Perte d'informations d'un objet initialisé dans un thread
    Par Progs dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 21/11/2005, 20h17
  5. [VB6] Sauvegarder la position dans un Recordset
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo