Salut
Je n'arrive pas à corriger une erreur due à une valeur NULL renvoyé par la propriété SelectedValue d'un Combobox.
Je m'explique j'ai une requete Select Multi-Tables SQL qui doit me retourner des valeurs de champs issus de plusieurs tables de ma base de données(la requete marche , je l'ai vérifiée avec SQL Server Studio Management 2008) et se basant sur la valeurs d'un ComboBox , voici le contenu de mes tables :
les relations entre les tables sont évidentes.eleves(idelv,nom,prenom,#idclasse,...)
classes(idclasse,nomClasse,nbreEleves,.....)
matieres(idmat,nomMatiere,typematiere)
trimestres(idtrim,nomTrim,datedebut,datefin)
notes(idelv,idmat,idtrim,note)
Voici la requete :
Cette requete est écrite dans le Form_Load et il me signale cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 strSQL = "SELECT eleves.idelv, eleves.nom, eleves.pren, divisions.libcla, matieres.libmat, trimestres.libtrim," & _ "evaluations.moyev, evaluations.dev1, evaluations.dev2, evaluations.exam, evaluations.moymat FROM eleves " & _ "INNER JOIN divisions ON eleves.idcla = divisions.idcla INNER JOIN evaluations ON eleves.idelv = evaluations.idelv " & _ "INNER JOIN trimestres ON evaluations.idtrim = trimestres.idtrim INNER JOIN matieres ON " & _ "evaluations.idmat = matieres.idmat WHERE eleves.idcla = '" & cbDiv.SelectedValue.ToString & "' AND" & _ "evaluations.idmat='" & cbMat.SelectedValue.ToString & "' AND evaluations.idtrim='" & cbTrim.SelectedValue.ToString & "'"Après recherches j'en déduit que la requete me renvoit NULL à cause du SelectedValue des Combobox pourtant les Combobox sont bien remplies par les données issues des tables : classes , matieres et trimestres.Object reference not set to an instance of an object.
J'ai crée une procedure pour remplir les Combobox :
Cette procedure est appellée au chargement de la feuille , j'ai beau cherché mais aucun résultat , j'ai fait un test pour récupérer la valeur de selectedValue dans un msgbox et il ne m'affiche rien puis il m'affiche 1 puis 1, c'est à dire il me répète l'affichage du "1" deux fois je n'ai rien compris.
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 Private Sub FillCombo() cn.ConnectionString = strcon Dim daDiv As New SqlDataAdapter("select idcla,libcla from divisions", cn) Dim dsNotes As New DataSet Dim dtDiv As DataTable dtDiv = dsNotes.Tables("divisions") If cn.State Then cn.Close() cn.Open() daDiv.Fill(dsNotes, "divisions") cbDiv.DisplayMember = "libcla" cbDiv.ValueMember = "idcla" cbDiv.DataSource = dtDiv cn.Close() Dim daMat As New SqlDataAdapter("select idmat,libmat from matieres", cn) Dim dtMat As New DataTable("matieres") If cn.State Then cn.Close() cn.Open() daMat.Fill(dtMat) cbMat.DisplayMember = "libmat" cbMat.ValueMember = "idmat" cbMat.DataSource = dtMat cn.Close() Dim daTrim As New SqlDataAdapter("select idtrim,libtrim from trimestres", cn) Dim dtTrim As New DataTable("trimestres") If cn.State Then cn.Close() cn.Open() daTrim.Fill(dtTrim) cbTrim.DisplayMember = "libtrim" cbTrim.ValueMember = "idtrim" cbTrim.DataSource = dtTrim cn.Close()
Merci de m'aider s'il vous plait.
Partager