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

MS SQL Server Discussion :

Mise à jour sous 2 conditions avec WHERE en sql-server


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut Mise à jour sous 2 conditions avec WHERE en sql-server
    Bonjour, voilà j'ai le problème suivant.
    Je voudrais mettre à jour une donnée de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd1 As New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE]+" & paye & "  WHERE IDJOUEURS=" & code, CONNEX1)
    ça sa fonctionne parfaitement par contre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd1 As New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE] +" & paye & "  WHERE IDJOUEURS= " & code & " AND SAISON =" & DADA, CONNEX1)
    réponse=
    Échec de la conversion de la valeur nvarchar '2010/2011 ' en type de données int.
    Merci pour l'aide à venir

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    Il me semble que la variable DADA est de type nvarchar
    et la colonne SAISON de type int. penser à convertir DADA en int
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut conversion?
    ok pour la variable, mais je comprends parce que IDJOUEURS EST DU TYPE INT,
    = VARIABLE code
    et SAISON est du type nchar(12), = VARIABLE DADA="2011/1012"

    question : comment convertir la variable DADA
    Merci pour la réponse, c'est déjà une approche.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par frrodg Voir le message
    question : comment convertir la variable DADA
    Pour ne pas trouver CONVERT, tu as vraiment du chercher fort !!!
    Tu as aussi CAST - ne me remercies pas, je t'ai bien fait économiser 2 minutes de google.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut concerne CAST
    Ok pour la recherche mais je pense avoir mal posé ma question:
    Pourquoi faire un cast sur une donnée qui est du type nchar dans la table, c'est çà que je ne comprends pas. il faut aussi savoir que je n'ai que 70 ans et que je ne suis pas né avec l'informatique donc il m'arrive de ramer. Il faut aussi savoir que je n'ai aucun problème si il n'y a qu'une condition, mais alors il écrit dans tout la colonne, mais il ne devrais mettre à jour la rangée qui se rapporte à DADA "2011/2012"
    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    tu essaies de stocker une chaine de caractère "2011/1012" dans un entier... Tu comprends que c'est impossible de stocker ceci dans un entier parce que ça n'a rien d'un entier.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut Je pense qu'on ne se comprends pas ou je suis complètement à coté de la plaque
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd1 AS New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE]+" & paye & "  WHERE IDJOUEURS=" & code, CONNEX1)
    ça sa fonctionne parfaitement par contre

    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd1 AS New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE] +" & paye & "  WHERE IDJOUEURS= " & code & " AND SAISON =" & DADA, CONNEX1)
    réponse=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Échec de la conversion de la valeur nvarchar '2010/2011 ' en type de données int.

    Ce que je voudrais c'est de mettre à jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [MONTANT PAYE] SI IDJOUEURS est égal à code et SAISON = à DADA

    Expl:
    Il sagit d'une table du genre suivant:
    Colonne 1 IDPAYEMENTS (int) cles prym
    colonne 2 IDJOUEURS (int) "Relation avec table JOUEURS"
    colonne 3 SAISON (nchar(12))
    colonne 4 Paye (numeric (5))

    Ce qui donne:
    RANG 1 :1,1,2010/2011,100
    RANG 2 :2,3,2011/2012,100
    [COLOR="Black"]
    Donc:
    Je voudrais que 100 rouge = 120 si IDJOUERS =3 et que SAISON = 2011/2012
    Ou j'ai un doute c'est que SAISON(nchar(12)) n'a que 9 caractères !!!!
    J'espère être clair, Si mon raisonnement est incorrecte Pourquoi?
    Merci et bonne journée.

  8. #8
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Dim cmd1 AS New SqlCommand("UPDATE Cottisation SET [MONTANT PAYE]=[MONTANT PAYE] +" & paye & " WHERE IDJOUEURS= " & code & " AND SAISON ='" & DADA & "', CONNEX1)

    Vous devez ajouter des quotes entre DADA car saison est de type caractère...

    Au passage le problème vient du fait que votre code est mauvais: vous devez utiliser les SqlParameters quand vous utilisez ADO.NET...

    Vous n'auriez pas eu ce genre de soucis.... d'autant que si code et dada sont saisis par l'utilisateur vous ne vous protégez pas des attaques par injections SQL...

  9. #9
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut Complements
    Le but du programme est de mettre à jour cette table avec des données qui proviennent d'une feuille Excel "relevé bancaire" donc les données code et DADA viennent de là. Ceci pour info.
    Question: que veut dire :
    ajouter des "quotes" entre DADA car saison est de type caractère.

    Résumer de mes questions est :
    Pourquoi avec un SI c'est correcte mais pas avec 2 SI.
    Si quelqu'un à une solution de code correcte et compréhensible pour moi je suis preneur

    SQL server 2005 et visual studio VB

    Merci

  11. #11
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim cmd1 AS New SqlCommand("UPDATE Cottisation SET [MONTANT PAYE]=[MONTANT PAYE] +" & paye & " WHERE IDJOUEURS= " & code & " AND SAISON ='" & DADA & "', CONNEX1)


    Vous devez ajouter '" et "' autour de dada comme je viens de le faire ci-haut.


    Pensez au SqlParameter

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut Et dire que la solution est simple
    Merci pour la solution Si simple quand on se comprend avec des mots simples,
    '"& DADA &"' et la solution demandée est là
    Merci a vous et bonne continuation.

  13. #13
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Merci pour la solution Si simple quand on se comprend avec des mots simples
    La plus simple ne veut pas dire la bonne... en l'occurrence ce n'est pas le cas ici...

    Remplacez tout ca en passant par les SqlParameters (3 ème fois s'en est lassant)...

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

Discussions similaires

  1. Mise à jour sous condition
    Par floh400 dans le forum Requêtes
    Réponses: 0
    Dernier message: 06/07/2014, 03h30
  2. Mise à jour d'une table avec une autre
    Par Lucien dans le forum SQL
    Réponses: 2
    Dernier message: 20/04/2006, 11h46
  3. [DOM4J] Mise à jour des docs xml avec dom4j
    Par kodo dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 22h48
  4. Mise à jour dans un formulaire avec condition
    Par Bourni dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2006, 23h13
  5. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 15h46

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