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 :

MSHFlexGrid et Recordset


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Points : 143
    Points
    143
    Par défaut MSHFlexGrid et Recordset
    Bonjour,

    J'ai un problème en essayant de lier une MSHFlexGrid à un recordset.

    Le lien à la source proprement dite ne pose pas de problème:
    Set MSHF.DataSource = MyRecordset

    par contre la spécification du champ à afficher ne fonctionne pas:
    la syntaxe MSHF.DataField(0, 0) = MyFieldName
    provoque une erreur de compilation "Affectation à une constante non autorisée".
    Ce que je comprends pas, c'est qu'en fait je passe une variable.
    De plus l'aide en ligne (le CHM) spécifie que cette propriété est en lecture seule, si tel est le cas, outre le message inadéquat qui est affiché, comment spécifier les champs à afficher alors que le simpliste DataGrid le permet sans problème.

    Merci de votre réponse.

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonjour,

    Afin de favoriser tes chances de réponses je te conseille vivement d'ajouter ton code.

  3. #3
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 107
    Points : 16 630
    Points
    16 630
    Par défaut
    Salut

    Je pencherai pour agir au niveau du Recordset qui alimente le MSHFlexGrid, en général celui ci renvoi les champs dans l'ordre du Order By et le MSHFlexGrid est rempli suivant cette ordre.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Points : 143
    Points
    143
    Par défaut
    Merci à tous deux de m'avoir répondu,

    @Overcrash
    Je peux toujours ajouter du code, mais les 2 lignes intéressantes sont celles que j'ai données.
    Le Set DataSource fonctionne très bien, par contre l'assignation du DataField non. Et l'affichage de la Grid montre le 1er champ du recordset.

    @ProgElecT
    N'y a t'il pas moyen d'agir sur les champs affichés comme le basique DataGrid qui lui le permet sans problème.

  5. #5
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 107
    Points : 16 630
    Points
    16 630
    Par défaut
    Salut

    Choix, nombre et ordre d'affichage de champs dans le MSHFlexGrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Command1_Click()
    Adodc1.Recordset.Close
    Adodc1.Recordset.Open "Select Champ6Unique, Champ4DateTime, Champ1Text From Principal", Adodc1.ConnectionString
    Set MSHFlexGrid1.DataSource = Adodc1
    End Sub
     
    Private Sub Command2_Click()
    Adodc1.Recordset.Close
    Adodc1.Recordset.Open "Select Champ1Text, Champ4DateTime, Champ6Unique, NumEnrgLong From Principal", Adodc1.ConnectionString
    Set MSHFlexGrid1.DataSource = Adodc1
    End Sub

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Points : 143
    Points
    143
    Par défaut
    Salut et merci de ta réponse,

    Je me suis mal expliqué.
    Oui, je me doute bien qu'en fournissant au Grid un Recordset tout prêt, il allait me l'afficher.

    Ce que je voulais savoir c'est s'il est possible, à partir d'un Recordset donné, dire au Grid de n'afficher que le 2ème champ par exemple et d'ignorer les autres, exactement comme tu peux le faire sans problème avec le Datagrid de base.
    Ceci pour éviter de collectionner les recordsets spécifiques à chaque affichage.

  7. #7
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 107
    Points : 16 630
    Points
    16 630
    Par défaut
    Une dernière proposition, cacher les colonnes a ne pas afficher
    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
    Dim T As Integer, U As Integer, MeArray
     
    '6 Champs:
    'NumEnrgLong, Champ1Text, Champ2Text, Champ3Integer, Champ4DateTime, Champ5Boolean, Champ6Unique
    'liste des champs à ne pas visualiser
    MeArray = Array("NumEnrgLong", "Champ4DateTime", "Champ6Unique")
     
    'For T = MSHFlexGrid1.Cols - 1 To 0 Step -1
    'ou bien
    For T = Adodc1.Recordset.Fields.Count - 1 To 0 Step -1
        For U = 0 To UBound(MeArray)
            If Adodc1.Recordset.Fields(T).Name = MeArray(U) Then
                MSHFlexGrid1.ColWidth(T) = 0
            End If
        Next U
    Next T
    moins performant que de limiter le nombre de champs à l'ouverture du recordset.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Points : 143
    Points
    143
    Par défaut
    Merci de ta réponse.
    Je n'avais effectivement à ce moyen qui pourrait marcher à défaut d'être très élégant.
    Je fais mes essais et je te tiens au courant.

Discussions similaires

  1. probleme avec l'attribut recordset d'un MshFlexGrid
    Par lity7 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/08/2007, 07h42
  2. [] Difference entre MSHFlexGrid et MSFlexGrid
    Par olivierx dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/04/2003, 08h48
  3. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  4. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42
  5. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54

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