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 :

UPDATE sql avec clé primaire en condition


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut UPDATE sql avec clé primaire en condition
    Bonjour, j'ai actuellement une table "En_cours" contenant plusieurs colonne dont une colonne nommée "Id" en numéro automatique qui est ma clé primaire.
    Je voudrais mettre à jour ma table en utilisant le numéro de la colonne "Id" en condition.

    Le code ci-dessous fonctionne:

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                    OuvrirConnexion()
                    'Change le N° de devis dans la base de données En_cours
                    NewNumDevis = TextBox4.Text
                    sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Client = '" & EditClient & "'"
     
                    cmd = New OleDbCommand(sql)
                    dta = New OleDbDataAdapter(cmd)
                    cmd.Connection() = cnx
                    dta.Fill(dts, "En_cours")
                    dtt = dts.Tables("En_cours")
                    dts.Clear()

    Et celui-ci ne fonctionne pas:

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                    OuvrirConnexion()
                    'Change le N° de devis dans la base de données En_cours
                    NewNumDevis = TextBox4.Text
                    sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Id = '" & EditId & "'"
     
                    cmd = New OleDbCommand(sql)
                    dta = New OleDbDataAdapter(cmd)
                    cmd.Connection() = cnx
                    dta.Fill(dts, "En_cours")
                    dtt = dts.Tables("En_cours")
                    dts.Clear()

    Le programme bloque sur la ligne dta.Fill(dts, "En_cours") et j'obtiens l'erreur suivante:

    Nom : 2020-02-19_075408.jpg
Affichages : 201
Taille : 23,3 Ko

    Et j'ai absolument besoin d'utiliser cette clé primaire en critère pour différencier mes différentes lignes.
    Merci de votre aide.

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 573
    Par défaut
    Bonsoir,
    Et comme ça ?
    SET [N°Devis]=

  3. #3
    Membre éclairé Avatar de Sam Placi
    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Octobre 2019
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Octobre 2019
    Messages : 68
    Par défaut
    Bonjour,

    Je en suis pas trop expérimenté mais je crois que la solution de Thumbdown est sûrement à prendre en considération à cause du caractère spécial "°".

    Je crois vois d'autres problèmes. Il y a plusieurs endroits où des informations numériques sont passées entre quotes. Il n'en faut pas pour les numériques.

    Si EditId est numérique, il ne faut de quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Id = '" & EditId & "'"
    Si N°Devis est numérique, il ne faut pas de quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Client = '" & EditClient & "'"
    Enfin, gros problème potentiel : mettre la clé primaire en condition est bien naturel. Mais modifier la valeur de clé primaire est interdit si elle est de type "Num Auto", et sujet à erreur dans les autres cas.

    Cordialement,

    Sam

  4. #4
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut
    Bonjour et merci pour vos réponses, qui m'ont permis de résoudre ce problème.
    Comme l'a dit Sam Placi, il ne faut pas de quote pour les informations numériques...

    Voici le code qui fonctionne:

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                    sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Id = " & EditId & ""
     
     
                    cmd = New OleDbCommand(sql)
                    dta = New OleDbDataAdapter(cmd)
                    cmd.Connection() = cnx
                    dta.Fill(dts, "En_cours")
                    dtt = dts.Tables("En_cours")
                    dts.Clear()

    Encore merci à vous.

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 131
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Id = " & EditId & ""
    Les deux derniers " ne sont pas nécessaires.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql = "UPDATE En_cours SET N°Devis= '" & NewNumDevis & _
                    "' WHERE Id = " & EditId
    doit être suffisant.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre éclairé Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Par défaut
    Je viens de tester la solution de ProgElecT, ça marche également sans les derniers ""
    Merci à tous.

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

Discussions similaires

  1. Impossible update table avec clé primaire
    Par montis dans le forum Débuter
    Réponses: 4
    Dernier message: 30/11/2012, 13h03
  2. [MySQL] Requete SQL avec 2 tables et condition de date+somme
    Par lounou dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/11/2012, 17h43
  3. Update SQL avec LINQ
    Par ronki dans le forum Linq
    Réponses: 2
    Dernier message: 29/03/2010, 17h29
  4. [Lazarus] Tdbgrid update SQL avec Mysql5
    Par panjas51 dans le forum Lazarus
    Réponses: 5
    Dernier message: 09/02/2008, 12h55
  5. Update sql, avec une table à deux colonnes ...
    Par dcz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/04/2006, 18h06

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