[VB.NET] Update et champ automatique

Résolu/Fermé
XatOr Messages postés 742 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 5 décembre 2010 - 9 juin 2008 à 09:59
XatOr Messages postés 742 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 5 décembre 2010 - 9 juin 2008 à 10:27
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. ;)
A voir également:

1 réponse

XatOr Messages postés 742 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 5 décembre 2010 34
9 juin 2008 à 10:27
Apparament il semblerait que ce soit dû aux ' ' qui mettent le Num_autoTextBox.Text comme chaine de caractère, j'ai donc enlevé ces 2 quotes et maintenant celà fonctionne.

Désolé d'avoir ouvert un post pour rien.
-1