Se connecter avec
S'enregistrer | Connectez-vous

Visual Basic créer un filtre sur plusieurs variables ???

Dernière réponse : dans Programmation

Bonjour tous le monde je vous explique mon problème:

(Je travail sur une base de données firebird)

Donc une foi la requête SQL réalisé j'obtiens premièrement dans une liste plusieurs types (1 ou 2), et ce que je souhaite c'est pouvoir récupérer tous les types (ou le type) qui n'ont pas été sélectionner dans la requête du dessus pour pouvoir les utilisé dans la suite..


Je fait un exemple

Dans ma table TYPES, j'ai ceci : type1, type2, type3, type4, type5, type6
Requête SQL qui me renvoie ceci : type2 et type3


Je souhaite récupérer => type1, type4, type5, type6


Si vous ne comprenez pas vraiment ce que je souhaite dite moi ce que vous avez besoin de savoir pour m'aider, car je cherche depuis 2 jours et google n'est pas vraiment mon ami.

PS: pour info je suis en stage de première année de BTS et n'est jamais appris le VB, soyez pas trop pro avec les explications svp.
Lassé par la pub ? Créez un compte

Oui j'utilise le WHERE pour obtenir le résultats, j'avais pensé utilisé le NOT IN pour avoir le contraire seulement je vois pas comment le faire car je peux avoir 1 ou plusieurs types a passer en variables dans ma requête est ce possible ? Et comment ?

Si ta première requête ressemble à :
SELECT * FROM types WHERE critere = 'test'
La requête :
SELECT * FROM types WHERE critere != 'test'
Te donnera l'inverse des résultats.

L'utilisation des sous requêtes (NOT IN) n'est pas justifiée dans ton cas...
... ou alors je n'ai toujours pas compris ton problème :) 

Tu peux poster ton code SQL et ton code VB ? Ca m'aiderait à te répondre

Donc voici un exemple sur lequel je travail.
Il existe (pour l'instant) que 3 types possible (mais l'évolution est à prévoir)
' CodeCommande 'est un numéro de commande il peut avoir les 3 types
Afin de savoir ce qui a déjà été enregistré
J'ai ce code

  1. SELECT id, contrat, types FROM contrat WHERE contrat='"& CodeCommande &"'


résultat :
> commande n°1 à le type A
> commande n°1 à le type B


Donc maintenant je souhaiterai avoir un résultat qui me donne seulement le " type C " car c'est le seul qui n'a pas été enregistré pour la commande n°1.
Désoler j'ai un peut de mal à exprimer l'idée.. :sweat: 

Ah ok je commence à mieux comprendre :) 
Si je comprend bien donc ton champ "types" contient tous les types de la commande ?

Par exemple le contenu de ta table contrat peut ressembler à ceci :
ID CONTRAT TYPES
1 Commande 1 type1,type2
2 Commande 2 type3

??

Enfaite c'est bon ! Mon maître de stage m'avait pas montré la totalité de la base de données et il y avait une table TYPE donc j'ai fait une requête imbriqué et j'obtient le résultat voulu.. désolé de t'avoir fait perdre ton temps mais tu m'a mis sur la voie pour la requête contraire, merci a toi maverick911 !

Ah de rien, content que tu ait trouvé la solution :) 

J'ai cependant une petite remarque :
Si tu as en plus de tes tables "contrats" et "types", une table de jointure "types_contrats" qui contient l'association entre les PK de tes tables "contrats" et "types", tu pourras effectuer des requêtes avec jointures, ce qui est plus rapide que des requêtes imbriquées, du moins sur les grosses tables.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde