C'est surtout que tu n'as pas le choix, si tu les veux il faut bien qu'ils soient dans le select de ta requête sinon il va falloir que tu m'expliques comment tu comptes les obtenir...
C'est surtout que tu n'as pas le choix, si tu les veux il faut bien qu'ils soient dans le select de ta requête sinon il va falloir que tu m'expliques comment tu comptes les obtenir...
Si tu regardes bien ils y sont déjà avec nom_stat & prenom_stat qui est sensé les récupérés , ce qu'il fait bien mais en affichant que l'id
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 "Select idstatistique,score,Statistique.idtype_gibier,nom_stat,prenom_stat,annee_stat" & _ " FROM (type_gibier INNER JOIN Statistique ON type_gibier.[idtype_gibier] = Statistique.[idtype_gibier]) INNER JOIN (chasseur INNER JOIN tuer ON chasseur.[idchasseur] = tuer.[idchasseur]) ON type_gibier.[idtype_gibier] = tuer.[idtype_gibier] " & _ " GROUP BY score,Statistique.idtype_gibier,Statistique.nom_stat,Statistique.prenom_stat,annee_stat,idstatistique"
Euh d'accord si tu veux, mais moi sur le schéma de ta base que tu as mis je vois que le nom et le prénom de ton chasseur sont dans la table "chasseur" pas dans la table "statistiques", après c'est comme tu le sens, mais comme déjà dit précédemment si VB te met un Integer c'est que tu ramènes un Integer pas un String...
Oui oui je suis d'accord avec toi mais si tu regardes dans Statistiques il te met bien le nom et le prenom qu'il recupére de la table chasseur.
Mais tu as raison je vais aller au plus simple je test et je te redit quoi
Si je fais maintenant quand je rajoute un enregistrement il m'en met 2
Dites admettons que MOnsieur X chasse et son fils aussi, ils portent à 2 le même nom mais comment dire à la combobix que si il y a le même nom de l'afficher qu'une fois
Pas faute d'avoir chercher, et regardé le lien que tu m'as envoyé, je ne vois pas comment on l'écrit avec la combobox
Si dans ta cb.items tu trouves avec string.compare un match alors tu ne l'ajoute pas
Il faut que je mette le if avant chaque remplissage de mes combobox ??
If cb_chasseur.items = string.compare then
pas ajouter ( coment écrit)
else le remplissage
end if
SA ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part If taCb.Items.Contains("laValeurATest") Then Exit Sub Else taCb.Items.Add("laValeurATest")
Sa me met quand même 2 fois le même nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 If cb_nom_stat.Items.Contains("nom") Then Exit Sub Else cb_nom_stat.Items.Add("nom") 'REMPLIR LA COMBOBOX NOM Dim afficherNom As String = "Select nom ,idchasseur from chasseur" Dim daN As New OleDb.OleDbDataAdapter(afficherNom, cnx) Dim dsN As New DataSet cnx.Open() daN.Fill(dsN, "chasseur") cnx.Close() cb_nom_stat.DataSource = dsN.Tables("chasseur") cb_nom_stat.DisplayMember = "nom" cb_nom_stat.ValueMember = "idchasseur"
Lorsque tu teste "nom", ça regarde si il y a la string "nom" (littéralement) dans tes items. Là il faut que tu fasses un group by sur ta requête, tout simplement.
SA me rajoute nom dans ma combobox
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 If cb_nom_stat.Items.Contains("nom") Then Exit Sub Else : cb_nom_stat.Items.Add("nom") 'REMPLIR LA COMBOBOX NOM Dim afficherNom As String = "Select nom ,idchasseur from chasseur GROUP BY nom" Dim daN As New OleDb.OleDbDataAdapter(afficherNom, cnx) Dim dsN As New DataSet cnx.Open() daN.Fill(dsN, "chasseur") cnx.Close() cb_nom_stat.DataSource = dsN.Tables("chasseur") cb_nom_stat.DisplayMember = "nom" cb_nom_stat.ValueMember = "idchasseur" End If
Normal tu lui dit de le faire
Je sais avec le .add mais comment faire autrement alors ..
il faut bien mettre nom nan pour qu'il verifie le nom
Bon alors déjà moi j'utiliserais un datareader plutôt qu'un dataset et ensuite dans le read :
chasseur étant un objet que tu auras préalablement défini et qui attendra pour son constructeur 2 paramètres : l'id et le nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 While reader.Read Dim i As Integer For Each c As Chasseur In taCb.Items If c.chasseur = reader.Item("chasseur") Then i += 1 Next If i = 0 Then taCb.Add(New chasseur(reader.item(idChasseur), reader.item("chasseur"))) End While
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 Public Class NomChasseur Private IdChasseur As Integer Private Nom_chasseur As String Sub New(ByVal id As Integer, ByVal nom As String) IdChasseur = id Nom_chasseur = nom End Sub End Class Private Sub Statistique_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load While reader.Read Dim i As Integer For Each c As NomChasseur In cb_nom_stat.Items If c.NomChasseur = reader.Item("chasseur") Then i += 1 Next If i = 0 Then cb_nom_stat.Add(New NomChasseur(reader.item(idChasseur), reader.item("chasseur"))) End While
Un truc dans ce genre là ?? parce que sa me met plein de d'erreur, sa souligne readeur ...
Je ne maitrise pas bien les datareadeur dsl
c'est sûr que si tu ne déclare pas de connexion, pas de command, pas de datareader ça ne risque pas de fonctionner...
Exact que de betise
Je n'ai jamais travaillé avec datareader donc voilà j'ai essayé quand meme
J'ai souligné ou il me souligne en bleu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim Sql As SqlCommand = cnx.CreateCommand Sql.CommandText = "Select nom ,idchasseur from chasseur GROUP BY nom" cnx.Open() Dim myReader As SqlDataReader = Sql.ExecuteReader() While myReader.Read Dim i As Integer For Each c As NomChasseur In cb_nom_stat.Items If c.NomChasseur = myReader.Item("chasseur") Then i += 1 Next If i = 0 Then cb_nom_stat.Add(New NomChasseur(myReader.Item(idChasseur), myReader.Item("chasseur"))) End While cnx.Close()
Dans l'ordre :
- Pour la command il faut un new
- Ce n'est pas c.NomChasseur mais c.Nom_chasseur
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim sql as New SqlCommand("taRequête",cnx)
- Pour ajouter à ta cb il faut mettre :
- Pour le new de ton objet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part cb_nom_stat.Items.Add(tonObjet)
Code : Sélectionner tout - Visualiser dans une fenêtre à part New NomChasseur(myReader.Item("idChasseur"), myReader.Item("chasseur"))
En souligné les erreurs
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 Public Class NomChasseur Private IdChasseur As Integer Private Nom_chasseur As String Public Sub New(ByVal id As Integer, ByVal nom As String) IdChasseur = id Nom_chasseur = nom End Sub End Class Private Sub Statistique_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sql As New SqlCommand("Select nom ,idchasseur from chasseur GROUP BY nom", cnx) cnx.Open() Dim myReader As SqlDataReader = Sql.ExecuteReader() While myReader.Read Dim i As Integer For Each c As NomChasseur In cb_nom_stat.Items If c.Nom_Chasseur = myReader.Item("chasseur") Then i += 1 Next If i = 0 Then cb_nom_stat.Add(New NomChasseur(myReader.Item("idChasseur"), myReader.Item("chasseur"))) End While cnx.Close()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager