Probléme de mise à jour dans la base de données

ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010 - 4 mars 2009 à 23:47
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010 - 5 mars 2009 à 16:30
Bonjour,
je veux pouvoir mettre à jour ou supprimer des éléments dans ma base de données et je fait une fonction comme suit :

Public Function UpdateGrp(ByVal dtGroupe As DataTable) As DataTable
        Dim daGroupe As New SqlDataAdapter
        Dim cmdGroupeUpdate As SqlCommand
        Dim cmdGroupeDelete As SqlCommand
        Dim cmdGroupInsert As SqlCommand
        Dim SQLcn As New SqlConnection()

        Try
            If Me.connecter() Then

                cmdGroupInsert = New SqlCommand( _
                "insert into GroupesProjets(ANNEEGR,NUMGR) values (@anneeGr,@numGr) ", Me.SQLcn)
                daGroupe.InsertCommand.Parameters.Add("@anneeGR", SqlDbType.VarChar, 7, "ANNEEGR")
                daGroupe.InsertCommand.Parameters.Add("@numGr", SqlDbType.Decimal, 0, "NUMGR")
                daGroupe.InsertCommand.Parameters.Add("@CommentGr", SqlDbType.Text, 1000, "CommentGr")
                daGroupe.InsertCommand = cmdGroupInsert

                cmdGroupeUpdate = New SqlCommand( _
                "UPDATE GROUPESPROJETS set  ANNEEGR = @ANNEEGR" & _                ", NUMGR @NUMGR, COMMENTGR @COMMENTGR WHERE (GROUPEID = @GROUPEID)", Me.SQLcn)
                daGroupe.UpdateCommand = cmdGroupeUpdate
                daGroupe.UpdateCommand.Parameters.Add("@ANNEEGR", SqlDbType.VarChar, 7, "ANNEEGR")
                daGroupe.UpdateCommand.Parameters.Add("@NUMGR", SqlDbType.Decimal, 0, "NUMGR")
                daGroupe.UpdateCommand.Parameters.Add("@COMMENTGR", SqlDbType.Text, 1000, "COMMENTGR")
                daGroupe.UpdateCommand.Parameters.Add("@GROUPEID", SqlDbType.Int, 0, "GROUPEID")
                cmdGroupeDelete = New SqlCommand( _
                "DELETE FROM GROUPESPROJETS WHERE (GROUPEID = @GROUPEID)", Me.SQLcn)
                daGroupe.DeleteCommand = cmdGroupeDelete
                daGroupe.DeleteCommand.Parameters.Add("@GROUPEID", SqlDbType.Decimal, 0, "GROUPEID")
              
                Me.deconnecter()
                Return Me.GroupeInfos// ceci est une autre datatable qui me permet d'afficher tous les elements de ma table
            Else
                Return Nothing
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)

            Me.deconnecter()
            Return Nothing
        End Try
    End Function

Mon probléme est une exception qui me met: System.NullReference exception. J'ai tout regarder mé je ne vois pas ce que ca peut etr.
Pouvez-vous m'aider?
Merci d'avance.

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mars 2009 à 08:45
Salut
Il y a trois trucs qui me titillent (je ne suis pas habitué à .Net ni aux requètes stockées) :
Dans ta première partie :
cmdGroupInsert = New SqlCommand( _
   "insert into GroupesProjets(ANNEEGR,NUMGR) values (@anneeGr,@numGr) ", Me.SQLcn)
   daGroupe.InsertCommand.Parameters.Add("@anneeGR", SqlDbType.VarChar, 7, "ANNEEGR")
   daGroupe.InsertCommand.Parameters.Add("@numGr", SqlDbType.Decimal, 0, "NUMGR")
   daGroupe.InsertCommand.Parameters.Add("@CommentGr", SqlDbType.Text, 1000, "CommentGr")
   daGroupe.InsertCommand = cmdGroupInsert
-1- Tu n'utilises que 2 variables dans ta requètes alors que tu en définis 3 : @CommentGR est de trop
-2- Ne faudrait-il pas des ' pour encadrer la valeur de @anneeGR qui semble $etre du texte (dépend de la définition de ANNEEGR dans la base) 
-3- Où nommes-tu ta requète ? Il faut bien lui donner un nom, sinon comment veux-tu la réutiliser ?

Je ne connais pas trop ces syntaxes, alors mes questions sont peut-être connes, excuses

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
5 mars 2009 à 11:31
Bonjour, quand je copiai la syntaxe j'ai oublié la 3eme variable, c'est pas le probléme.
Et pour ce qui est des quotes(') pour les textes c'est pas le probléme non plus, c'est comme ça que s'écrit la syntaxe.
Par contre je ne compren pa ce que tu veux dire par nommer ta requete. Peut etre que je ne compren pas mais ces requetes sont executés dan un datagridview.

Je fais une fonction comme suit dans un composant (GestionGroupe) qui fait reference au composant ou se trouve la fonction  UpdateGrp.

 Public Function ModifierGroupe(ByVal dtNewDT As DataTable) As DataSet
// objGroupe est un new AccesDonnees (AccesDonnees est le composant ou se trouve ma fonction UpdateGrp)
        objGroupe.UpdateGrp(dtNewDT)
        Return Nothing
    End Function

Après j'appelle la fonction ModifierGroupe dans un form qui se trouve dans un autre composant  (CompClient) faisant reference au composant ou se trouve ma fonction ModifierGroupe.
Et dans ce composant, se trouve mon datagridview ou je peut inserer, modifier ou supprimer des elements.
Toujours dans se form se trouve un bouton d'enregistrement que j'ai fait comme suit:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
//objGestion  est un new GestionGroupe
            objGestionGroupe.ModifierGroupe(DataGridView1.DataSource)

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

C'est long mais j'espere que j'ai étais clair. Merci de m'aider.
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
5 mars 2009 à 16:30
J'ai trouvé le probléme, dans un de maes fonctions utilisées, j'avais renommé les colonnes de ma base (par exple NUMGR as Annee) et j'en ai pas tenue compte par la suite.
Merci.
0
Rejoignez-nous