locked
Enrégistrement de données connexes

    Question

  • je n'arrive pas à enrégistrer les moyennes saise.

    En effet j'ai dans mon formulaire des données connexes provenant de 4 tables liées qui sont:

    Examens, Centres examen, Candidats Examen et Moyennes. les données examen sont présentées en détail et les autres dans 3 dataGridView.

    un extrait de mon code

     

     

     

    Public Class Saisie_des_Notes

     

    Private Sub EXAMENSBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EXAMENSBindingNavigatorSaveItem.Click

     

    Me.Validate()

    Me.EXAMENSBindingSource.EndEdit()

    Me.CENTRE_EXAMENBindingSource.EndEdit()

    Me.CANDIDATS_EXAMENSBindingSource.EndEdit()

    Me.MOYENNESBindingSource.EndEdit()

    Dim DeletedMoyennes As MYBASEDataSet.MOYENNESDataTable = CType( _

    MYBASEDataSet.MOYENNES.GetChanges(Data.DataRowState.Deleted), MYBASEDataSet.MOYENNESDataTable)

    Dim NewMoyennes As MYBASEDataSet.MOYENNESDataTable = CType( _

    MYBASEDataSet.MOYENNES.GetChanges(Data.DataRowState.Added), MYBASEDataSet.MOYENNESDataTable)

    Dim ModifiedMoyennes As MYBASEDataSet.MOYENNESDataTable = CType( _

    MYBASEDataSet.MOYENNES.GetChanges(Data.DataRowState.Modified), MYBASEDataSet.MOYENNESDataTable)

     

    Try

    ' validation de toute suppression de la table Moyenne...

    If Not DeletedMoyennes Is Nothing Then

    MOYENNESTableAdapter.Update(DeletedMoyennes)

    End If

    ' Mise … jour des tables Examens,Centre Examen et Candidats...

    EXAMENSTableAdapter.Update(MYBASEDataSet.EXAMENS)

    CENTRE_EXAMENTableAdapter.Update(MYBASEDataSet.CENTRE_EXAMEN)

    CANDIDATS_EXAMENSTableAdapter.Update(MYBASEDataSet.CANDIDATS_EXAMENS)

     

    ' Ajout d'un nouvel enr‚gistreement dans la table Moyennes...

    If Not NewMoyennes Is Nothing Then

    MOYENNESTableAdapter.Update(NewMoyennes)

    End If

    ' Mise … jour de toutes les modifications de moyenne...

    If Not ModifiedMoyennes Is Nothing Then

    MOYENNESTableAdapter.Update(ModifiedMoyennes)

    End If

    MYBASEDataSet.AcceptChanges()

    Catch ex As Exception

    MsgBox("L'enr‚gistrement a ‚chou‚")

    Finally

    If Not DeletedMoyennes Is Nothing Then

    DeletedMoyennes.Dispose()

    End If

    If Not NewMoyennes Is Nothing Then

    NewMoyennes.Dispose()

    End If

    If Not ModifiedMoyennes Is Nothing Then

    ModifiedMoyennes.Dispose()

    End If

    End Try

     

    End Sub

     

    Private Sub Saisie_des_Notes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.MOYENNES'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.MOYENNESTableAdapter.Fill(Me.MYBASEDataSet.MOYENNES)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.CANDIDATS_EXAMENS'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.CANDIDATS_EXAMENSTableAdapter.Fill(Me.MYBASEDataSet.CANDIDATS_EXAMENS)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.CENTRE_EXAMEN'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.CENTRE_EXAMENTableAdapter.Fill(Me.MYBASEDataSet.CENTRE_EXAMEN)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.EXAMENS'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.EXAMENSTableAdapter.Fill(Me.MYBASEDataSet.EXAMENS)

     

    End Sub

     

    End Class
    lundi 28 juillet 2008 23:01

