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

ADO.NET Discussion :

Problème de conversion lors d'un remplissage d'une DataTable


Sujet :

ADO.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Points : 47
    Points
    47
    Par défaut Problème de conversion lors d'un remplissage d'une DataTable
    Salut à tout le monde

    Voilà je suis bloqué il y a presque 2 jours sur cette erreur :
    Conversion failed when converting the varchar value 'System.Data.DataRowView' to data type int.
    Je ne sais pas comment la résoudre , le débogueur de visual basic 2010 me pointe sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    daNotes.Fill(dsNotes, "evaluations")
    Je travaille sur une appli de bdd concernant la gestion des notes des élèves, mon formulaire sur lequel je travaille permet la saisie des notes des élèves en fonction des valeurs sélectionnées de trois combobox :

    le 1er s'appelle cbDiv : combobox affichant les noms des divisions ( c'est à dire les classes) et pour chaque classe sélectionnée , la liste des élèves appartenant à cette division s'affiche dans un DataGridView.

    le 2e s'appelle cbMat : combobox affichant les nom des matières
    le 3e s'appelle cbtrim : combobox affichant les noms des trimestres.

    car pour connaitre les notes d'un élève on doit savoir la matière pour laquelle il a eu des notes et aussi le trimestre car il y en a trois dans une année scolaire.

    Donc mon idée se résume ainsi :

    Dans un DataGridView je dois afficher les n° , les noms et les prénoms des élèves selon la valeur de la division sélectionnée dans le combobox cbDiv.
    Ensuite on choisit la matière toujours dans le combobox cbMat et après on choisit le trimestre dans le combobox cbTrim puis enfin on saisit les notes pour chaque élève.

    voici mon code (la requete est un peu complexe mais je l'ai testé sur SQL SERVER 2008 et elle marche très bien)

    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
    Private Sub cbDiv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbDiv.SelectedIndexChanged
     
     
            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.Text & "'" & _
     "AND evaluations.idmat='" & cbMat.Text & "' AND evaluations.idtrim='" & cbTrim.Text & "'"
     
     
            Dim daNotes As New SqlDataAdapter(strSQL, cn)
            Dim dsNotes As New DataSet
            Dim dtNotes As New DataTable("evaluations")
     
            Try
            If cn.State Then cn.Close()
            cn.Open()
            daNotes.Fill(dsNotes, "evaluations")
            cn.Close()
     
            If dsNotes.Tables("evaluations").Rows.Count > 0 Then
     
                dgvNotes.DataSource = dsNotes
                dgvNotes.DataMember = "evaluations"
     
     
            Else
                'dgvNotes.DataSource = Nothing
                'MsgBox("لا يوجد علامات بهذا القسم", MsgBoxStyle.Information)
                'DGVRefresh()
     
            End If
     
     
            Catch ex As Exception
            MsgBox(ex.Message)
     
             End Try
     
        End Sub
    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Peux-tu nous fournir le inner Message ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    De quel type sont tes colonnes idmat/idtrim/idcla ? Si c'est des entiers, tu ne devrais pas mettre des guillemets... Mais ça ne suffit pas à expliquer le problème.

    Mets un point d'arrêt au niveau de la construction de ta requête ; à mon avis le texte d'un des ComboBox renvoie "System.Data.DataRowView", parce que tu n'as pas du mettre le bon nom de colonne dans le DisplayMember (ou alors tu ne l'as pas renseigné du tout)

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    "Combo box affichant le nom des matières..." manifestement il envois des caractères...

    Ce n'est pas cb.text mais cb.selectedValue que tu dois vouloir passer à ta requète.
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/06/2008, 14h37
  2. Probléme de langue lors de l'import d'une B D
    Par jarraysami dans le forum Oracle
    Réponses: 1
    Dernier message: 26/11/2007, 11h08
  3. Réponses: 8
    Dernier message: 17/09/2007, 20h16
  4. Problème de charset lors de la création d'une instance 8i
    Par girint dans le forum Administration
    Réponses: 2
    Dernier message: 15/06/2007, 13h50
  5. Réponses: 8
    Dernier message: 06/06/2007, 17h03

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