À l'inverse, l'opérateur INTERSECT permet d'afficher les valeurs communes aux deux tables.
Par exemple pour les tables 1 et 2 : L'instruction SQL (SQL direct)
Code : Tout sélectionner
SELECT "NomArticle", "PU" FROM "Table1"
EXCEPT
SELECT "NomArticle", "PU" FROM "Table2"
Code : Tout sélectionner
SELECT "NomArticle", "PU" FROM "Table1"
INTERSECT
SELECT "NomArticle", "PU" FROM "Table2"
Chaque SELECT est une instruction SELECT à part entière et permet donc d'utiliser plusieurs tables ; les liaisons ; les opérateurs ; les clauses WHERE, etc.
Un exemple d'utilisation :
Le but est, dans une liste de choix, de ne proposer à l'utilisateur que les articles ne figurant pas déjà dans la facture en cours.
Les tables de la base exemple. Le formulaire de saisies des factures. Utilisation :
- Renseigner les données de la facture, la date par défaut est la date courante.
- Sélectionner l'article à ajouter à la facture, la sélection se fait soit par nom d'article soit par référence (code) d'article.
- Cliquer sur le bouton Ajouter un article, l'article est ajouté dans le détail de la facture.
- Renseigner la quantité, la valeur par défaut est 1.
- Pour continuer à remplir le sous-formulaire, cliquer sur le bouton Article suivant.
- Une fois les article ajoutés, cliquer sur le bouton Afficher le total.
Code : Tout sélectionner
Sub FiltreArticles(oEv as Object)
Dim oForm as Object
Dim strSQL as String
oForm = oEv.Source.Model.Parent
Select Case oEv.Source.Model.Name
Case "lstIdArticle"
strSQL = "SELECT ""Article"", ""IdArticle"" FROM ""tArticles"" " & _
" EXCEPT " & _
"SELECT ""tArticles"".""Article"", ""tVendus"".""refArticle"" FROM ""tVendus"", ""tArticles""" & _
" WHERE ""tVendus"".""refArticle"" = ""tArticles"".""IdArticle"" AND ""refFacture"" = " & oForm.Columns.getByName("refFacture").Value
Case "lstrefArticle"
strSQL = "SELECT ""Reference"", ""IdArticle"" FROM ""tArticles"" " & _
" EXCEPT " & _
"SELECT ""tArticles"".""Reference"", ""tVendus"".""refArticle"" FROM ""tVendus"", ""tArticles""" & _
" WHERE ""tVendus"".""refArticle"" = ""tArticles"".""IdArticle"" AND ""refFacture"" = " & oForm.Columns.getByName("refFacture").Value
End Select
oEv.Source.Model.listSource = Array(strSQL)
oEv.Source.Model.Refresh
End Sub