Erreur de syntaxe dans linstruction INSERT INTO

Fermé
Delivel Messages postés 3 Date d'inscription vendredi 16 septembre 2016 Statut Membre Dernière intervention 27 septembre 2016 - Modifié par crapoulou le 17/09/2016 à 22:56
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 18 sept. 2016 à 08:12
Bonjour je suis Delivel, débitant en Visual basic. Je vous remercie d’avance pour votre aide.
J’ai une listbox alimentée par une base de données Access ‘’Nom.mdb’’ qui contient la table FichePatient, contenant les champs Nom, Prénom, Nombre, et aussi des boutons modifier, ajouter et supprimer un enregistrement me permettent de gérer cette base et deux Textbox Nom et Prénom. Mais je travaille d’abord sur le cham Nom(qui est affiché sur la listbox)

Mes Problèmes :
1. En premier, Le bouton enregistrer me renvoi l’erreur suivante (conforme à l’image) :



2. En second, Quand je supprime un élément de la listbox, le bouton modifier ne modifie plus l’élément sélectionné mais modifie un autre élément dans la listbox. C’est pourquoi, j’ai ensuite vérifié dans la base de données les valeurs du champ Numéro qui, s’incrémentait automatiquement de 1, mais présente maintenant des vides c'est-à-dire le numéro de la ligne supprimer ne figure plus dans le champ Nombre. Ici j’ai supprimé les éléments 3 et 4 ce qui donne dans la base de données les nombres 1, 2, 5, 6,7 dans cet ordre. En effet, Je pense qu’il ne prend pas en compte les suppressions pour reprendre l’incrémenter de 1 pour chaque enregistrement dans la base de données après suppression d’un élément dans la listbox.

Mon but : Utiliser ses trois boutons afin de Gérer ma Base de données Access depuis une application Visual basic.

NB : Dans ce code ci-dessous :
Boutton1: Modifier
Boutton2: Ajouter un enregistrement
Boutton3 : Supprimer


Voici mon Code en entier:
Imports System
ImportsSystem.Data
ImportsSystem.Data.OleDb

PublicClassForm1
PrivateObjetConnectionAsOleDbConnection
PrivateObjetCommandAsOleDbCommand
PrivateObjetDataAdapterAsOleDbDataAdapter
PrivateObjetDataSetAsNewDataSet()
PrivatestrSqlAsString
PrivateObjetDataTableAsDataTable
PrivateObjetDataRowAsDataRow
PrivateRowNumberAsInteger
PrivatestrConnAsString
PrivateObjetCommandBuilderAsOleDbCommandBuilder
PrivateSub Form1_Load(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) HandlesMyBase.Load
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;"&"Data Source=C:\A effacer\MyDataBase.mdb;"
strSql = "SELECT NomPatient.* FROM NomPatient"
ObjetConnection = NewOleDbConnection()
ObjetConnection.ConnectionString = strConn

ObjetConnection.Open()
ObjetCommand = NewOleDbCommand(strSql)
ObjetDataAdapter = NewOleDbDataAdapter(ObjetCommand)
ObjetCommand.Connection() = ObjetConnection
ObjetDataAdapter.Fill(ObjetDataSet, "NomPatient")
ObjetDataTable = ObjetDataSet.Tables("NomPatient")
        ListBox1.DataSource = ObjetDataSet.Tables("NomPatient")
ListBox1.DisplayMember = "Nom"
NumeroInterne(RowNumber)

EndSub
PrivateSub ListBox1_SelectedIndexChanged(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) Handles ListBox1.SelectedIndexChanged
ListBox1.DataSource = ObjetDataSet.Tables("NomPatient")
ListBox1.DisplayMember = "Nom"
        ListBox1.ValueMember = "Nombre"
RowNumber = ListBox1.SelectedValue
NumeroInterne(RowNumber)
EndSub




PrivateSub Button1_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click

ObjetDataRow = ObjetDataSet.Tables("NomPatient").Rows(RowNumber - 1)
ObjetDataRow("Nom") = Me.Nom.Text
ObjetDataRow("Prénom") = Me.Prénom.Text
ObjetCommandBuilder = NewOleDbCommandBuilder(ObjetDataAdapter)
ObjetDataAdapter.Update(ObjetDataSet, "NomPatient")
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet, "NomPatient")
ObjetDataTable = ObjetDataSet.Tables("NomPatient")
EndSub

PrivateSub Button2_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click
ObjetDataRow = ObjetDataSet.Tables("NomPatient").NewRow()
ObjetDataRow("Nom") = Me.Nom.Text
ObjetDataRow("Prénom") = Me.Prénom.Text
ObjetDataSet.Tables("NomPatient").Rows.Add(ObjetDataRow)
ObjetCommandBuilder = NewOleDbCommandBuilder(ObjetDataAdapter)
ObjetDataAdapter.Update(ObjetDataSet, "NomPatient")
ObjetDataSet.Clear()
ObjetDataAdapter.Fill(ObjetDataSet, "NomPatient")
ObjetDataTable = ObjetDataSet.Tables("NomPatient")
EndSub

PrivateSub Button3_Click(ByVal sender AsSystem.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click
ObjetDataSet.Tables("NomPatient").Rows(RowNumber).Delete()
ObjetCommandBuilder = NewOleDbCommandBuilder(ObjetDataAdapter)
ObjetDataAdapter.Update(ObjetDataSet, "NomPatient")
EndSub
EndClass


Merci beaucoup de bien vouloir me donner un coup de main.


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
18 sept. 2016 à 08:12
Bonjour,

pour ce que tu veux faire, il vaut mieux employer une DataGridview.

Voir ici de nombreux exemples à télécharger:

https://codes-sources.commentcamarche.net/source/list/visual-basic-vb-net-1/17-base-de-donnees/last
0