none
Comment mettre à jour les données que possède sa clé primaire de Type : NuméroAuto RRS feed

  • 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ées

    voici 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

    vendredi 28 septembre 2012 13:09

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
    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

    vendredi 28 septembre 2012 17:12
  • 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
    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
    vendredi 28 septembre 2012 23:42