Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 05-09-2007 10:26:05

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

[RESOLU] Fonctions sur les filtres

Bonjour,

Je recherche l'équivalent de la fonction IN en SQL pour l'appliquer dans un de mes filtres.

Connaissez vous si elle existe? (j'ai recherché dans la lsite des fonctions proposées dans le painter de filtre mais je ne l'ai pas trouvé)

Merci de vos réponses

Dernière modification par Nephtis (06-09-2007 10:32:00)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#2 05-09-2007 11:15:20

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Fonctions sur les filtres

Bonjour, colonne IN (valeur1, valeur2) fonctionne.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 05-09-2007 11:19:27

Tonio  
Membre
Lieu: Lille
Date d'inscription: 30-07-2007
Messages: 10
Pépites: 30
Banque: 0

Re: [RESOLU] Fonctions sur les filtres

Salut!

Tu ne trouveras pas l'équivalent du IN.
Par contre je te conseille de regarder le CASE...WHEN. Cela doit répondre à ton besoin (tu peux mettre plusieurs valeurs dans un when)

Hors ligne

 

#4 05-09-2007 11:20:51

Tonio  
Membre
Lieu: Lille
Date d'inscription: 30-07-2007
Messages: 10
Pépites: 30
Banque: 0

Re: [RESOLU] Fonctions sur les filtres

oups! savais pas

Hors ligne

 

#5 06-09-2007 09:25:03

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fonctions sur les filtres

Je viens de tester dans le painter de filtre et l'expression est incorrecte.

mon expression : id_titre IN (2185)


NB : Pour l'exemple je n'ai qu'une seule valeur dans la liste de valeurs possibles mais dans l'absolu il y en aura plusieurs (de toutes façon même en mettant deux valeurs ça plante à la verification)

Dernière modification par Nephtis (06-09-2007 09:25:50)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#6 06-09-2007 09:39:30

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] Fonctions sur les filtres

ce que je fais :

Code: pb

if lds_reservation.rowcount() > 0 then
    ls_filtre = "code_position <> '"+lds_reservation.getitemstring(1,"code_position") +"'"
    if lds_reservation.rowcount() > 1 then
      for i = 2 to lds_reservation.rowcount()
        ls_filtre = ls_filtre + " and code_position <> '"+lds_reservation.getitemstring(i,"code_position")+"'"
      next
    end if
  end if


Et c'est l'equivalent d'un

Where code_position NOT IN (01,02,03 etc.....

Donc pour faire un IN, tu remplaces "<>" par "="

Dernière modification par hellkinder (06-09-2007 09:40:15)


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#7 06-09-2007 09:44:11

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Fonctions sur les filtres

le in fonctionne tres bien sur le filter de la datawindow


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#8 06-09-2007 09:55:00

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Fonctions sur les filtres

hellkinder a écrit:

ce que je fais :

Code: pb

if lds_reservation.rowcount() > 0 then
    ls_filtre = "code_position <> '"+lds_reservation.getitemstring(1,"code_position") +"'"
    if lds_reservation.rowcount() > 1 then
      for i = 2 to lds_reservation.rowcount()
        ls_filtre = ls_filtre + " and code_position <> '"+lds_reservation.getitemstring(i,"code_position")+"'"
      next
    end if
  end if


Et c'est l'equivalent d'un

Where code_position NOT IN (01,02,03 etc.....

Donc pour faire un IN, tu remplaces "<>" par "="

tu remplaces "<>" par "=" et "and" par "or"

mais en principe le IN fonctionne...


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 06-09-2007 09:56:20

hellkinder  
Kinder Surprise
Award: chocomordutk6
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 902
Pépites: 0
Banque: 10,524,230,367,490

Re: [RESOLU] Fonctions sur les filtres

eRaSorZ a écrit:

et "and" par "or"

Exact ! Heureusement que y'en a qui suivent!


http://img510.imageshack.us/img510/4229/userbar1204625572ha9.gif
"Pour la première fois dans l'histoire de l'humanité, tous les peuples de la Terre ne forment qu'un"

Hors ligne

 

#10 06-09-2007 10:05:27

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Fonctions sur les filtres

Nephtis a écrit:

Je viens de tester dans le painter de filtre et l'expression est incorrecte.

mon expression : id_titre IN (2185)


NB : Pour l'exemple je n'ai qu'une seule valeur dans la liste de valeurs possibles mais dans l'absolu il y en aura plusieurs (de toutes façon même en mettant deux valeurs ça plante à la verification)

id_titre est du type char  ? des fois ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#11 06-09-2007 10:07:19

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Fonctions sur les filtres

Nephtis a écrit:

Je viens de tester dans le painter de filtre et l'expression est incorrecte.

mon expression : id_titre IN (2185)

et id_titre IN ('2185') ?

Hors ligne

 

#12 06-09-2007 10:08:12

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fonctions sur les filtres

J'avais bien cette solution mais je sais pas pourquoi je préférais m'enteter à faire marcher le IN (il est présent dans l'aide de powerbuilder)

Mais bon faut quand même avancer dans le travail


Voilà le script pour simuler un IN:

Code: pb

//  identifiant IN (val1, val2, ...)
//  est équivalent à 
//  (identifiant = val1 OR identifiant = val2 OR ...)
//
//  Les parenthèses sont obligatoires si vous voulez combiner plusieurs expressions
//  Exemple : un_autre_champ = une_autre_valeur AND (identifiant = val1 OR identifiant = val2 OR ...)
//  Sans les parenthèses cela reviendrait à ecrire :
//  un_autre_champ = une_autre_valeur AND identifiant = val1 OR (identifiant = val2 OR ...)


// L'expression que l'on souhaite appliquer comme filtre
ls_mon_filtre = ""
// La taille du tableau qui contient les différentes valeurs que l'on veut tester
li_taille_tableau = UpperBound (la_mon_tableau)

// Si la taille de mon tableau est nulle alors on laisse l'expression à vide
If (li_taille_tableau > 0) Then
  // Mon tableau contient au moins un élément donc on peut commencer à alimenter l'expression
  // Il faut englober son expression avec des parenthèses pour ne pas avoir de conflit avec les mots
  // clefs " OR " qui constituent un IN
  ls_mon_filtre = ls_mon_filtre + " (identifiant = " + String(la_mon_tableau[1])
  // Ensuite il va falloir regarder si il y a plus d'une valeur dans le tableau
  // Si il n'y en avait qu'une alors on ne rentre pas dans la boucle for et donc on a fini
  // Si il en avait au moins deux alors il faut rajouter les autres tests en les separant par le mot clef
  // " OR "
  For li_curseur = 2 To li_taille_tableau
    ls_mon_filtre = ls_mon_filtre + " OR identifiant = " + String(la_mon_tableau[li_curseur])
  Next
  // Il ne faut pas oublier de femer la parenthèse
  ls_mon_filtre = ls_mon_filtre + ") "
End If

Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#13 06-09-2007 10:10:03

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Fonctions sur les filtres

pick ouic a écrit:

Nephtis a écrit:

Je viens de tester dans le painter de filtre et l'expression est incorrecte.

mon expression : id_titre IN (2185)


NB : Pour l'exemple je n'ai qu'une seule valeur dans la liste de valeurs possibles mais dans l'absolu il y en aura plusieurs (de toutes façon même en mettant deux valeurs ça plante à la verification)

id_titre est du type char  ? des fois ?

Non non id_titre n'est pas de type char

Que je soit pendu haut et court le champ est bien de type char

Bon je remet mon bonet d'âne

Dernière modification par Nephtis (10-09-2007 09:00:32)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22