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

Windows Forms Discussion :

[VB.NET] Difficulté de construction... fonction IIF


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut [VB.NET] Difficulté de construction... fonction IIF
    bonjour

    jai cette ligne de commande qui affiche dans un datagrid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonAdapteurCol.SelectCommand.Parameters.Add("@statut_id", IIf(cbx_statut.SelectedValue = "0" Or cbx_statut.SelectedValue = "7", "%", cbx_statut.SelectedValue))
    elle marche parfaitement. jaimerais rajouter une clause sur la meme ligne etant que si la valeur choisie est egale a "6" alors de prendre les valeur "1","2","3"..


    jai essayé de cette facon ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonAdapteurCol.SelectCommand.Parameters.Add("@statut_id", IIf(cbx_statut.SelectedValue = "0" Or cbx_statut.SelectedValue = "7", "%", IIf(cbx_statut.SelectedValue = "6", cbx_statut.SelectedValue="1" & cbx_statut.SelectedValue = "2" & cbx_statut.SelectedValue = "3", cbx_statut.SelectedValue)))
    mais cette facon de maffiche rien a lecran

    jai essayé de mettre des "+" et des "and" au lieu des "&" mais sans succes...
    jai essayé de remplacer les .value & .value par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cbx_statut.SelectedValue < "4"
    ...et ne fonctionne pas encore...

    jai essayé aussi de mettre mon IIF apres toute la clause mais une erreur survien a propos du format de la chaine incorrect


    merci de bien vouloir m'aider!!


  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut
    bonjour

    peut-être avez vous juste une autre solution...

    jai essayer celle ci qui ne fonctionne pas encore mais qui utilise les
    ....if then else


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If Not (cbx_statut.SelectedValue = "0" Or cbx_statut.SelectedValue = "7") Then
                If cbx_statut.SelectedValue = "6" Then
                    MonAdapteurCol.SelectCommand.Parameters.Add("@statut_id", "%" & cbx_statut.SelectedValue < "4")
                Else
                    MonAdapteurCol.SelectCommand.Parameters.Add("@statut_id", cbx_statut.SelectedValue)
                End If
            Else
                MonAdapteurCol.SelectCommand.Parameters.Add("@statut_id", "%")
            End If
    étrangement les valeur = 1 m'aparaissent....héhé

    cest pas cela que je veux exactement...

    merci

  3. #3
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    Pourquoi ne pas utiliser un Select Case ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Select Number   ' Evaluate Number.
    Case 1 To 5   ' Number between 1 and 5, inclusive.
       Debug.WriteLine("Between 1 and 5")
    ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8   ' Number between 6 and 8.
       Debug.WriteLine("Between 6 and 8")
    Case 9 To 10   ' Number is 9 or 10.
    Debug.WriteLine("Greater than 8")
    Case Else   ' Other values.
       Debug.WriteLine("Not between 1 and 10")
    End Select
    Note en passant: il faut absolument eviter IIF car l'expression VRAIE et l'expression FAUX sont evaluees toutes les deux quelque soit le resultat de l'expression

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Piotrek
    Note en passant: il faut absolument eviter IIF car l'expression VRAIE et l'expression FAUX sont evaluees toutes les deux quelque soit le resultat de l'expression
    Dans le même genre et pour les mêmes raison, il faut absolument éviter Or et And, mais utiliser OrElse et AndAlso. Évidemment, le fait que ces instructions aient des noms risibles et surrchiants à taper n'aide pas :)

    PS: rapport au post initial, j'ai du mal à comprendre la partie 'si la valeur choisie est egale a "6" alors de prendre les valeur "1","2","3".. '

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut ....évidemment!
    merci a tous mais jai quand meme resolu le probleme en construisant ma requete sql dapres les valeurs que jai...

    un genre de code comme ceci pour ceux qui sont intrigué de la facon dont jai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If cbx_statut.SelectedValue = "6" Then
                selection = selection & " AND statut_id < 4"
            Else
                If (cbx_statut.SelectedValue > "0" And cbx_statut.SelectedValue < "7") Then
                    selection = selection & " AND statut_id = @statut_id"
                End If
            End If
    pour toi maniak quand je disais ....

    si la valeur choisie est egale a "6" alors de prendre les valeur "1","2","3".. '
    cest car jai un combobox.selectedvalue qui quand est égal à 6 affiche les selectedvalue 1-2-3....cest un genre de sous ensemble..lol

    pour piotrek....

    Note en passant: il faut absolument eviter IIF car l'expression VRAIE et l'expression FAUX sont evaluees toutes les deux quelque soit le resultat de l'expression
    cest justement ce que je desirais car c'est un module de recherche...quand mes combo ne sont pas selectionné...alors il maffiche toute les valeurs


    merci pour tout!

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

Discussions similaires

  1. Fonction IIF sous Oracle
    Par noirot dans le forum Oracle
    Réponses: 8
    Dernier message: 27/04/2009, 17h13
  2. [vb.net] probleme de construction de chaine dynamiquement
    Par graphicsxp dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/01/2006, 14h52
  3. [VB.Net] Comment implémenter une fonction BitWise ?
    Par graphicsxp dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/04/2005, 15h52
  4. [VB.NET] Eclaircissement sur la fonction IsDBNull
    Par shinchan dans le forum Windows Forms
    Réponses: 9
    Dernier message: 04/01/2005, 09h59
  5. Fonction IIF
    Par ParisMath dans le forum SQL
    Réponses: 2
    Dernier message: 16/01/2004, 22h18

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