[VB.NET] Update et champ automatique
Résolu
XatOr
Messages postés
799
Statut
Membre
-
XatOr Messages postés 799 Statut Membre -
XatOr Messages postés 799 Statut Membre -
Bonjour, depuis peu, je code pour les besoins de mon entreprise en VB.NET.
Mon projet consiste à gérer une base de donnée Access à partir d'une application Windows totalement créer par mes soins. Cette base de donnée regroupe tous les contacts des différents sites de l'entreprise ainsi que les contacts extérieurs à l'entreprise. Pour le moment, j'ai réussi à créer une form permettant l'ajout de contact.
En ce moment je suis dans la phase de developpement de la form permettant la modification et la mise à jour de la base. Pour celà, j'utilise une datagridview sans modifications possible directement dans cette datagrid mais lorsque l'on clique sur une ligne, les informations se retrouvent juste en dessous dans des TextBox, MaskedTextBox, ComboBox, etc. Le problème c'est que pour Update (lors du clique sur le bouton), la modification de ma requête se fait sur tous les champs modifiés à partir d'un champ automatique, le champ d'identification appelé Num_auto (dans le WHERE). Voici mon code :
Imports System.Data.OleDb
Imports System.Globalization
Public
Class Edit_data
PrivateSub Edit_data_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
'TODO : cette ligne de code charge les données dans la table 'ContactsDataSet.annuaire'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.AnnuaireTableAdapter.Fill(Me.ContactsDataSet.annuaire)
' Format des MaskedTextBox en culture EN-US pour accepter les points
Ligne_DirecteMaskedTextBox.Culture = New CultureInfo("En-us")
Ligne_DirecteMaskedTextBox.Mask = "00.00.00.00.00"
PortableMaskedTextBox.Culture = New CultureInfo("En-us")
PortableMaskedTextBox.Mask = "00.00.00.00.00"
EndSub
' Mise à jour de la table lors du clique sur le bouton
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connec AsNew OleDbConnection()
Dim cmd_update AsNew OleDbCommand()
connec = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Contacts.mdb")
cmd_update = New OleDbCommand _
("UPDATE annuaire SET Nom=('" & NomTextBox.Text & "') WHERE Num_auto=('" & Num_autoTextBox.Text & "')", connec)
connec.Open()
cmd_update.Connection = connec
cmd_update.ExecuteNonQuery()
EndSub
EndClass
Donc ici :
cmd_update = New OleDbCommand _
("UPDATE annuaire SET Nom=('" & NomTextBox.Text & "') WHERE Num_auto=('" & Num_autoTextBox.Text & "')", connec)
La commande OleDb effectue une UPDATE dans la table annuaire en changeant le champ Nom par ce qui est contenu dans NomTextBox avec la condition du WHERE où le Num_auto est égal au texte contenu dans Num_autoTextBox.
Donc voilà c'est la condition qui ne fonctionne pas apparament parce que Num_auto est un champ de type numéro automatique. J'ai essayé (pour un simple test), d'effectuer la condition avec un autre type de champ et ca fonctionnait.
Merci de me donner si possible des explications. ;)
Mon projet consiste à gérer une base de donnée Access à partir d'une application Windows totalement créer par mes soins. Cette base de donnée regroupe tous les contacts des différents sites de l'entreprise ainsi que les contacts extérieurs à l'entreprise. Pour le moment, j'ai réussi à créer une form permettant l'ajout de contact.
En ce moment je suis dans la phase de developpement de la form permettant la modification et la mise à jour de la base. Pour celà, j'utilise une datagridview sans modifications possible directement dans cette datagrid mais lorsque l'on clique sur une ligne, les informations se retrouvent juste en dessous dans des TextBox, MaskedTextBox, ComboBox, etc. Le problème c'est que pour Update (lors du clique sur le bouton), la modification de ma requête se fait sur tous les champs modifiés à partir d'un champ automatique, le champ d'identification appelé Num_auto (dans le WHERE). Voici mon code :
Imports System.Data.OleDb
Imports System.Globalization
Public
Class Edit_data
PrivateSub Edit_data_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
'TODO : cette ligne de code charge les données dans la table 'ContactsDataSet.annuaire'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.AnnuaireTableAdapter.Fill(Me.ContactsDataSet.annuaire)
' Format des MaskedTextBox en culture EN-US pour accepter les points
Ligne_DirecteMaskedTextBox.Culture = New CultureInfo("En-us")
Ligne_DirecteMaskedTextBox.Mask = "00.00.00.00.00"
PortableMaskedTextBox.Culture = New CultureInfo("En-us")
PortableMaskedTextBox.Mask = "00.00.00.00.00"
EndSub
' Mise à jour de la table lors du clique sur le bouton
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connec AsNew OleDbConnection()
Dim cmd_update AsNew OleDbCommand()
connec = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Contacts.mdb")
cmd_update = New OleDbCommand _
("UPDATE annuaire SET Nom=('" & NomTextBox.Text & "') WHERE Num_auto=('" & Num_autoTextBox.Text & "')", connec)
connec.Open()
cmd_update.Connection = connec
cmd_update.ExecuteNonQuery()
EndSub
EndClass
Donc ici :
cmd_update = New OleDbCommand _
("UPDATE annuaire SET Nom=('" & NomTextBox.Text & "') WHERE Num_auto=('" & Num_autoTextBox.Text & "')", connec)
La commande OleDb effectue une UPDATE dans la table annuaire en changeant le champ Nom par ce qui est contenu dans NomTextBox avec la condition du WHERE où le Num_auto est égal au texte contenu dans Num_autoTextBox.
Donc voilà c'est la condition qui ne fonctionne pas apparament parce que Num_auto est un champ de type numéro automatique. J'ai essayé (pour un simple test), d'effectuer la condition avec un autre type de champ et ca fonctionnait.
Merci de me donner si possible des explications. ;)
A voir également:
- [VB.NET] Update et champ automatique
- Réponse automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Windows update bloqué - Guide
- Winget update - Guide