Forum PgiBat

PgiBat, le logiciel compagnon de Batigest

Vous n'êtes pas identifié(e).

#1 2013-05-17 09:54:13

Jean-Pierre Leon
Administrateur
Inscription : 2013-03-12
Messages : 54

Faire une recherche sur l'historique du suivi de consommation chantier

La discussion intitulée Faire une recherche dans les commandes fournisseurs selon leur contenu et accessible ici a donné des idées à un utilisateur :
celui-ci voudrait faire le même genre de recherche, mais sur les saisies du suivi de consommation de chantier.

Sans vouloir faire une usine à gaz, on peut imaginer, comme pour la recherche sur les commandes, que l'on va vouloir préciser un code chantier (ou pas), des dates de début et de fin d'analyse, et préciser soit un code élément, soit un libellé, ce qui permettra d'élargir les recherches.

Nous allons donc paramétrer la boite de dialogue avec 5 variables :

  • le code élément

  • le texte que l'on recherche dans le libellé des éléments

  • le code du chantier

  • la date de début de période de recherche

  • la date de fin de période de recherche

Voici la syntaxe de cette boite de dialogue :
PARAMETERS CodeElem Text, Lib Text, Chantier Text, DateDeb DateTime, DateFin DateTime;

Et maintenant la syntaxe de la requête, qui va utiliser les variables définies ci-dessus, notez que l'on fait une jointure avec la table ElementDef (la bibliothèque) et que les saisies d'éléments "libres", ne provenant pas de cette bibliothèque, ne seront pas pris en compte.

SELECT SuiviHisto.CodeElem, ElementDef.Libelle, SuiviHisto.[Date], SuiviHisto.Qte, SuiviHisto.Prix, SuiviHisto.Note
FROM ElementDef INNER JOIN SuiviHisto ON ElementDef.Code = SuiviHisto.CodeElem
WHERE SuiviHisto.[Date] >= [DateDeb]
AND SuiviHisto.[Date] < [DateFin]
AND ElementDef.Libelle LIKE '*' & [Lib] & '*'
AND SuiviHisto.CodeElem LIKE '*' & [CodeElem] & '*'
AND SuiviHisto.CodeChantier LIKE '*' & [Chantier] & '*'

Notez que chaque variable de type Texte est précédée et suivie par le joker *. Cela signifie que la recherche va se faire de la manière la plus large. Par exemple, vous avez indiqué ABC pour le code chantier : les chantiers ABC000, 00ABC00, ou 000ABC seront sélectionnés. On aurait aussi pu gérer les dates avec l'instruction BETWEEN, la différence ici c'est que la date de fin est exclue de la sélection, donc pour sélectionner le mois de janvier en entier, les dates seront 01/01/2013 et 01/02/2013, donc inutile de se demander si la fin du mois est le 28, le 29, le 30 ou le 31.

N'oubliez pas que les 2 parties de la syntaxe sont à placer l'une à la suite de l'autre, ce qui nous donne l'ensemble ci-dessous :

PARAMETERS CodeElem Text, Lib Text, Chantier Text, DateDeb DateTime, DateFin DateTime;
SELECT SuiviHisto.CodeElem, ElementDef.Libelle, SuiviHisto.[Date], SuiviHisto.Qte, SuiviHisto.Prix, SuiviHisto.Note
FROM ElementDef INNER JOIN SuiviHisto ON ElementDef.Code = SuiviHisto.CodeElem
WHERE SuiviHisto.[Date] >= [DateDeb]
AND SuiviHisto.[Date] < [DateFin]
AND ElementDef.Libelle LIKE '*' & [Lib] & '*'
AND SuiviHisto.CodeElem LIKE '*' & [CodeElem] & '*'
AND SuiviHisto.CodeChantier LIKE '*' & [Chantier] & '*'

Il suffira de créer une nouvelle vue, par exemple dans la liste des chantiers, et de coller l'intégralité du texte ci-dessus dans la zone Sql, et de valider.

Hors ligne

Pied de page des forums

Propulsé par FluxBB 1.5.3