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

ASP.NET Discussion :

Inserer des booléens à partir des checkBox


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut Inserer des booléens à partir des checkBox
    Bonjour,
    alors là ce problème je sais vraiment pas comment l'aborder mais je vais tenter de vous l'expliquer de façon simple:

    J'ai un panel constitué de checkbox créer dynamiquement (bien que ce ne soit ici le problème!).
    D'un autre coté j'ai une table sous SQL server qui est composé des champs en grande partie de type bit (booléen), l'autre champ recupère le nom disons du groupe créer.

    Chaque checkBox correspond à un champ bit de la table.

    J'aimerais avoir une fonction qui à l'appel, rempli cette table en fonction des chechBox cochés, c'est à dire si un checkBox est coché il insère 1 sinon il insère 0 dans le champ correspondant.

    Pour le nom c'est plus facile parceque le nom est dans un textBox!
    donc je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into MaTable (NomGroupe) values('"+MonTextBox+"')
    Mais pour les checkBox je vois vraiment pas!

    Merci de m'aider

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Je te dirais de tester avec la propriété "Checked" de chacune de tes CheckBox, genre si c'est vrai ça renvoie 1, si c'est faux ça renvoie 0 (mais je pense que c'est un peu trop long de tester pour chaque CheckBox...)

  3. #3
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    ouais je me disais aussi mais sinon ce que tu viens de dire heu .. d'écrire n'est pas mal
    si c'est vrai ça renvoie 1
    Esque la valeur d'un checkbox coché vaut 1?

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Bah pour tes champs bit, vrai = 1 et faux = 0, j'aurais fait une vérification pour chaque CheckBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (CheckBox.Checked)
    {
        tarequete.Parameters.AddWithValue("champbit", 1);
    }
     
    else
    {
        tarequete.Parameters.AddWithValue("champbit", 0);
    }
    Mais je suis sûr qu'il y a plus simple

  5. #5
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    De grace va doucement moi j'apprends ce langage
    je comprend pas la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tarequete.Parameters.AddWithValue("champbit", 1);
    Ma requete est un insert:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim Command14 As New SqlCommand("insert into MaTable values () ", Conn)
            Dim numberOfRows As String
    	    numberOfRows= Command14.ExecuteNonQuery ()
    Comment vais-je introduire sa dans le if?

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Ah t'utilise du Visual Basic, je croyais du C#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tarequete.Parameters.AddWithValue("champbit", 1);
    Cette ligne signifie que tu attribues un paramètre à ta requête d'insertion, tu dois juste donner le nom du champ de la table appropriée et la valeur (1 ou 0). Je ne sais pas si tu peux faire quelque chose de similaire en Visual Basic.

    Et dans ta requête, tu peux faire comme ça pour attribuer des paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Command14 As New SqlCommand("insert into MaTable values (@parametre1, @parametre2, @parametre3) ", Conn)
    Le "@" sert à attribuer un paramètre dans une requête, maintenant je te redis : je sais pas si on peut faire la même chose avec VB

  7. #7
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Je ne comprends toujours rien !!
    Mais sa ca va aller du moins je l'espère
    Je demandais tout à l'heure comment je pouvais remplacer le mot tarequete dans le code par mon code d'insertion?

    Bon maintenant je crois que c'est plus la peine j'ai eu une piste:
    Voila ce que t'as dis ... disons écris tout à l'heure sur la valeur de Checked, eh ben il a pour valeur True si c'est coché et False sinon.

    Aussi sql server 2005 accepte que l'on insert ces strings dans un champ du type bit, et il convertie je sais pas comment (mais heureusement pour moi) les true en 1 et les falses en 0 maintenant je fais d'autres testes et je t'informes.

    Merci encore et gardons le contact s'il te plait!

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Pas de problème pour le contact

    Sinon déjà, on utilise pas le même langage mais on utilise SqlServer. Pour n'importe quelle requête, j'utilise toujours des paramètres, c'est ce que je t'ai dit au-dessus

    Et si j'ai bien compris, la plupart de tes champs sont de type bit, donc tu peux remplacer chacune de leur valeur par 0 ou 1

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    vous risquez pas de vous comprendre si vous parler un langage différent lol

    C# c'est pas vb.net

    en plus vu que tu écrivait en C# moi j'aurais écrit quelque chose de beaucoup plus simple et moins encombrant et guère plus difficile à lire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tarequete.Parameters.AddWithValue("champbit", (checkBox.Checked) ? 1 : 0);
    pourquoi écrire 15 lignes de code quand une seule suffit et qu'elle n'est guère plus illisible... bon après c'est vrai c'est une question d'habitude, mais vu la pléthore de constructions syntaxiques disponible pour facilité la fainéantise, autant les exploiter.

    en vb.net malheureusement cette expression condensée n'existe pas

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Ah c'est pas mal ça cinemania, je connaissais pas, si je me trompe ça fait un genre de "si-alors-sinon" pour la valeur du paramètre ?

  11. #11
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Ok ok on se calme moi j'utilise vb.net toi c# je l'ai bien compris
    Voici mon code qui me permet d'afficher mes checkbox après que l'utilisateur ait pu rentrer le nom du groupe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Dim tableau as String()
     
    sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
     
    if NomGroupe.Text=""
     lbel1.Text="Veuillez d'abord entrer un nom pour le groupe utilisateur! "
      Panel1.Visible = False
       btn1.Visible =  False
     btn2.Visible = False
     else
     
     lbel1.Text="Veuillez cocher les droits nécessaire au groupe "+ NomGroupe.Text 
     Panel1.Visible = True
     
    tableau = new String (6) {"Voir ","Recuperer ","Emprunter","Donner","Payer","Marcher","vider"} 
     
    Dim i As Integer
            For i = 0 To 6
    		Dim t As New CheckBox()
            t.Text =tableau(i.ToString())
            t.ID = "CheckBox" & i.ToString()
            Panel1.Controls.Add(t)
            Panel1.Controls.Add(New LiteralControl("<br>"))
     
                Next i
    			end if
     
    		 end sub
    Dans tableau on a des droits que l'utilisateur en cochant rajoute au groupe. Comme je disais tout à l'heure sqlserver accepte que je rentre true ou false pour les booléens chose qui m'arrange puisque un checkbox checked vaut true sinon false donc plus besoin de convertir

    Mon problème maintenant est que: les checkbox sont dans la fonction load donc en local or j'aimerais écrire une nouvelle fonction qui me permettra de recuperer l'état de ces checkbox après que l'utilisateur ait rempli et les insérer dans ma base mais dans ma fonction on me dit que mes checkbox ne sont pas déclarés et c'est normal mais comment y remédier

    Merci

  12. #12
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Merci à tous ce qui de près ou de loin m'ont aidé, sinon en attendant une meilleur réponse j'ai mis mes checkbox dans le code aspx au moins de cette façon ils sont globale et lors de l'insertion sa passe

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Juju54350 oui c'est une construction légèrement empruntée à C

    SonnyFab VB a également des constructions ou des raccourcis qui n'existe pas en C#, car VB a un vécu de langage bordélique, alors que C# a toujours été un langage structuré.

    Par exemple la construction

    With var
    .prop1 = 1
    .prop2 = "blabla"
    ...
    End With

    qui n'existe pas en C# ou encore certaines conversions de types "à la sauvage" qu'on ne peut même pas faire avec un CAST explicite en C# et qui nécessite quelques lignes d'écriture...

  14. #14
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Je pars un peu en HS mais cette construction est-elle valable également pour des RadioButton ?

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

Discussions similaires

  1. Utilisation des jours à partir des dates
    Par coquero dans le forum SQL
    Réponses: 8
    Dernier message: 09/07/2008, 14h22
  2. Dessiner des graphiques à partir des données d'une BD MySQL
    Par condor_01 dans le forum Général Java
    Réponses: 6
    Dernier message: 24/04/2008, 09h35
  3. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  4. gérer des rappels à partir des dates
    Par gsaly dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2007, 17h16
  5. Créer des imagettes à partir des fichires TIF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/05/2006, 11h59

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