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 :

eleves(idelv,nom,prenom,#idclasse,...)
classes(idclasse,nomClasse,nbreEleves,.....)
matieres(idmat,nomMatiere,typematiere)
trimestres(idtrim,nomTrim,datedebut,datefin)
notes(idelv,idmat,idtrim,note)
les relations entre les tables sont évidentes.

Voici la requete :

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 & "'"
Cette requete est écrite dans le Form_Load et il me signale cette erreur :
Object reference not set to an instance of an object.
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.

J'ai crée une procedure pour remplir les 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
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()
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.

Merci de m'aider s'il vous plait.