[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