Meilleur auteur de réponses
Comment mettre à jour les données que possède sa clé primaire de Type : NuméroAuto

Question
-
Bonjour a toutes
Je veux mettre à jour une ligne spécifique dans ma base de données, mais cet erreur afficher dans processus d'enregistrement :
Type de données incompatible dans l'expression du critère:
lorsque j'ai changer le type de champ Type : NuméroAuto au Type : Mémo ne montre aucun message
Mais je ne veux pas changer les types des champs de ma base de donnéesvoici le code Update :
Imports System.Data Imports System.Data.OleDb Public Class edit_rasm Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim Savecommand As New OleDb.OleDbCommand Dim Connectionstring As String = _ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ Application.StartupPath & "\Registre.accdb;" & _ "Jet OLEDB:Database Password=123+Plus" Dim newconnection As New OleDbConnection(Connectionstring) Savecommand.Connection = newconnection Savecommand.CommandType = CommandType.Text Savecommand.CommandText = "UPDATE Registre_1 SET nes_num_acte = '" & Trim(nes_num_acte.Text) & "' , nes_registre = '" & Trim(nes_registre.Text) & "' , nes_type_registre = '" & Trim(nes_type_registre.Text) & "' WHERE N° ='" & TextBox1.Text & "'" newconnection.Open() Savecommand.ExecuteNonQuery() newconnection.Close() MsgBox("l'opération de mise à jour a été effectuée avec succès", MsgBoxStyle.Information) End Sub
voici mon table :Registre_1
Réponses
-
merci fred75 mais voila :: dans ma requête, dans l'expression du critère je dois mettre
WHERE N° =" & TextBox1.Text
et non :
WHERE N° ='" & TextBox1.Text & "'"
pour évite les noms avec des caractères non ASCII de base ( =< 128) car cela peut poser des problèmes d'interprétation de la requête.
- Marqué comme réponse HappySaid vendredi 28 septembre 2012 22:54
Toutes les réponses
-
Bonjour,
En principe, une clef primaire a un type NuméroAuto et ne se modifie pas (même s'il y a des suppressions ou ajouts d'enregistrements)
Si vous voulez le modifier, c'est que la conception de la BDD est mal faite.
Dans ce cas, il est conseillé de créér un RegistreID en clef primaire avec numéroAuto et
vos champs "modifiables" en plus, même si votre deuxième champ est numéro_Acte
fred on youTube
fred -
merci fred75 mais voila :: dans ma requête, dans l'expression du critère je dois mettre
WHERE N° =" & TextBox1.Text
et non :
WHERE N° ='" & TextBox1.Text & "'"
pour évite les noms avec des caractères non ASCII de base ( =< 128) car cela peut poser des problèmes d'interprétation de la requête.
- Marqué comme réponse HappySaid vendredi 28 septembre 2012 22:54
-
merci fred75 mais voila :: dans ma requête, dans l'expression du critère je dois mettre
WHERE N° =" & TextBox1.Text
et non :
WHERE N° ='" & TextBox1.Text & "'"
pour évite les noms avec des caractères non ASCII de base ( =< 128) car cela peut poser des problèmes d'interprétation de la requête.
Bonjour,
Juste un conseil, passez par les requêtes paramétrées pour éviter les injections. Cette méthode était utilisée en VB6.
Code d'exemple :
Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand("SELECT * FROM table WHERE ID=@param1",<cnx>) cmd.Parameters.Add("@param1",SqlDbType.Int).Value = TextBox1.Text
Cette méthode est aussi applicable pour le CRUD.
Voilà
Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !
- Modifié Lyamine vendredi 28 septembre 2012 23:43