Les actions personnalisables désignent des lignes de commandes SQL saisies en base de données.
Ces actions personnalisables sont créées ou modifiées dans l'onglet administrations. Elles sont également visibles pour les utilisateurs autorisés dans l'onglet édition. Pour plus d'informations sur les états personnalisables dans l'onglet Éditions, consultez le chapitre Éditions du Guide de l'utilisateur de PMB.
Chaque procédure stockée est présentée dans une ligne du tableau. Vous pouvez les éditer en cliquant sur leur titre, ou tester leur exécution en cliquant sur le bouton exécuter présent en marge gauche.
Des paramètres personnalisés sont ajoutables : ceux-ci permettront d'obtenir une requête personnalisable directement à l'écran.
Simplifions un peu.
Admettons que je sois bibliothécaire sans connaissance en SQL et que je veuille obtenir une requête qui m'affiche le nombre d'exemplaires actuellement en cours d'emprunt par des lecteurs de plus de 65 ans.
Je demande à mon administrateur une procédure stockée. Il va créer une requête appelée "emprunts en cours / age > 65 ans" (exemple de titre). Le code de la procédure sera un simple "SELECT COUNT (*) FROM empr, prets WHERE pret.empr_id=empr_id AND (2005-empr_year>=65)"
L'administrateur m'a créé une procédure à laquelle j'accède depuis éditions. Cependant pour mes statistiques, j'ai besoin des mêmes informations mais pour des lecteurs de 30 à 65 ans et pour les moins de 30 ans. En outre, il faut que ma requête fonctionne tous les ans. En 2006 la requête exemple ne fonctionnera plus.
L'administrateur va donc créer une requête dont certains paramètres seront saisis par lui entre quatre points d'exclamation, par exemple !!annee_actuelle!!. Un de ces paramètres personnalisés pourra avoir pour titre à l'écran : Veuillez saisir l'année en cours, SVP.
Les procédures stockées sont une des fonctions avancées de PMB. Si la connaissance de MySQL est nécessaire à leur création, leur utilisation est simple en passant par l'Onglet Editions > Statistiques > Procédures. Ce haut degré de paramétrage des statistiques est rarement proposé directement à l'utilisateur dans les logiciels propriétaires.
Pour connaître le nom des champs à utiliser dans vos requêtes, consultez la documentation du noyau de PMB qui décrit l'ensemble des tables de la base, leurs différents champs et pour ces champs leurs attributs :
pmb/doc/noyau
select idcode, codestat_libelle, count(*) as Nombre from exemplaires, docs_codestat, docs_statut where idcode=expl_codestat and expl_section in (!!section!!) and expl_statut='!!statut!!' group by idcode, codestat_libelle order by idcode
Il ne reste plus qu'à renseigner vos paramètres !!statut!! et !!section!! en passant par "configurer les paramètres" de la requète.
J'ai créé un champ Annee_achat de type texte dans les champs personnalisables de Exemplaires. Je voudrais m'en servir pour les statistiques, mais je ne retrouve pas ce champ dans les tables ?
Voici la requête que j'ai réalisé pour avoir le nombre d'exemplaires par code statistique :
select idcode, codestat_libelle, count(*) as Nombre from exemplaires, docs_codestat where idcode=expl_codestat group by idcode, codestat_libelle order by idcode
Que dois je modifier pour ne faire apparaître à l'issue de la requête que les exemplaires achetés dans l'année N ?
Les champs personnalisés n'apparaissent pas en tant que champ dans la base mais sont 'encodés' dans différentes tables.
S'agissant d'un champ d'exemplaire, vous allez devoir ajouter à votre requête dans le FROM : expl_custom_values, expl_custom et préciser les jointures et la condition, le filtre, dans la clause WHERE :
expl_custom_small_text='!!param_annee_achat!!'
EXPLICATION: filtre : création d'un paramètre à la requête, il faut ensuite passer en "Configurer les paramètres" pour dire que c'est un paramètre et définir des options de saisie
texte and name='Annee_achat'
EXPLICATION: le nom de votre champ personnalisé
and expl_id=expl_custom_origine
EXPLICATION: jointure entre la table exemplaires et la table contenant les données personnalisées de vos exemplaires
and expl_custom_champ=idchamp
EXPLICATION: la jointure entre la table contenant les noms des champs et la table contenant les valeurs.
ce qui donne au final donc:
select idcode, codestat_libelle, count(*) as Nombre from exemplaires, expl_custom_values, expl_custom, docs_codestat where idcode=expl_codestat and expl_custom_small_text= '!!param_annee_achat!!' and name='Annee_achat' and expl_id=expl_custom_origine and expl_custom_champ=idchamp group by idcode, codestat_libelle order by idcode
ATTENTION : les requêtes ne contiennent pas de saut de ligne.
Le wiki des utilisateurs de PMB est un site collaboratif où les utilisateurs peuvent écrire librement leurs conseils pour d'autres utilisateurs.
N'hésitez pas à le consulter http://www.sigb.net/wiki
Vous pouvez également adresser vos questions à la liste des utilisateurs de PMB, consultez http://www.sigb.net/communaute