IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Modification sans toucher la clé


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Par défaut Modification sans toucher la clé
    Comment je peux modifier certains champs d'un enregistrement et ne pas modifier d'autres. Par exemple : J'ai une table "Fournisseur" et je veux modifier certains champs de cette table d'un enregistrement sauf que je ne veux pas modifier la clé de cette table car elle doit être intouchable. Comment faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            Dim cnx As New OleDbConnection
            Dim cmd = New OleDbCommand("update Fournisseur set Fournisseur.Nom_frs='" & Txtnomfrs.Text & "'" & ", Fournisseur.Adr_frs='" & Txtadr.Text & "'" & ", Fournisseur.Tel_frs='" & Txttel.Text & "'" & ", Fournisseur.Fax_frs='" & Txtfax.Text & "'" & ", Fournisseur.Email_frs='" & Txtemail.Text & "'" & " where Num_frs='" & Txtnumfrs.Text & "'", cnx)
            Try
                cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrateur.STANDARD\Mes documents\Projet Budget\Budget\Budget\Marches.mdb"
                cnx.Open()
                cmd.connection = cnx
                cmd.executenonquery()
                MsgBox("Le fournisseur a été modifié avec succès", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                If Not (cnx Is Nothing) Then
                    cnx.Close()
                End If
            End Try
            Frmprincipale.Show()
            Me.Close()
        End Sub

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    Je ne comprend pas ce que tu veux dire par modifier la clef : est ce que tu parles de la clef primaire? qui dans ce cas à l'air d'être le numéro de fournisseur et dans ta requête tu ne la modifies pas donc je ne vois pas l'utilité de ta question.

    Si tu veux qu'elle ne soit pas modifiable par une requête, applique des droits sur ta table fournisseurs et la colonne numéro de fournisseur

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Par défaut
    Bonjour,
    Pour créer la requête utilise un string.format(l'encodage est plus simple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim SCMD as string
    scmd = string.format("update Fournisseur set Fournisseur.Nom_frs='{0}', {1}','{2}','{3}','{4}' where Num_frs = '{5}' ",
    Txtnomfrs.Text , Txtadr.Text, Txttel.Text, Txtfax.Text , Txtemail.Text Txtnumfrs.Text).
    Pour répondre à ta question, il faut placer dans la requête uniquement les champs à modifier.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    scmd = string.format("update Fournisseur set Fournisseur.Nom_frs='{0}' where Num_frs = '{1}' ",
    Txtnomfrs.Text, Txtnumfrs.Text).
    va modifier le champ Fournisseur.Nom ayant la clé Txtnumfrs.text.
    La clé de l'enregistrement ne peut pas être modifiée sauf par delete/insert.
    J'espère que cela répond à ta question.
    Bon boulot Jean

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Par défaut
    J'ai essayé comme tu l'a dis mais là il ne prend même pas en considération les modifications effectuées. Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            Dim cnx As New OleDbConnection
            Dim SCMD As String
            SCMD = String.Format("update Fournisseur set Fournisseur.Nom_frs=' ', Fournisseur.Adr_frs='', Fournisseur.Tel_frs='', Fournisseur.Fax_frs='', Fournisseur.Email_frs='' where Num_frs=''", Txtnomfrs.Text, Txtadr.Text, Txttel.Text, Txtfax.Text, Txtemail.Text)
            Try
                cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrateur.STANDARD\Mes documents\Projet Budget\Budget\Budget\Marches.mdb"
                cnx.Open()
                MsgBox("Le fournisseur a été modifié avec succès", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                If Not (cnx Is Nothing) Then
                    cnx.Close()
                End If
            End Try
            Frmprincipale.Show()
            Me.Close()
        End Sub

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    tu as retiré ton objet command et tu ne l'executes pas ta requete
    c'est donc un fonctionnement normal ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 257
    Par défaut
    J'ai essayé ceci mais il me sort ce msg d'erreur "Type de données incompatibles dans l'expression de critère"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     Private Sub Btnvalider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnvalider.Click
            Dim cnx As New OleDbConnection
            Dim SCMD As String
            Dim cmd As New OleDbCommand
            SCMD = String.Format("update Fournisseur set Fournisseur.Nom_frs=' ', Fournisseur.Adr_frs='', Fournisseur.Tel_frs='', Fournisseur.Fax_frs='', Fournisseur.Email_frs='' where Num_frs=''", Txtnomfrs.Text, Txtadr.Text, Txttel.Text, Txtfax.Text, Txtemail.Text)
            cmd.CommandText = SCMD.ToString
            Try
                cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrateur.STANDARD\Mes documents\Projet Budget\Budget\Budget\Marches.mdb"
                cnx.Open()
                cmd.Connection = cnx
                cmd.ExecuteNonQuery()
                MsgBox("Le fournisseur a été modifié avec succès", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                If Not (cnx Is Nothing) Then
                    cnx.Close()
                End If
            End Try
            Frmprincipale.Show()
            Me.Close()
        End Sub

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    ton String.Format ne ressemble pas à celui qu'on t'a proposé
    il y avait des {1} ..
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Crypter transit des données sans toucher au code source
    Par thecrafty dans le forum Protocoles
    Réponses: 2
    Dernier message: 08/06/2007, 17h31
  2. Supprimer une classe Fille sans toucher a la Mere
    Par 17mounir dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/01/2007, 12h27
  3. Réponses: 4
    Dernier message: 25/04/2006, 19h41
  4. [J2ME][MIDlet]rafraichir une image sans toucher au form?
    Par noobiewan kenobi dans le forum Java ME
    Réponses: 1
    Dernier message: 05/09/2005, 09h54
  5. Onglet version : modif sans recompiler
    Par Jerome0075 dans le forum Windows
    Réponses: 3
    Dernier message: 29/07/2004, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo