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

Windows Forms Discussion :

[VB.NET] DataReader


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut [VB.NET] DataReader
    Hello,

    Comment faire pour obtenir le nb d'enregistrements retournés par une requête? J'ai essayé

    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
     
            Dim query As New SqlCommand
            Dim res As String
     
            connection = New SqlConnection(Application("connectionstring"))
            connection.ConnectionString = Application("connectionstring")
            connection.Open()
     
            query.Connection = connection
     
            query.CommandText = "SELECT Per_Lastname, Per_Firstname, per_PrivatePhone, per_PrivateStreet, per_PrivateTown FROM tbl_Persons WHERE Per_Lastname LIKE @name + '%' AND per_Firstname LIKE @fname + '%' ORDER BY Per_Lastname"
            'affecte l'entrée de l'utilisateur au paramètre @name pour la requête
            query.Parameters.Add(New SqlParameter("@name", SqlDbType.VarChar))
            query.Parameters("@name").Value = txt_name.Text
            '@fname
            query.Parameters.Add(New SqlParameter("@fname", SqlDbType.VarChar))
            query.Parameters("@fname").Value = txt_fname.Text
     
            'DataReader
            Dim dr As SqlDataReader = query.ExecuteReader
            RemplitTableau(dr, tbl_persons)
            lbl_nbresults.Text = dr.RecordsAffected()
            dr.Close()
     
            connection.Close()
    mais cela ne fonctionne pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lbl_nbresults.Text = dr.RecordsAffected()

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Pourquoi ne modifies-tu pas simplement ta requête ?

    Fais-un SELECT COUNT(*) et récupère le résultat avec un ExecuteScalar.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut
    Parce que je ne peux pas modifier ma requête, et je me vois mal en refaire une et refaire aussi un datareader (des lignes en plus)

    J'aimerais le faire en une ligne, ne me dis pas qu'il n'y a pas un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datareader.countRecords
    En tous cas je cherche mais je trouve pas...

  4. #4
    Membre confirmé

    Inscrit en
    Octobre 2002
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 139
    Par défaut
    Salut,

    quand tu dis ça ne fonctionne pas ça veut dire quoi :
    1-pas de valeur retournée
    2-message d'erreur.

    Dans ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lbl_nbresults.Text = dr.RecordsAffected()
    ne doit pas marcher parce que tu mets un int dans une propriété text.
    Une autre méthode pour connaitre le nombre de lignes retournées par ta commande serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sqlcommand.executeNonQuery()
    krest

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par sephiroth84
    J'aimerais le faire en une ligne, ne me dis pas qu'il n'y a pas un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datareader.countRecords
    Pour les DataReaders y a pas (normal, ça récupère au fur et à mesure. ça ne peut pas savoir combien il va y en avoir). Si tu en veux, utilise une DataTable.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Ben désolé, mais un DataReader c'est du "record by record", "forward only"...Impossible pour lui de savoir à l'avance le nombre d'enregistrements qu'il va lire.

    Utilise un DataSet, ou incrémente une variable quand tu le parcours...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 7
    Par défaut
    me retourne -1

  8. #8
    Membre confirmé

    Inscrit en
    Octobre 2002
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 139
    Par défaut
    Salut,

    C'est normal. D'après la msdn quand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlDatareader.RecdordsAffected = -1
    c'est que tu as utilisé une instructions Select

    krest

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

Discussions similaires

  1. [VB.NET] datareader toujours fermé
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/01/2007, 16h49
  2. [VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?
    Par emeraudes dans le forum Accès aux données
    Réponses: 8
    Dernier message: 21/08/2006, 13h38
  3. [VB.NET] DataReader DataSet
    Par mikolirto dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2005, 16h22
  4. [VB.NET] DataReader: case par case
    Par prem's dans le forum Windows Forms
    Réponses: 22
    Dernier message: 08/04/2005, 12h43
  5. [VB.NET] DataReader qui prend enormement de memoire
    Par JohnGT dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/01/2005, 17h38

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