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

VB 6 et antérieur Discussion :

select case avec if


Sujet :

VB 6 et antérieur

  1. #21
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour iclic, ne le prend pas mal, mais je me permet quelques remarques afin que Kitty ne soit pas perdue.

    Citation Envoyé par iclic Voir le message
    ...
    Je ne connais pas ta bd mais ce qui ne me semble pas logique c'est:
    " WHERE FILMS_TITRE LIKE '" et puis ", GENRES" c'est la virgule???
    C'est à toi à vérifier
    ...
    Citation Envoyé par iclic Voir le message
    Bonjour,

    De plus n'oublie pas ce que disait ProgElet un peu plus haut.
    Je te le rappelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    '**************************************************
                    sql = sql + " FROM FILMS , GENRES" '<=======  a mon avis ,(virgule) et GENRES sont en trop
    '**************************************************
    A+

    Citation Envoyé par *kitty* Voir le message
    Oui, mais en faite j'ai une table film, une table genre et je croise les données.
    ...
    Citation Envoyé par ProgElecT Voir le message
    J'ai donc mal lu ton premier post
    ...




    Attention iclic, dans ton code les lignes de code suivant le else sont fausse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Else   'else sur la première condition
    ' ... des lignes de code fausses
    la concaténation de ce que tu indiques donne ceci

    WHERE FILMS_TITRE LIKE 'a%', GENRES where FILMS_GENRE = GENRE_code AND GENRE_LIBELLE =''

    1) ", GENRES" est mal placé,
    2) tu as 2 clauses "Where"
    3) "GenreFilm" est une variable ne contenant rien

    Ceci risque d'emméler Kitty



    Je place le order by à la fin parceque la clause de tri doit être positionnée en dernier.

    Regarde le résultat de mes requettes, tu verras qu'elles sont construite correctement, j'ai testé le code de la construction sous VB et copié le résultat.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  2. #22
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    re, bon voilà je suis un peu perdue mais j'essaye de comprendre je m'accroche alors voilà j'ai testé avec la solution de iclic cela ne fonctionne toujours pas comme je voudrais toujours le même problème avec la virgule

    Le message d'erreur est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [MICROSOFT] [PILOTE ODBC MICROSOFT ACCESS] Erreur de syntaxe (virgule) dans 
    l'expression 'FILMS_TITRE LIKE 'B%',GENRES WHERE FILMS_GENRE = GENRE_CODE AND GENRE_LIBELLE = 'ACTION''

    Voilà le code que j'ai commenté

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub grille()
    ' debut
    
         ' corps de la grille film
         
          'maj de la flexgrid
           MSF_Film.Clear
           entete_grille       
           
         'déclaration de la variable qui permettre d'afficher le ou les films recherché(s)
          Dim sql As String
          Dim sql1 As String 'une 2e variable chaine
             
         'début de la requête pour effectuer la recherche
        
          sql1 = "SELECT FILMS_NUM, FILMS_TITRE, FILMS_ACTEUR," & _
                "FILMS_DUREE, FILMS_SORTIEANNEE, FILMS_FORMAT," & _
                "FILMS_GENRE, FILMS_REALISATEURS FROM FILMS"
               
         If Lst_GenreFilm = "TOUS" Or Lst_DebutLettre = "TOUS" Then
                sql = sql1 + " ORDER BY FILMS_TITRE"
                 
     
                If Lst_DebutLettre <> "TOUS" Then  'Tous=genre et une lettre
                    'alors on affiche le résultat correspondant à la lettre choisie
                    sql = sql1 + " WHERE FILMS_TITRE LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"
                    
                End If
                If Lst_GenreFilm <> "TOUS" Then 'Tous=lettres et 1 genre
                          sql = sql1 & ", GENRES" 'vérifie pourquoi cette virgule devant GENRES
                          
                          ' J 'AI VERIFIE LA VIRGULE NECESSAIRE CAR C'EST FROM FILMS, GENRES SI ON L'ENLEVE CELA
                          'FERAIT FILMSGENRES DONC PAS BON
                          
                          sql = sql & " where FILMS_GENRE =  GENRE_CODE"
                          sql = sql & " AND GENRE_LIBELLE ='" & Lst_GenreFilm & "'"
         
                End If
                 Else   'else sur la première condition
                 '1 genre et une lettre
                 sql = sql1 + " WHERE FILMS_TITRE LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"
                 sql = sql + ", GENRES" 'vérifie pourquoi cette virgule
                 'VERIFICATION DE LA VIRGULE PAREIL QUE PRECEDEMMENT             
        
                 sql = sql + " where FILMS_GENRE = GENRE_code"
                 
                 sql = sql + " AND GENRE_LIBELLE ='" & Lst_GenreFilm & "'"
                                   
         End If
          
    Debug.Print sql ' affiche le résultat dans la fenêtre "Exécution" de l'EDI
     
    MsgBox sql ' boite de dialogue appli

    Par contre, je vais retesté à présent la solution proposé par rv26t, cela fonctionnait presque comme je voulais je rééditerais tout à l'heure
    Merci encore de votre aide
    P.S. C'est dur n'empêche de programmer


    ================================================

  3. #23
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Si c'est les 2 (lettre et genre) il suffit de compléter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      If Lst_GenreFilm.Text <> "TOUS" And Lst_DebutLettre.Text <> "TOUS" Then
         ' les 2 cas nous ne faisons rien --- maintenant si ----- supprimer la ligne
         ' (tu pourrais cumuler le choix des 2 dans la requette)
     
    'debut modif
          sql = sql & ", GENRES "     ' 2éme table
          sql = sql & " where FILMS_GENRE =  GENRE_CODE "     ' lien table
          sql = sql & " AND GENRE_LIBELLE ='" & Lst_GenreFilm.Text & "' "     'choix par genre
          sql = sql & " AND FILMS_TITRE LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"      ' choix par lettre
    ' fin modif
     
      Else
        ' ...
    [EDIT]Je parle de compléter mon code que je t'ai donné auparavant.[FIN EDIT]

    Courage tu y es presque

    A+, Hervé
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #24
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    merci rv26t. J'allais réédité mon message quand j'ai vu le tien.

    Un grand merci car ta modif marche super et c'est ce que je voulais.

    Sinon, j'avais écris ceci :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub grille()
    ' debut
    
         ' corps de la grille film
         
          'maj de la flexgrid
           MSF_Film.Clear
           entete_grille
           
           
         'déclaration de la variable qui permet d'afficher le ou les films recherché(s)
          Dim sql As String
            
          'début de la requête pour effectuer la recherche ==> permet d'éviter la réécritue complète de la requête pour la suite
          sql = "SELECT FILMS_NUM, FILMS_TITRE, FILMS_ACTEUR, FILMS_DUREE, FILMS_SORTIEANNEE, FILMS_FORMAT, FILMS_GENRE, FILMS_REALISATEURS FROM FILMS"
          
        ' si l'utilisateur choisi dans les 2 listebox
          If Lst_GenreFilm.Text <> "TOUS" And Lst_DebutLettre.Text <> "TOUS" Then
            sql = sql & " WHERE FILMS_TITRE LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"
            sql = sql & " AND GENRE_LIBELLE ='" & Lst_GenreFilm.Text & "'"        
          Else
             'si le choix du titre du film est différent du mot "Tous"
             If Lst_DebutLettre.Text <> "TOUS" Then
               'alors on affiche le résultat correspondant à la lettre choisie
               sql = sql & " WHERE FILMS_TITRE LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"
            End If
             
             'si le choix du genre est différent du mot TOUS
             If Lst_GenreFilm.Text <> "TOUS" Then
               sql = sql & ",GENRES"
               sql = sql & " WHERE FILMS_GENRE = GENRE_CODE"
               sql = sql & " AND GENRE_LIBELLE ='" & Lst_GenreFilm.Text & "'"
             End If
          End If
          
          ' trie sur le titre (même si on choisi par genre)
          sql = sql & " ORDER BY FILMS_TITRE"
         
        Debug.Print sql ' affiche le résultat dans la fenêtre "Exécution" de l'EDI
         
        MsgBox sql ' boite de dialogue appli
    J'ai regardé ce que tu as écris et cela me rassure car j'étais sur le bon chemin c'est cool ya un petit progrès

    Donc, cela ne faisait pas grand alors j'ai voulu modifier la requête principal (sql déclarée en premier) pour me permettre d'afficher le genre et la lettre choisie. Pour cela j'avais modifié dans le 3ème if,celui qui concerne le lst_genrefilm mais quand je pouvais afficher un élément de la liste genre l'autre listbox ne fonctionnait pas.

    En tout cas un grand merci. Je suis pas très douée alors merci de votre patience. De plus, comment je pourrais apprendre à coder proprement ? J'ai lu les tutoriels sur le site mais quelque fois les termes, du moins le choix des variables et tout m'embrouille un peu.

  5. #25
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par *kitty* Voir le message
    merci rv26t. J'allais réédité mon message quand j'ai vu le tien.

    Un grand merci car ta modif marche super et c'est ce que je voulais.
    ...


    Une chance ma boule de cristal fonctionnait


    Enchanté d'avoir pu t'aider un peu.


    Citation Envoyé par *kitty* Voir le message
    ...
    De plus, comment je pourrais apprendre à coder proprement ? J'ai lu les tutoriels sur le site mais quelque fois les termes, du moins le choix des variables et tout m'embrouille un peu.
    Les tutoriels sont effectivement là pour t'aider.
    Essaye de voir les normes de programmation.

    Tu peux poser des questions sur ce qui t'embête.

    [EDIT]
    Voir aussi les conventions de nommage de la doc VB.
    Recherche sur le forum.
    Sinon ouvre un nouveau sujet avec cette question si tu ne trouve rien.
    [FIN EDIT]

    Il faut aussi bien réfléchir à ce que tu veux faire (analyser) sur papier avant de te lancer à programmer.

    Bonne continuation dans la programmation, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2013] Select case avec checkbox
    Par GuillaumeNcy dans le forum Excel
    Réponses: 8
    Dernier message: 15/06/2015, 16h15
  2. Comment eviter de faire un Select Case avec beaucoup de valeur
    Par jam92400 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 05/11/2010, 15h19
  3. Select Case avec plusieurs variables
    Par sphynxounet dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/08/2009, 18h16
  4. Select case avec then qui retourne une variable
    Par dinette dans le forum SQL
    Réponses: 6
    Dernier message: 06/07/2009, 11h03
  5. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28

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