Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 01/12/2010, 11h51   #1
Nouveau Membre du Club
 
Badiaa
Inscription : octobre 2008
Messages : 187
Détails du profil
Informations personnelles :
Nom : Badiaa
Localisation : Maroc

Informations forums :
Inscription : octobre 2008
Messages : 187
Points : 33
Points : 33
Par défaut update valeurs float

Bonjour,
voici ma requête sql server2008

Code :
1
2
3
4
5
6
7
8
9
10
UPDATE EXAMEN SET NOTE= CASE 
WHEN( CODE_MATIERE = '1' AND @note1 =99)  then '0'  
when (CODE_MATIERE = '1' AND @note1 <>99 ) then @note1  
        WHEN (CODE_MATIERE = '2' AND @note2 ='99')  then '0'  
when (CODE_MATIERE = '2' AND @note2 <>99)  then @note2 END, PRESENCE=
CASE WHEN( CODE_MATIERE = '1' AND @note1 =99) then 'TRUE' 
when( CODE_MATIERE = '2' AND @note2 ='99')  then 'TRUE'  else 'FALSE'
 
end
WHERE NUM_INSCRIPTION = @num
avec
Code :
1
2
3
 note1 = float.Parse(((TextBox)row.FindControl("tmoy1")).Text);
                note2 = float.Parse(((TextBox)row.FindControl("tmoy4")).Text);
                num = ((Label)row.FindControl("lblUserID1")).Text;
je ne sais si c'est juste ou non puisqu'il l ne fais pas une mise à jour mais :il multiplie les notes de la première ligne par 2 à chaque fois que je clique sur le bouton update et il laisse les valeurs d'autres lignes sans modification?
est ce que le probllème viens de type float ?ya til un autre type à utiliser pour les notes des étudiants ?
aidez moi svp.
badi3a82 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/12/2010, 14h29   #2
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 354
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 354
Points : 9 745
Points : 9 745
Votre demande est totalement incompréhensible :

- vous balancez une requête DML sur une table dont on ne dispose pas du DDL

- un bout de code en C# dont on ne sait pas ce qu'il fait et dont on ignore totalement l'articulation avec le DML au dessus (de surcroît sans les types des variables, ce qui fait que vous nous demandez en plus de jouer aux devinettes).

Bref, vous espérez sérieusement une réponse ?
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/12/2010, 22h37   #3
Nouveau Membre du Club
 
Badiaa
Inscription : octobre 2008
Messages : 187
Détails du profil
Informations personnelles :
Nom : Badiaa
Localisation : Maroc

Informations forums :
Inscription : octobre 2008
Messages : 187
Points : 33
Points : 33
Bonsoir;
Voilà la bd et la table examen sont en pièce jointe.
je travail sur la gestion des notes d'une faculté ,pour faciliter l'insertion des notes j'ai utilisé une gridview générée à l'aide de la requête suivante:
pour pouvoir travailler sur deux matières à la fois (un module )et en horizontal.
Code :
1
2
3
4
5
6
7
8
9
SELECT NUM_INSCRIPTION, CODE_TYPE_RELATION_MODULE, NOM_PRENOM_ETUDIANT_ARABE,CODE_MODULE, [1] AS '1', [2] AS '2'
 
 
    FROM         (SELECT  ETUDIANT.NOM_PRENOM_ETUDIANT_ARABE   , EXAMEN.CODE_MATIERE, EXAMEN.NUM_INSCRIPTION, EXAMEN.NOTE, 
                                              CAPITALISE_MODULE.CODE_TYPE_RELATION_MODULE,CAPITALISE_MODULE.CODE_MODULE
                       FROM          EXAMEN INNER JOIN
                                              ETUDIANT ON ETUDIANT.NUM_INSCRIPTION = EXAMEN.NUM_INSCRIPTION INNER JOIN
                                              CAPITALISE_MODULE ON CAPITALISE_MODULE.NUM_INSCRIPTION = EXAMEN.NUM_INSCRIPTION
                       WHERE       CODE_TYPE_RELATION_MODULE =4 AND CODE_MODULE = 1) p PIVOT(SUM(NOTE)FOR CODE_MATIERE IN( [1], [2])) AS pvt ORDER BY NUM_INSCRIPTION



le code qui me pose problème pour le moment c'est le code qui permet de mettre à jour la table examen en utilisant les valeurs que l'utilisateur à inséré dans une gridview en edit mode(J'ai utilisé update note au lieu d'insert par ce que j'ai pas pu utiliser le pivot quand la table examen est vide(le champs note est vide) donc une fois l'étudiant est inscris à un module j'insère son numéro et les id de matières de ce module dans la table examen,et quand j'ai la note je fais update,je n'attend pas avoir une note pour insérer le triple à la fois) .

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
   private void UPDATE()
    {
 
        string cmd = @"UPDATE EXAMEN set NOTE= CASE 
WHEN CODE_MATIERE = '1' and @note1 =99  then '0'  
when CODE_MATIERE = '1' and @note1 <>99  then @note1  
        WHEN CODE_MATIERE = '2' and @note2 ='99'  then '0'  
when CODE_MATIERE = '2' and @note2 <>99  then @note2 END, PRESENCE=
CASE WHEN CODE_MATIERE = '1' and @note1 =99 then 'TRUE' 
when CODE_MATIERE = '2' and @note2 ='99'  then 'TRUE'  else 'FALSE'
 
end
WHERE NUM_INSCRIPTION = @num;";
 
        float @note1, @note2;
        string num;
        SqlCommand myCommand;
        SqlParameter param1, param2, param3;
 
        USING (SqlConnection myConnection = new SqlConnection(ConnectionString))
        {
            myConnection.Open();
 
            foreach (GridViewRow row IN GridView1.Rows)
            {
                note1 = float.Parse(((TextBox)row.FindControl("note1")).Text);
                note2 = float.Parse(((TextBox)row.FindControl("note2")).Text);
                num = ((Label)row.FindControl("lblUserID")).Text;
 
                myCommand = new SqlCommand(cmd, myConnection);
 
                param1 = new SqlParameter("@num", SqlDbType.VarChar, 4);
                param1.Value = num;
                myCommand.Parameters.ADD(param1);
 
                param2 = new SqlParameter("@note1", SqlDbType.Float, 2);
                param2.Value = note1;
                myCommand.Parameters.ADD(param2);
 
                param3 = new SqlParameter("@note2", SqlDbType.Float, 2);
                param3.Value = note2;
                myCommand.Parameters.ADD(param3);
                IF (note1 != NULL && ((note1 <= 20 && note1 >= 0) || note1 == 99) && note1 != NULL && ((note2 <= 20 && note2 >= 0) || note2 == 99))
                {myCommand.ExecuteNonQuery();}
 
                else{Response.WRITE ("la note doit etre comprise entre 0 et 20");}
            }
            myConnection.Close();
        }
 
    }
note 1 c'est la note de la matière dont le code =1 et note2 celle de code_matiere=2 ,note=99 quand l'étudiant est absent ,
Merci
badi3a82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h27.


 
 
 
 
Partenaires

Hébergement Web