Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/06/2011, 20h26   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 9
Points : 2
Points : 2
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 :
Dim cmd1 AS New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE]+" & paye & "  WHERE IDJOUEURS=" & code, CONNEX1)
ça sa fonctionne parfaitement par contre

Code :
Dim cmd1 AS New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE] +" & paye & "  WHERE IDJOUEURS= " & code & " AND SAISON =" & DADA, CONNEX1)
réponse=
Citation:
Échec de la conversion de la valeur nvarchar '2010/2011 ' en type de données int.
Merci pour l'aide à venir
frrodg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h35   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 139
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 139
Points : 2 467
Points : 2 467
Envoyer un message via Yahoo à zinzineti
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
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 23h33   #3
Invité de passage
 
Inscription : juillet 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 9
Points : 2
Points : 2
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.
frrodg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 06h12   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
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.
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 18h41   #5
Invité de passage
 
Inscription : juillet 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 9
Points : 2
Points : 2
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
frrodg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 07h23   #6
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
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.
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 10h30   #7
Invité de passage
 
Inscription : juillet 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 9
Points : 2
Points : 2
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 :
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 :
Dim cmd1 AS New SqlCommand("UPDATE  Cottisation  SET  [MONTANT PAYE]=[MONTANT PAYE] +" & paye & "  WHERE IDJOUEURS= " & code & " AND SAISON =" & DADA, CONNEX1)
réponse=
Code :
É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 :
[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.
frrodg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 10h51   #8
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
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...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 10h52   #9
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Voyez ce lien:
http://msdn.microsoft.com/fr-fr/libr...(v=vs.80).aspx
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 12h38   #10
Invité de passage
 
Inscription : juillet 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 9
Points : 2
Points : 2
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
frrodg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 13h06   #11
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Code :
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
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 14h16   #12
Invité de passage
 
Inscription : juillet 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 9
Points : 2
Points : 2
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.
frrodg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 06h50   #13
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
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)...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h37.


 
 
 
 
Partenaires

Hébergement Web