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 :

[VB6]Prob MSflexgrid


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut [VB6]Prob MSflexgrid
    Salut,

    Voila j'ai un problème pour remplir mon MSflexgrid dont voici le code

    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
    grille1.Row = 0
    grille1.Col = 1
    grille1.Text = "Nb de votes"
    'largeur la colonne1
    grille1.ColWidth(1) = 1500
    'données alignées à gauche dans la colonne 1
    grille1.ColAlignment(1) = 0
    'colonne2,ligne0,titre
    grille1.Row = 0
    grille1.Col = 2
    grille1.Text = "Appreciation"
    'largeur la colonne2
    grille1.ColWidth(2) = 1500
    'données alignées à gauche dans la colonne 2
    grille1.ColAlignment(2) = 0
    Et voici mon recordset avec lequel je récupère mes données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strRequete = "Select count(n_appreciation) as nbvote, appreciation from service group by appreciation"
    Set rst = New ADODB.Recordset
    rst.Open strRequete, cnx, adOpenStatic
    Mais je n'arrive pas à introduire mes données dans mon MSflexgrid.

    J'espère que vous pourrez m'aider

    @++

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    a ca c'est sur que si tu mets pas un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set grille1.DataSource = rst
    les données, elle vont pa y aller toutes seules

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut
    Ah j'ai une erreur qui me dit :"Object variable not set" ou un truc dans ce style là. Je ne comprend pas d'ou vient cette erreur. Mon MSflexgrid s'appelle bien grille1 pourtant.

  4. #4
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Select COUNT : : : : : :
    C'est une fonction d'agrégation qui te renvoiele nombre de valeurs dans une colonne. Pas étonnant que ta grille n'affiche rien.

    Fais un simple SELECT* FROM... GROUP BY

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut
    Mais je ne veux pas tout afficher c'est ça le problème je veux compter le nombre de réponse en fonction de l'appréciation et l'afficher dans mon MSflexgrid. C'est pour un outil de sondage.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut
    Sinon j'ai essayer ça pour mettre mes données dans le MSflexgrid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim ligne As String
     
    ligne = 1
    rst.MoveFirst
    Do While Not rst.EOF
    grille1.Rows = ligne + 1
    grille1.Row = ligne
    grille1.Col = 1
    grille1.Text = rst!nbvote
    grille1.Col = 2
    grille1.Text = rst!appreciation
    ligne = ligne + 1
    Loop
    Mais ma boucle ne s'arrete pas pourtant les indices semble bon.

    Des idées sur mon problèmes ou est ce que je fait est complètement faux. J'avoue je suis un peu perdu avec le MSflexgrid.

  7. #7
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    La requête suivante permet d'afficher le nombre de record ayant pour valeur "New York" de la table Publishers. A toi d'adapter à ton cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT(*) AS Expr2, City AS Expr1
    FROM Publishers
    GROUP BY City
    HAVING (City = 'New York')
    Pour n'afficher que les enregistrements dont la valeur du champ City est égale à "New York", la requête est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Publishers.*, City AS Expr1
    FROM Publishers
    WHERE (City = 'New York')
    Donc, deux objectifs => deux requêtes. Penses à définir la source de ta grille avec SET comme te l'a dit Thierry Aim. Et le recordset est celui issu de la seconde requête. Ainsi tu nauras ta grille remplie.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut
    Mon problème c'est pas la requete c'est transférer le résultat dans le Msflexgrid. J'ai essaye le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set grille1.DataSource = rst
    Mais il me sort une erreur.

  9. #9
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    TA REQUETE TELLE QU'ELLE EST NE PEUT PAS T'AFFICHER QUOIQUE CE SOIT DANS TA GRILLE.

    Soit tu veux les enregistrements dans ta grille et tu utilises la chaîne SQL 2, soit tu veux le nombre d'enregistrements correspondant à tes critères et tu utilises la requête 1.

    Pour afficher le nombre d'enregistrements, fais ensuite, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim intCount As Integer
    intCount = rs!Expr2
    MsgBox intCount

  10. #10
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Je complète ma réponse précédente.

    Si tu veux obtenir le total pour chacune des valeurs de la colonne de regroupement, utilises une DataGrid, la MSHF n'étant pas compatible.

    Et donc, le code suivant t'affiche le total des publisehers de chaque ville dans la datagrid.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL = "SELECT COUNT(*) AS Expr2, City AS Expr1 From Publishers GROUP BY City"
     
    rs.Open SQL, cn, adOpenDynamic, adLockOptimistic
    rs.MoveFirst
    Set DataGrid1.DataSource = rs

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut
    Re,

    J'ai essayer ce que tu m'a dit. J'ai donc mis une datagrid et le code que tu m'a donnée en y mettant ma requete et j'obtiens cette erreur :

    "The rowset is not bookmarkable"

    Une idée d'ou provenir cette erreur ?

    Je sens qu'on touche au but.

  12. #12
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par jacma
    Select COUNT : : : : : :
    j'étais même pas allé jusque là (suis fatigué, moi aujourd'hui )

  13. #13
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Voici le code complet qui fonctionne parfaitement chez moi. Vérifies la position curseur (adUseClient) et les paramètres de connexion.
    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
    Private Sub Form_Load()
     
      Dim cn As ADODB.Connection
      Dim SQL As String
      Dim rs As ADODB.Recordset
      Dim arCount(2) As Variant
     
      Set cn = New Connection
      Set rs = New Recordset
     
      cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DidactDB\Biblio2002.mdb"
      cn.CursorLocation = adUseClient
      SQL = "SELECT COUNT(*) AS Expr2, City AS Expr1 From Publishers GROUP BY City"
     
      rs.Open SQL, cn, adOpenDynamic, adLockOptimistic
      rs.MoveFirst
      Set DataGrid1.DataSource = rs
     
    End Sub

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 59
    Par défaut
    Merci ça marche. Il me manquait cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cn.CursorLocation = adUseClient
    Je vous remercie de votre aide

    @++

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

Discussions similaires

  1. [VB6]prob avec crystal report sous WIN XP
    Par oumarsaw dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/03/2006, 16h13
  2. [VB6] ADO : MSFlexGrid
    Par kikoo_paris dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 07/02/2006, 11h45
  3. [VB6] Problème MsFlexgrid et Fusion des cellules
    Par dubidon dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/02/2006, 09h00
  4. Réponses: 1
    Dernier message: 14/06/2005, 19h28
  5. [VB6]Prob avec les requêtes multiples
    Par cammipascal dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 30/03/2004, 18h46

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