[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pmb.user] Re: Différences et liens entre les requêtes dans les paniers et les états personnalisables




Bonjour,

J'ai un petit problème avec le changement de statut, mais j'ai
peut-être mal compris.

Je m'explique : il est posssible dans une requête de type "Actions
Personnalisables" de tester directement l'appartenance à un ou
plusieurs paniers. Dans ce cas je ne comprends plus très bien l'intérêt
à passer par un changement de statut. Mais je répète, j'ai peut-être
mal compris.

Je vais attendre une réponse avant de donner un exemple de test direct
de panier dans une requête action personnalisable.
-- 
Alain

>-----Message d'origine-----
>De : pmb.user_owner@pizz.net [mailto:pmb.user_owner@pizz.net] 
>De la part de Anne-Marie Cubat-Vandeputte
>Envoyé : mardi 4 avril 2006 17:59
>À : PMB Mailing List
>Objet : [pmb.user] Différences et liens entre les requêtes 
>dans les paniers et les états personnalisables
>
>
>Bonjour à tous,
>
>
>Voici la copie d'un texte que je vais mettre sous peu sur le 
>Wiki J'essaie de faire une petite synthèse, et d'expliquer les 
>différences entre les requêtes (paniers) et les états 
>personnalisables, et la manière de relier les deux.
>     Tout est relatif quand on se relit  !! 
>Je réalise que le terme "petite" synthèse est peu adéquat, vu 
>la longueur de mon texte      ;-)   ;-) 
>
>
>Bonne journée à tous
>(Une chouette balade aujourd'hui. Le soleil brille à Bruxelles !)
>
>
>Anne-Marie Cubat
>
>Ecole N.-D. de la Sagesse
>Avenue Van Overbeke, 10
>B-1083 Bruxelles
>Belgique
>
>
>
>Différences et liens entre les requêtes dans les paniers et 
>les états personnalisables
>
>
>1) Notions de base sur les paniers, les contenus et les 
>procédures qui s'y appliquent
>
>a) Il y a différents types de paniers (en fonction du 
>contenu), on le constate entre autres dans les requêtes de 
>sélection Ces requêtes commencent par une des 3 manières suivantes :
> - panier d'exemplaires :    select expl_id as object_id, 
>'EXPL' as  object_type from exemplaires
> - panier de notices      :    select notice_id as object_id, 
>'NOTI' as object_type from notices
> - panier de bulletins    :     select bulletin_id as 
>object_id, 'BULL' as object_type from bulletins (bulletins de 
>périodiques)
>Le type de contenu détermine ce qu'on peut faire (ou non) avec 
>les éléments contenus dans le panier.
>
>
>b) La notion de panier est géniale car elle permet d'agir 
>globalement sur un ensemble de notices, exemplaires ou bulletins.
>
>Dans un premier stade, on place par exemple des exemplaires 
>dans un panier, il y a donc une procédure de sélection (par la 
>douchette ou par exécution d'une requête sql).
>
>Dans un deuxième stade, on peut agir globalement sur tous ces 
>exemplaires. Certaines actions sont proposées par PMB : 
>     éditer, transférer d'un panier à l'autre, vider le 
>panier, exporter, supprimer de la base de données.
>D'autres actions (ou requêtes) peuvent être rédigées et 
>paramétrées par l'utilisateur, et vous trouvez sur le Wiki 
>quelques exemples de requêtes applicables à un panier : 
>     changer les exemplaires ou les notices de statut, de 
>section, d'indexation, de cote de rangement, etc.
>
>Par l'exécution d'une seule requête d'action, on modifie donc 
>un champ dans une série de notices ou d'exemplaires, il s'agit 
>donc d'une mise à jour irréversible de la base de données. 
>Pas irréversible à 100% puisqu'on pourrait essayer de refaire 
>la manoeuvre en sens inverse, mais dès que vous lancez 
>l'exécution, le processus est lancé, et les champs concernés 
>seront modifiés. 
>Prudence donc.
>
>.
>c) Par conséquent, les procédures applicables aux paniers sont 
>de 2 types :
> - requêtes de sélection : on choisit les notices ou 
>exemplaires à ajouter dans le panier en fonction de tel ou tel 
>critère (condition à vérifier)
> - requêtes d'action : on agit globalement afin de modifier un 
>champ dans une table, il s'agit donc d'une mise à jour 
>(update) d'une partie de la base de données
>Attention dans le cas des requêtes de sélection! 
> On ne remplace pas le contenu du panier, on ajoute "à ce qui 
>s'y trouve déjà" - donc il faut souvent commencer par vider le 
>panier avant d'y mettre de nouveaux éléments.
>
>
>Exemple de requête de sélection d'exemplaires : on veut 
>sélectionner tout le rayon littérature
> donc tous les exemplaires dont la cote de rangement est >=800 
>et <=890 (dans l'hypothèse d'une indexation Dewey)
>
>Code sql (attention si vous faites un copier-coller - effacer 
>les ENTER dans ce code, sinon il ne fonctionne pas) 
>select expl_id as object_id, 'EXPL' as object_type from 
>exemplaires where left(expl_cote,3) >= '!!param1!!' and 
>left(expl_cote,3) <= '!!param2!!'
>Explications
> - on sélectionne les exemplaires : select expl_id as object_id
> - 'EXPL' as object_type
> - à partir de la table exemplaires : from exemplaires
> - à condition que la cote de rangement soit >=800 et <=890 : 
>where left(expl_cote,3) >= '!!param1!!' and left(expl_cote,3) 
><= '!!param2!!'
>  '!!param1!!' et '!!param2!!' symbolisent deux valeurs 
>introduites au clavier
>
>
>Exemple de requête d'action sur des exemplaires : on veut 
>changer le statut de certains exemplaires (voir sur le Wiki 
>d'autres requêtes de changement)
>
>Code sql (attention si vous faites un copier-coller - effacer 
>les ENTER dans ce code, sinon il ne fonctionne pas)
>update exemplaires set expl_statut=!!nouveau_type!! where 
>expl_id in (CADDIE(EXPL))
>Explications
> - on met à jour (update) la table exemplaires
> - on change (set) le contenu du champ expl_statut
> - en fonction du choix introduit au clavier par l'utilisateur 
>(!!nouveau_type!!)
> - et ceci pour tous les exemplaires contenus dans ce panier 
>  la condition est donc where expl_id in (CADDIE(EXPL))
>  la requête doit être exécutée si - et seulement si - "id" 
>(la clef primaire d'identification) a été sélectionnée dans le panier.
>
>La requête d'action se termine toujours par une des 3 conditions
> where expl_id in (CADDIE(EXPL))      :  panier d'exemplaires
> where notice_id in (CADDIE(NOTI))   :  panier de notices
> where bulletin_id in (CADDIE(BULL)) :  panier de bulletins
>
>Vous verrez plus loin l'utilité primordiale de cette requête 
>de changement de statut (voir point n° 3).
>
>
>d) Mode opératoire des requêtes
>
>Avant de pouvoir exécuter une requête sur un panier (qu'elle 
>soit d'action ou de sélection), il faut d'abord sélectionner 
>le panier; ensuite la liste des requêtes possibles (action - 
>sélection) s'affichera.
>
>N.B. La liste des requêtes affichées peut vous sembler de 
>prime abord incomplète, mais PMB ne montre pas toutes les 
>procédures d'action qui ont été créées.
>PMB ne vous propose que les requêtes qui pourraient 
>s'appliquer au type de panier choisi.(en fonction de son 
>contenu : notices, exemplaires ou bulletins).
>
>
>
>2) Les états (ou actions) personnalisables (administration - éditions)
>
>a) But général
>Ces états personnalisables permettent par exemple
> - d'extraire les données nécessaires pour imprimer des 
>étiquettes, des listes de livres, des listes de lecteurs, etc.
> - de faire des comptages, des statistiques (lecteurs par âge, 
>exemplaires par statut, par section ....)
>en explorant au départ toute la base de données, mais en ne 
>retenant que les exemplaires qui répondent à telle ou telle 
>condition et en faisant des liens entre différentes tables
>
>
>b) Schéma de base et exemples (impression et tri)
>
>Le schéma général (très simplifié !) est le suivant
> - select : liste de champs
> - from : liste de tables
> - where : liste de conditions
> - group by : comment regrouper et éviter les doublons
> - order by : dans quel ordre trier et afficher les résultats
>
>
>Deux exemples de requêtes d'impression d'étiquettes de 
>rangement - voir détails sur le Wiki (étiquettes et inventaire 
>- 2e et 3e parties)
>
>Requête d'impression d'étiquettes de rangement - pour les 
>exemplaires dont le code-barres est >= ... et <= ...
>
>Code sql (attention si vous faites un copier-coller - effacer 
>les ENTER dans ce code, sinon il ne fonctionne pas) 
>select left(expl_cote,3), substring(expl_cote from 5 for 3), 
>substring(expl_cote from 9 for 3), tit1, expl_cb from 
>exemplaires, notices where expl_cb >='!!param1!!' and expl_cb 
><='!!param2!!' and expl_notice=notice_id order by expl_cb 
>
>C'est la procédure que j'emploie lorsque je viens d'encoder 
>une série de livres. Il me suffit de dire que je veux des 
>étiquettes pour les exemplaires dont le code-barres est >= ... 
>et <= ..., 
>et j'obtiens les données nécessaires pour les étiquettes des 
>30 derniers exemplaires encodés (par exemple).
>
>Variante de cette requête d'impression d'étiquettes - pour les 
>exemplaires dont le statut est ..
>select left(expl_cote,3), substring(expl_cote from 5 for 3), 
>substring(expl_cote from 9 for 3), tit1, expl_cb from 
>exemplaires, notices where expl_statut=!!param1!! and 
>expl_notice=notice_id order by expl_cb
>
>J'explique un peu plus loin l'utilité de cette variante (choix 
>sur base du statut) - voir point n° 3 b - 3c.
>
>
>Exemple d'une requête de statistiques - comptage des 
>exemplaires par prêteur, section et statut
>select lender_libelle as Prêteur, section_libelle as Section, 
>statut_libelle as Statut, count(*) as Nombre from exemplaires, 
>lenders, docs_section, docs_statut where expl_owner=idlender 
>and idsection=expl_section and expl_statut=idstatut group by 
>idlender, idsection, idstatut order by lender_libelle, 
>section_libelle, statut_libelle
>
>
>
>c) Différence entre mode "administration" et en mode "éditions".
>
>Les mêmes requêtes apparaissent dans les deux onglets - à 
>condition d'avoir accordé les autorisations aux autres 
>personnes que admin (bib, cat, circ ..)
>(N'oubliez pas, lorsque vous créez l'état personnalisable, de 
>cocher les cases requises en-dessous de la requête afin 
>d'accorder les "autorisations" nécessaires).
>
>Les états personnalisables peuvent donc être exécutés en mode 
>"administration" ou en mode "éditions".
>L'onglet administration est pratique pour tester la procédure, 
>mais vu qu'en général on souhaite imprimer le résultat des 
>requêtes, il est plus judicieux de les exécuter dans l'onglet 
>"éditions". 
>Ainsi vous aurez la possibilité d'exporter ensuite le résultat 
>vers un fichier de type Excel ou vers un autre format, et 
>d'améliorer la mise en pages - dans Excel, Word ou un logiciel 
>d'impression d'étiquettes, suivant les circonstances.
>
>
>
>3) Lien entre les paniers et les états personnalisables
>
>a) Dans les actions personnalisables vues jusqu'à présent, il 
>y avait toujours une condition "objectivable"
> - compter le nombre d'exemplaires dont le statut est ... 
> - imprimer la liste des livres qui sont dans la section ...
> - imprimer les étiquettes des périodiques dont le code-barres 
>est >= .. et <...
>
>
>b) Or, dans certains cas, on veut exécuter une action 
>personnalisable pour un panier dont les éléments sont a priori 
>"disparates".
>
>Quelques exemples concrets : 
> - vous avez constaté que les étiquettes de rangement d'une 
>quinzaine de livres sont détériorées ou erronées
> - vous voulez disposer d'une liste "papier" des livres mis à 
>l'honneur ce mois-ci sur une étagère virtuelle de l'OPAC.
> - vous avez décidé de retirer certains livres des rayons et 
>de les proposer à la vente
>Vous les avez donc regroupés dans un panier (par sélection à 
>la douchette ou à la souris)
>
>Problème : ces exemplaires n'ont a priori aucun autre point 
>commun que l'absence d'étiquette correcte, le fait de figurer 
>sur une étagère virtuelle ou d'être à vendre.
>Aucun critère "objectivable" ne permet à coup sûr de les 
>identifier - si ce n'est l'appartenance au même panier.. 
>On ne pourrait pas dire "codes-barres >= ... et <=...", "cote 
>de rangement >= ... et <= ...", "section = ...", "propriétaire =
....."
>
>Que faire dans ce cas?
>Ces livres sont regroupés dans un panier, mais les requêtes 
>d'action dans les paniers ne permettent pas d'imprimer une 
>liste ou d'obtenir des statistiques.
>Et comble de malchance, les actions personnalisables (onglets 
>"administration et éditions" ) semblent n'avoir aucun lien 
>avec les paniers !
>Rassurez-vous, il y a une solution !
>
>
>c) Comment lier paniers et états personnalisables?  Comment 
>introduire ce critère "objectivable" dans la requête? 
>
>La solution passe par un changement provisoire de statut de 
>tous les exemplaires de ce panier.
>N'employez pas un statut "normal" de PMB, créez un autre 
>"statut spécial", un statut provisoire, par exemple "à vendre 
>- sans étiquette - étagère virtuelle", etc.
>Après exécution de l'action personnalisable, il vous suffit de 
>ramener tous les exemplaires du panier à leur statut antérieur.
>
>Pourquoi un changement de statut?
>Parce que la sélection par statut est la seule manière 
>d'identifier à coup sûr des exemplaires disparates mais 
>contenus dans le même panier - et seulement ceux-là.
>Vous avez dès lors le "critère objectivable" dont je parlais - 
>vous pouvez dire "exécuter cette requête pour tous les 
>exemplaires dont le statut est ...".
>
>La requête d'impression d'étiquettes que je citais en exemple 
>ci-dessus (point 2 - b) devient donc parfaitement utilisable.
> puisque que le critère de sélection est dans ce cas "tous les 
>exemplaires dont le statut est ..."
>select left(expl_cote,3), substring(expl_cote from 5 for 3), 
>substring(expl_cote from 9 for 3), tit1, expl_cb from 
>exemplaires, notices where expl_statut=!!param1!! and 
>expl_notice=notice_id order by expl_cb
>
>Il suffit de dire : dont le statut est "sans étiquette", "à 
>vendre" ou "étagère virtuelle", et vous obtiendrez la liste ou 
>les étiquettes désirées.
>
>Il est donc indispensable d'avoir quelques variantes de 
>certaines procédures de base d'impression (d'étiquettes ou de 
>listes de livres) ou de statistiques - la différence réside 
>dans le critère de sélection.
>C'est pour cela que j'ai donné tellement de variantes de 
>procédures d'impression sur le Wiki (étiquettes et inventaire 
>- 2e et 3e parties)
>
>Exemple : de quels exemplaires imprimer la liste?
> - ceux dont le code-barres est compris entre ... et ... ?
> - ceux dont la cote de rangement est comprise entre ... et ... ?
> - ceux qui sont dans la section ...?
> - ceux qui se trouvent dans le panier ... et dont j'ai 
>modifié provisoirement le statut afin de pouvoir les 
>identifier à coup sûr?
>
>Cette dernière variante (statut) me permet de faire facilement 
>le lien entre la sélection dans un panier et les états 
>personnalisables (administration - éditions).
>Outre les statuts "courants" (document en bon état - 
>consultable sur place - en cours d'import/saisie ...), j'ai 
>donc créé en fonction des besoins quelques statuts provisoires 
>"sans étiquette - étagère virtuelle ..."
>
>
>d) Exemple concret : étiquettes erronées ou détériorées  - 
>étapes à suivre
>
>Préliminaires (éventuellement - il se peut que vous ayez déjà 
>fait tout cela)
> - administration - exemplaires - statut - créer un statut 
>spécial d'exemplaires, statut que j'ai appelé "sans étiquette"
> - administration - outils - états personnalisables - créer la 
>requête d'impression d'étiquettes sur base du statut
> - paniers - gestion des procédures - créer la procédure 
>d'action "changer le statut"
> - paniers - gestion des paniers - créer le panier "étiquettes 
>à refaire" - le vider éventuellement avant de le réutiliser
>
>Etapes
> - paniers - sélection - (par douchette par exemple) mettre 
>tous les exemplaires concernés dans le panier appelé 
>"étiquettes à refaire"
> - paniers - action - modifier globalement le statut de tous 
>les exemplaires de ce panier - ils passent du statut "document 
>en bon état" au statut "sans étiquette"
> - éditions - exécuter une action personnalisable - impression 
>d'étiquettes - mais cette fois-ci, la version basée sur le 
>statut des exemplaires
>  choisir bien sûr le statut "sans étiquette" ce qui permet 
>d'imprimer des étiquettes pour la quinzaine de livres 
>concernés.- et uniquement pour ceux-là.
> - paniers - action - remodifier globalement le statut de tous 
>les exemplaires de ce panier - ils repassent du statut "sans 
>étiquette" au statut "document en bon état"
>
>C'est comme cela que vous pourrez gérer le lien entre la 
>sélection dans un panier et l'exécution d'une action 
>personnalisable uniquement pour les exemplaires de ce panier : 
>en les faisant transiter par un statut provisoire, un "statut 
>spécial" qui ne sert qu'à cela..
>
>
>e) Deux exemples de requête (inventaire)
>
>Un inventaire complet : j'extrais les données suivantes et je 
>prévois un titre pour les colonnes (as Cote, as Auteur, as Titre ...)
> - cote de rangement (e.expl_cote)
> - code-barres (e.expl_cb)
> - nom et prénom de l'auteur principal (a.author_name,
a.author_rejete)
> - titre (n.tit1)
> - éditeur (p.ed_name)
> - année de parution (n.year)
>L'inventaire se présente en colonnes, chaque ligne correspond 
>à un exemplaire. J'ai choisi un tri par cote de rangement, 
>titre et numéro de code-barres.
>    N.B. Vous pouvez bien sûr supprimer certains de ces 
>champs, s'il vous semblent inutiles.
>
>Ceci pourrait donc vous donner la liste des livres à vendre, 
>de ceux qui figurent sur une étagère virtuelle de l'OPAC, etc.
>Code sql (attention si vous faites un copier-coller - effacer 
>les ENTER dans ce code, sinon il ne fonctionne pas)
>
>Inventaire des livres - sélection par statut
>SELECT e.expl_cote as Cote, e.expl_cb as Code_barres, 
>GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', 
>a.author_rejete), 1/(r.responsability_type=0)) SEPARATOR ', ') 
>as Auteur, n.tit1 as Titre, p.ed_name as Editeur, n.year as 
>Année FROM exemplaires e, notices n, authors a, publishers p, 
>responsability r WHERE e.expl_statut= !!param1!! and 
>e.expl_notice=n.notice_id and r.responsability_notice = 
>n.notice_id AND responsability_author = a.author_id and 
>n.ed1_id = p.ed_id GROUP BY e.expl_cb ORDER BY e.expl_cote, 
>n.index_sew, e.expl_cb
>
>Titre du paramètre : Statut
>Mode de choix : sélection à partir d'un requête - obligatoire
>Options (cocher liste multiple)  :    select 
>idstatut,statut_libelle from docs_statut order by statut_libelle
>N.B. Ne pas oublier de cliquer sur "enregistrer" avant de 
>fermer la fenêtre options
>
>
>N.B. Dans le cas d'un inventaire de tous les exemplaires d'une 
>section, il n'est pas nécessaire de "transiter" par la 
>constitution d'un panier et un changement de statut.
>
>Il suffit de changer légèrement la requête précédente
> WHERE e.expl_statut= !!param1!!       devient  WHERE 
>e.expl_section= !!param1!!
>et  les options changent aussi
> select idstatut,statut_libelle from docs_statut  order by 
>statut_libelle        devient      select idsection, 
>section_libelle from docs_section order by section_libelle
>
>Inventaire des livres - sélection par section
>SELECT e.expl_cote as Cote, e.expl_cb as Code_barres, 
>GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', 
>a.author_rejete), 1/(r.responsability_type=0)) SEPARATOR ', ') 
>as Auteur, n.tit1 as Titre, p.ed_name as Editeur, n.year as 
>Année FROM exemplaires e, notices n, authors a, publishers p, 
>responsability r WHERE e.expl_section= !!param1!! and 
>e.expl_notice=n.notice_id and r.responsability_notice = 
>n.notice_id AND r.responsability_author = a.author_id and 
>n.ed1_id = p.ed_id GROUP BY e.expl_cb ORDER BY e.expl_cote, 
>n.index_sew, e.expl_cb
>
>Titre du paramètre : Section
>Mode de choix : sélection à partir d'un requête - obligatoire
>Options (cocher liste multiple)  :  select idsection, 
>section_libelle from docs_section order by section_libelle
>N.B. Ne pas oublier de cliquer sur "enregistrer" avant de 
>fermer la fenêtre options
>
>
>f) Remarque finale
>
>Ne vous sentez pas obligé, en toutes circonstances; de passer 
>par un statut provisoire.
>N'oubliez pas que ce n'est nécessaire que s'il s'agit 
>d'exemplaires disparates contenus dans le même panier.
>
>Si je reprends l'exemple mentionné ci-dessus : de quels 
>exemplaires imprimer la liste?
> - ceux dont le code-barres est compris entre ... et ... ?
> - ceux dont la cote de rangement est comprise entre ... et ... ?
> - ceux qui sont dans la section ...?
> - ceux qui se trouvent dans le panier ... et dont j'ai 
>modifié provisoirement le statut afin de pouvoir les 
>identifier à coup sûr?
>la transition par un statut "spécial" n'est nécessaire que 
>dans le dernier cas
>Si vous avez encodé les diverses variantes de procédure 
>d'impression, vous ne devrez pas "transiter" par le panier et 
>le statut provisoire.
>
>
>L'encodage des diverses variantes est loin d'être une perte de 
>temps. A vous de voir celles dont vous aurez le plus besoin.
>Ne vous contentez pas de la sélection sur base du statut.
>
>
>Exemple concret :
>Encoder la procédure qui permet l'impression des étiquettes 
>dont le code-barres est >=... et <=... me semble être un 
>véritable gain de temps à long terme.
>
>En effet, vous devrez sinon à chaque fois (*) mettre tous ces 
>exemplaires dans un panier, en modifier le statut, imprimer 
>les étiquettes, rechanger le statut et vider le panier - avec 
>les risques d'erreur. 
>        (* A chaque fois = très souvent dans ce cas-ci, car 
>c'est à chaque fois que vous encodez de nouveaux livres ou 
>périodiques dans votre base).
>Ce qui vous prendra finalement beaucoup plus de temps que 
>d'encoder une variante supplémentaire d'impression 
>d'étiquettes (d'autant plus qu'avec un copier-coller, on 
>encode assez peu).
>
>
>Bon travail !
>
>Cordialement,
>
>Anne-Marie
>
>Liste de diffusion pmb.user
>Pour se désinscrire : 
>mailto:pmb.user_request@sigb.net?subject=unsubscribe
>
>	
>

Liste de diffusion pmb.user
Pour se désinscrire : mailto:pmb.user_request@sigb.net?subject=unsubscribe