Probleme d'update dans base de données avec dbnull ...

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 3 avril 2008 à 22:11
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 5 avril 2008 à 15:43
Bonsoir,
je fait un update de la forme
update table set x1=@x1,x2=@x2 where m1=@m1 and m2=@m2 ..
ma table admet des valeur snulles (ces @m1 et @m2 je les prends dans un datagridview que j'ai prealablement chargé a partir de la BD)
mon probleme se pose quand il n'y avait rien pour @m1 ou @m2 (valeur null dans la BD)
je met command.parameters["@m1].value=DbNull.value
mais ca n'update pas ...
je me demandais dans le cas de la valeur nulle s'il ne fallait pas mettre   m1 is null ( je sais que quand on fait ca ca marche) mais dans mon cas de sfois m1 est nul ,d'autres fois m2 ,etc... enfin plusieurs params peuvent etre nulle je ne cherchais qu'un moyen de retrouver l'enregsitrement a partir de ces infos car il ne possede pas de clé primaire...

merci pour votre aide

1 réponse

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
5 avril 2008 à 15:43
Salut,

NULL n'est pas une valeur. NULL n'est pas égal à NULL.

Donc si m1/m2 sont nullables, tu dois adapter ta requête en conséquence.
Si j'ai bien saisi le comportement voulu ça donne :

UPDATE table 
SET x1=@x1, 
   x2=@x2
WHERE (m1=@m1 OR (@m1 IS NULL AND m1 IS NULL))
   AND (m2=@m2 OR (@m2 IS NULL AND m2 IS NULL))

/*
coq
MVP Visual C#
CoqBlog
*/
0