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 :

Un DataGrid sur mesure


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 190
    Points : 112
    Points
    112
    Par défaut Un DataGrid sur mesure
    Bonjour à tous,
    Je veux utiliser un DataGrid sur mesure.
    Je m'explique. Un DataGrid quand il est insérer sur une feuille et qu'il soit connecter à une source de données, tous les champs de la table (T2) à laquelle il est connecter apparaissent en colonnes simples.
    L'un des champs de la table (T2) étant une clé étrangère (clé primaire d'une autre table T1). Afin d'éviter à l'utilisateur de l'application d'avoir à retenir toutes les données de ce champ je propose de faire remplacer cette colonne du DataGrid par un DataCombo ou un composant équivalent qui sera relier à la table T1 pour pouvoir sélectionner facilement une valeur de ce champ.
    En résumé. Comment remplacer une colonne simple d'un DataGrid par un DataCombo (une liste de choix reliée à une autre table) ?

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 378
    Points
    20 378
    Par défaut
    Citation Envoyé par amtdev
    En résumé. Comment remplacer une colonne simple d'un DataGrid par un DataCombo (une liste de choix reliée à une autre table) ?
    C'est pas possible une DataGrid c'est un controle bien défini.
    Il faut te faire ton propre ActiveX qui associe les 2.
    Et placer une DataCombo dans un DataGrid cela sera incohérent parce que un DataGrid c'est une grille c'est un tableau ,une matrice représentant un produit catésien.
    On ne peut pas avoir une cellule dans le "vide" c.a.d. qui pointe sur rien...
    Une solution "bricolée" c'est par exemple créer une nouvelle "form",l'afficher lorsqu'on clique dans une cellule de la grille.
    Cette "form" contiendra une Combobox je crois qu'il ya pas plus simple..
    Le mieux c'est de se faire un Active X comme cela.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 190
    Points : 112
    Points
    112
    Par défaut
    Très bien, et merci. Là je vais bricoler et si jamais je trouvrais une bonne solution je la diffuserais. On ne sais jamais, peut être il y aurais quelqu'un qui s'en servira. Merci à tous.

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 378
    Points
    20 378
    Par défaut
    Y'a peut-être aussi une solution mais très complexe c'est de "subclasser" le composant et de faire apparaitre une combobox.
    Mais c'est tiré par les cheveux

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 190
    Points : 112
    Points
    112
    Par défaut
    Que voulez vous dire par "subclasser" ? Même si c'est complexe je tenterais.

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    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 077
    Points : 17 187
    Points
    17 187
    Par défaut
    Bonsoir

    Est ce que j'ai bien compris ?
    Vous voulez a partir d'un combo remplis par un champs d'une table T1, que lors d'une selection dans ce combo, remplir un conteneur text ou autre avec un/des champs liers par la clé primaire commune au deux tables.

    Si c'est cela et que vous ne tenez pas forcement aux DataGrid et DataCombo, j'ai se qu'il vous faut.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    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 077
    Points : 17 187
    Points
    17 187
    Par défaut
    J'avais le temps alors....

    Sur un form mettre un combobox nomé "CombListChoix" et 2 labels només LabInfo(0) et LabInfo(1)

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Option Explicit
     
    Private CheminDataBase As New ADODB.Connection 'ref. Microsoft ActiveX Data Objects 2.0 Library
    Private TablEScd1 As New ADODB.Recordset
     
    Public Sub Testes()
     
    On Error Resume Next: CheminDataBase.Close: If Err.Number = 0 Then On Error GoTo 0 Else On Error GoTo 0
    On Error Resume Next
    CheminDataBase.CursorLocation = adUseClient: CheminDataBase.Mode = adModeReadWrite
    ' adapter le chemin pour Source= ....
    CheminDataBase.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\OptimDecoupe\ComposDecoupes.mdb;"
    If Err.Number <> 0 Then
     On Error GoTo 0
     MsgBox "Impossible d'ouvrir la base de données", vbCritical, " - Problem - "
     Exit Sub
    End If
     
    CombListChoix.Clear
    On Error Resume Next: TablEScd1.Close: If Err.Number = 0 Then On Error GoTo 0 Else On Error GoTo 0
    On Error Resume Next
    TablEScd1.Open " MaTableChoix ", CheminDataBase, adOpenStatic, adLockOptimistic
    TablEScd1.MoveFirst
    If Err.Number <> 0 Then
      MsgBox "Impossible d'ouvrir la table de choix", vbCritical, " - Problem - "
     Exit Sub
    End If
     
    Do While Not TablEScd1.EOF
      CombListChoix.AddItem TablEScd1!Choix
      CombListChoix.ItemData(CombListChoix.NewIndex) = TablEScd1!ClefPrimaire
      TablEScd1.MoveNext: DoEvents
    Loop
    TablEScd1.Close: DoEvents
    CombListChoix.ListIndex = 0
     
    End Sub
     
    Private Sub CombListChoix_Click()
    Dim NumClef
    NumClef = CombListChoix.ItemData(CombListChoix.ListIndex)
    If CombListChoix.ListCount >= 1 Then
     On Error Resume Next: TablEScd1.Close: If Err.Number <> 0 Then On Error GoTo 0 Else On Error GoTo 0
     TablEScd1.Open "MatableInfos WHERE " & _
     " ClefPrimaire = " & NumClef & " ", CheminDataBase, adOpenStatic, adLockOptimistic
     LabInfo(0) = TablEScd1!Info1
     LabInfo(1) = TablEScd1!Info2
     'LabInfo(2) = TablEScd1!Info3
     ' ....
     'LabInfo(7) = TablEScd1!Info8
     TablEScd1.Close: DoEvents
    End If
    End Sub
     
    Private Sub Form_Load()
    Testes
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next: CheminDataBase.Close: If Err.Number <> 0 Then On Error GoTo 0
    End Sub
    Salut
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 190
    Points : 112
    Points
    112
    Par défaut
    Merci infiniment. Vous m'avez rendu la vie facile. Là je peux dire que la discussion est close sauf s'il y a d'autres propositions. Qu'elles soient les bienvenues. Je vous remercie à tous vous êtes aimables. Heureusement qu'il y a ce forum sur le web. Alors préservant le et surtout développant le ensemble. Merci encore.

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

Discussions similaires

  1. [MCD] Conception Web: Vente de costume sur mesure
    Par nrgizgun dans le forum Schéma
    Réponses: 10
    Dernier message: 20/04/2007, 08h44
  2. PC sur mesure
    Par lavazavio dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 17/01/2007, 23h33
  3. [supression de .MP3] Logiciel sur mesure.
    Par Muesko dans le forum Windows
    Réponses: 3
    Dernier message: 15/01/2007, 13h37
  4. Réponses: 3
    Dernier message: 12/07/2006, 09h13
  5. Débutant : Comment ajouter une ligne à un DataGrid sur VB ?
    Par gamool dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/11/2005, 23h53

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