Toutes les réponses

  • Bonjour,

     

    Pouvez-vous nous indiquer le problème plus précisement (Messages d'erreurs, emplacement du code qui pose problème...etc).

     

    Cordialement

     

    mardi 29 juillet 2008 10:35
  • Lorsque je saisi une moyenne dans le DataGridView Moyennes et que je clique sur le BindingNavigatorSaveItem_click pour l'enrégistrement je reçoit le message suivant "L'enrégistrement a échoué".

    Je précise, J'ai dans le formulaire la présentation suivante:

     

    1. Examen présenté en détail

    2. Centre Examen en DataGridView1

    3. Candidats Examen en dataGridView2

    4. Moyennes en dataGridView3

     

    Ces 4 tables sont liées de façon hiérachique dans le DataSet "MYBASEDataSet

     

    Mon objectif est de saisir des moyennes à partir d'un examen, d'un centre examen pour des candidats.

     

    Le code généré au depart était le suivant:

     

    Private Sub EXAMENSBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EXAMENSBindingNavigatorSaveItem.Click

    Me.Validate()

    Me.EXAMENSBindingSource.EndEdit()

    Me.TableAdapterManager.UpdateAll(Me.MYBASEDataSet)

    End Sub

     

    Private Sub Saisie_notes_Anonym‚e_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.MOYENNES'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.MOYENNESTableAdapter.Fill(Me.MYBASEDataSet.MOYENNES)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.CANDIDATS_EXAMENS'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.CANDIDATS_EXAMENSTableAdapter.Fill(Me.MYBASEDataSet.CANDIDATS_EXAMENS)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.CENTRE_EXAMEN'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.CENTRE_EXAMENTableAdapter.Fill(Me.MYBASEDataSet.CENTRE_EXAMEN)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.EXAMENS'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.EXAMENSTableAdapter.Fill(Me.MYBASEDataSet.EXAMENS)

    End Sub

     

    Ca ne marchait pas je l'ai modifié pour obtenir ce qui suit:

     

    Public Class Saisie_des_Notes

     

    Private Sub EXAMENSBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EXAMENSBindingNavigatorSaveItem.Click

     

    Me.Validate()

    Me.EXAMENSBindingSource.EndEdit()

    Me.CENTRE_EXAMENBindingSource.EndEdit()

    Me.CANDIDATS_EXAMENSBindingSource.EndEdit()

    Me.MOYENNESBindingSource.EndEdit()

    Dim DeletedMoyennes As MYBASEDataSet.MOYENNESDataTable = CType( _

    MYBASEDataSet.MOYENNES.GetChanges(Data.DataRowState.Deleted), MYBASEDataSet.MOYENNESDataTable)

    Dim NewMoyennes As MYBASEDataSet.MOYENNESDataTable = CType( _

    MYBASEDataSet.MOYENNES.GetChanges(Data.DataRowState.Added), MYBASEDataSet.MOYENNESDataTable)

    Dim ModifiedMoyennes As MYBASEDataSet.MOYENNESDataTable = CType( _

    MYBASEDataSet.MOYENNES.GetChanges(Data.DataRowState.Modified), MYBASEDataSet.MOYENNESDataTable)

     

    Try

    ' validation de toute suppression de la table Moyenne...

    If Not DeletedMoyennes Is Nothing Then

    MOYENNESTableAdapter.Update(DeletedMoyennes)

    End If

    ' Mise … jour des tables Examens,Centre Examen et Candidats...

    EXAMENSTableAdapter.Update(MYBASEDataSet.EXAMENS)

    CENTRE_EXAMENTableAdapter.Update(MYBASEDataSet.CENTRE_EXAMEN)

    CANDIDATS_EXAMENSTableAdapter.Update(MYBASEDataSet.CANDIDATS_EXAMENS)

     

    ' Ajout d'un nouvel enr‚gistreement dans la table Moyennes...

    If Not NewMoyennes Is Nothing Then

    MOYENNESTableAdapter.Update(NewMoyennes)

    End If

    ' Mise … jour de toutes les modifications de moyenne...

    If Not ModifiedMoyennes Is Nothing Then

    MOYENNESTableAdapter.Update(ModifiedMoyennes)

    End If

    MYBASEDataSet.AcceptChanges()

    Catch ex As Exception

    MsgBox("L'enr‚gistrement a ‚chou‚")

    Finally

    If Not DeletedMoyennes Is Nothing Then

    DeletedMoyennes.Dispose()

    End If

    If Not NewMoyennes Is Nothing Then

    NewMoyennes.Dispose()

    End If

    If Not ModifiedMoyennes Is Nothing Then

    ModifiedMoyennes.Dispose()

    End If

    End Try

    End Sub

     

    Private Sub Saisie_des_Notes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.MOYENNES'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.MOYENNESTableAdapter.Fill(Me.MYBASEDataSet.MOYENNES)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.CANDIDATS_EXAMENS'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.CANDIDATS_EXAMENSTableAdapter.Fill(Me.MYBASEDataSet.CANDIDATS_EXAMENS)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.CENTRE_EXAMEN'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.CENTRE_EXAMENTableAdapter.Fill(Me.MYBASEDataSet.CENTRE_EXAMEN)

    'TODOÿ: cette ligne de code charge les donn‚es dans la table 'MYBASEDataSet.EXAMENS'. Vous pouvez la d‚placer ou la supprimer selon vos besoins.

    Me.EXAMENSTableAdapter.Fill(Me.MYBASEDataSet.EXAMENS)

    End Sub

     

    End Class

    mardi 29 juillet 2008 11:04
  • Bonjour,

     

    La première chose à faire est de supprimer :

     

    Code Snippet

    Catch ex As Exception

    MsgBox("L'enregistrement a échoué")

     

    Ainsi, Visual Studio devrait vous afficher en détail ce qu'il pose problème.

     

    Je vous conseil vivement de lire cet article pour bien gérer vos exceptions :

    http://gilles.tourreau.fr/dotnet/dotnet_framework_en_general/dotnet_comprendre_la_philosophie_des_exceptions_sous_dotnet.html

     

    Cordialement

    mardi 29 juillet 2008 11:19
  •  

    Gilles Tourreau, merci j'ai suivi vos conseils et voilà ce qu'on me signale comme erreur:

     

    Une exception sur MOYENNESTableAdapter.Update(ModifiedMoyennes):

     

    L'Exception InvalidOperationException n'a pas été genérée

     

    Update requiert un updateCommand valide lors du passage de la collection DataRow avec des lignes modifée

     

     

     

    Je ne comprends rien mais  je précise que ma table moyennes n'a pas de clé primaire.

     

     

    mardi 29 juillet 2008 11:40
  • Bonjour,

     

    Voilà qui est plus bavard...

     

    Comment est crée l'objet "MOYENNESTableAdapter" ?

     

    Cordialement

     

    mardi 29 juillet 2008 12:08
  • J'ai fais d'abord glisser depuis l'onglet source de donnée, Examen (en détail), ensuite Centre Examen(DataGridView1), Candidats Examen(datagridView2) et enfin Moyennes(DatagridView3).

     

    Ces Tables sont hiérachiquement liées.

     

    J'ai double cliqué sur le ExamenBindingNavigatorsaveItem_Click qu'il généré pour entrer le code.

     

     

    mardi 29 juillet 2008 12:20
  • Bonjour,

     

    Je n'arrive pas à voir où se situe le problème...

    Est-il possible que vous puissiez m'envoyer la partie de votre projet qui pose problème ? (Où reproduire celui-ci dans un nouveau projet).

    Voici mon e-mail : gilles.tourreau@pos.fr

     

    Cordialement

     

    mardi 29 juillet 2008 14:23
  • Ok Gilles,

     

    Mon objectif est le suivant:

     

    1.

    Enrégistrer des données connexes par exemples

    Mettre plusieurs DataGridView dans mon formulaires, saisir des données et pouvoir les enrégistrer.

     

    2.

    Ou encore

    Lier des combobox indépendants

    et Le dernier doit afficher des données d'une table dans un DataGridView .On devrait pouvoir modifier,Ajouter et enrégistrer dans le dataGridView

    Et enfin Imprimer les données de ce DataGridView

     

    Excusez Moi je suis débutant et je vous enverrai le pus souvent des Messages
    mardi 29 juillet 2008 16:01