Probleme d'ajout d'une ligne avec dataset

gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008 - 12 nov. 2006 à 17:12
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012 - 24 avril 2008 à 18:15
J'ai telechargé un code source de l'application access et ado.net et j'ai essayer de faire les modification necessaire pour l'adapter a sql server.
Resultat:toutes les procedures marchent sauf celle de l'ajout d'une ligne,une exception "erreur systeme" est generée lorsque j'essaie d'enregistrer la ligne que je voulais ajouter et lexecution s'arrete au niveau de l'instruction d'Update du dataadapter.
J'ai fait toutes les verifications que je connaisse mais le probleme persiste.
Aidez moi SVP...
NB:toutes  les procedures sont faites  par la methode du dataset et dataadapter.
Merci d'avance.

4 réponses

cs_kazer04 Messages postés 182 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 14 mars 2011
13 nov. 2006 à 18:53
envoie le bout de code qui bug
0
cs_kazer04 Messages postés 182 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 14 mars 2011
13 nov. 2006 à 18:54
tu peu le faire en message
0
gargourifahmi Messages postés 31 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 3 décembre 2008
13 nov. 2006 à 19:38
Private Sub btnenr_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnenr.Click

        cnx.Open()
        sql = "select * from test"
        cmd = New SqlCommand(sql)
        dta = New SqlDataAdapter(cmd)
        cmd.Connection() = cnx
        'si un champ n'est pas rempli fin de procédure
        If Me.txtnom.Text = "" Or _
           Me.txtprenom.Text = "" Or _
           Me.txtjob.Text = "" Then

            MessageBox.Show("Vous devez remplir tous les champs !", "Erreur...", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Me.txtnom.Focus()

            Exit Sub

        End If
        dta.InsertCommand = New SqlCommand("insert into test(reference,nom,prenom,emploi) Values (@reference,@nom,@prenom,@emploi",cnx)
        dta.InsertCommand.Parameters.Add("@reference", SqlDbType.Decimal, 9, "reference")
        dta.InsertCommand.Parameters.Add("@nom", SqlDbType.Text, 16, "nom")
        dta.InsertCommand.Parameters.Add("@prenom", SqlDbType.Text, 16, "prenom")
        dta.InsertCommand.Parameters.Add("@emploi", SqlDbType.Text, 16, "emploi")
        'cr?tion d'une nouvelle ligne avec les données des textbox

        dtr = dts.Tables("test").NewRow()
        dtr("nom") = Me.txtnom.Text
        dtr("prenom") = Me.txtprenom.Text
        dtr("emploi") = Me.txtjob.Text

        'ajout de la ligne dans le DataSet
        dts.Tables("test").Rows.Add(dtr)

        'création et exécution du commandbuilder
        'pour mettre à jour le DataAdapter
        cmdb = New SqlCommandBuilder(dta)

        'mise à jour des données du DataAdapter
        'à partir du commandbuilder
        dta.Update(dts, "test")   "c'est ici que l'execution genere l'erreure systeme

        'on vide le dataset pour le recréer avec
        'les nouvelles données
        dts.Clear()
        dta.Fill(dts, "test")
        dtt = dts.Tables("test")

        'mise à jour de la datagrid
        DataGrid1.SetDataBinding(dts, "test")

        'aller au début du fichier
        rownum = 0

        'affichage des données dans les texbox
        Me.txtref.Text = dtt.Rows(rownum).Item("reference")
        Me.txtnom.Text = dtt.Rows(rownum).Item("nom")
        Me.txtprenom.Text = dtt.Rows(rownum).Item("prenom")
        Me.txtjob.Text = dtt.Rows(rownum).Item("emploi")

        'activation des boutons
        btnp.Enabled = True         'premier
        btnprec.Enabled = True      'précédent
        btnsui.Enabled = True       'suivant
        btnder.Enabled = True       'dernier

        btnmod.Enabled = True
        btnsup.Enabled = True

        btnajou.Enabled = True
        btnenr.Enabled = False      'valider

        btnajou.Text = "Ajouter"

        cnx.Close()

    End Sub

RQ: ce code est pris des codes source du site avec comme j'avais dit des modification
afin de l'adapter a sql server.
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
24 avril 2008 à 18:15
en remplacant:
dad.Update(dst, "test")
par:
Try
If dst.HasChanges Then
dad.ContinueUpdateOnError = True
MsgBox(" maj : " & dad.Update(dst, table)) 'Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.
Else
MsgBox("aucun changement")
End If

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

tu résoud une partie du problemme.
0
Rejoignez-nous