Problème lors insertion ligne avec ADO.NET

Résolu
cs_Cryborg
Messages postés
30
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
8 février 2007
- 24 sept. 2004 à 11:55
cs_Cryborg
Messages postés
30
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
8 février 2007
- 27 sept. 2004 à 09:25
Bonjour,

Je tente désespérément d'insérer une ligne dans un fichier Access en utilisant ADO.NET, mais je n'arrive à rien... Aucun message d'erreur, et pourtant, rien ne s'écrit... J'arrive parfaitement à lire les infos, mais écrire reste problèmatique.... Voici le code que j'utilise :

    Public Function ConnectDBNoms()

        strConnNoms = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & AppStart & "\Listing.mdb;"

        objConnectionNoms = New OleDbConnection
        objConnectionNoms.ConnectionString = strConnNoms
        objConnectionNoms.Open()

        strSqlNoms = "SELECT * FROM Personnes ORDER BY Nom ASC"

        objCommandNoms = New OleDbCommand(strSqlNoms)
        objDataAdapterNoms = New OleDbDataAdapter(objCommandNoms)

        objCommandNoms.Connection() = objConnectionNoms
        objDataSetNoms.Clear()
        objDataAdapterNoms.Fill(objDataSetNoms, "Personnes")
        objDataTableNoms = objDataSetNoms.Tables("Personnes")

    End Function

    Private Sub MenuItem8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem8.Click
        Dim NewLigne As DataRow = objDataSetNoms.Tables("Personnes").NewRow()

        objDataAdapterNoms.InsertCommand = New OleDbCommand
        objDataAdapterNoms.InsertCommand.Connection = objConnectionNoms
        objDataAdapterNoms.InsertCommand.CommandText = "INSERT INTO Personnes(Genre, Nom, Prenom, IDAdresse) VALUES (?,?,?,?)"

        NewLigne("Genre") = 0
        NewLigne("Prenom") = "NPrénom"
        NewLigne("Nom") = "NNom"
        NewLigne("IDAdresse") = CInt(ListView1.SelectedItems.Item(0).Text)
        objDataSetNoms.Tables("Personnes").Rows.Add(NewLigne)

        Try
            objDataAdapterNoms.Update(objDataSetNoms, "Personnes")
            MsgBox("Insertion réussie !")
        Catch ex As Exception
            MsgBox(ex.ToString())
        End Try
        objConnectionNoms.Close()

    End Sub


Quelqu'un aurait une idée ?

3 réponses

cs_Cryborg
Messages postés
30
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
8 février 2007

27 sept. 2004 à 09:25
Je viens de réussir à faire marcher ce bout de code ! L'erreur venait du fait qu'il y avait un champ en NuméroAuto, et le fait de ne pas l'indiquer dans la commande INSERT a éliminé le problème !
3
cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
24 sept. 2004 à 12:56
Salut,

Je pense que ton erreur viens de ce bloc :

============================================
Dim NewLigne As DataRow = objDataSetNoms.Tables("Personnes").NewRow()

objDataAdapterNoms.InsertCommand = New OleDbCommand
objDataAdapterNoms.InsertCommand.Connection = objConnectionNoms
objDataAdapterNoms.InsertCommand.CommandText = "INSERT INTO Personnes(Genre, Nom, Prenom, IDAdresse) VALUES (?,?,?,?)"

NewLigne("Genre") = 0
NewLigne("Prenom") = "NPrénom"
NewLigne("Nom") = "NNom"
NewLigne("IDAdresse") = CInt(ListView1.SelectedItems.Item(0).Text)
objDataSetNoms.Tables("Personnes").Rows.Add(NewLigne)

objDataAdapterNoms.Update(objDataSetNoms, "Personnes")
============================================

Utilise plutôt la fonction "Recordset" avec "addnew", pour cela tu doit impliquer la référence : ADODB

N'hésite pas à demander un exemple de code.

Voir MSDN
Chris....
0
cs_Cryborg
Messages postés
30
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
8 février 2007

24 sept. 2004 à 13:39
Merci pour ta réponse cboulas,

J'ai déjà utilisé ADODB, et effectivement c'est beaucoup plus simple d'utilisation... Mais je voulais absolument essayer les fameux DataSets dont je n'entends que du bien, et qui pourtant ne sont pas une sinécure niveau utilisation...

Si jamais je n'y arrive pas, je reviendrais à ces bons vieux recordsets, mais je voudrais tout de même comprendre pour quoi ce bout de code, qui vient pourtant de MSDN en grande partie, et où je n'ai changé que les noms des objets....

L'erreur vient effectivement de ce bout de code que tu as mis en évidence, mais comme il me sort "Insertion réussie !", je n'arrive pas à voir où ça cloche... Surtout que même avec un pas-à-pas, tout a l'air correct et se remplit bien... On dirait tout simplement que les changements du DataSet ne sont pas retransmis au DataAdapter...
0