[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
Bonsoir,
Apparemment, vous avez bien compris.
J'avais d'abord essayé de tester l'appartenance à un panier dans les actions
personnalisables, mais je me suis "heurtée" à des problèmes de formulation
et de syntaxe.
C'est pourquoi j'ai renoncé à cette solution qui me semblait a priori la
plus simple mais je n'ai pas réussi à la mettre en oeuvre.
Si vous avez une solution à proposer, c'est génial, la procédure est
simplifiée et abrégée pour tout le monde (abrégée puisqu'on ne doit plus
changer de statut)..
Il ne me restera plus qu'à changer une partie de mon texte (et à en
supprimer une autre partie), mais c'est un détail. Tout le monde y gagnera.
C'est comme ça que les choses bougent pour les utilisateurs de PMB - par la
collaboration.
Je suis sûre qu'une action personnalisable dont le critère de sélection est
"pour tous les exemplaires contenus dans tel ou tel panier" sera appréciée
par nous tous.
J'attends donc de vos nouvelles avec impatience et curiosité ... ;-) ,-)
Anne-Marie Cubat
----- Original Message -----
From: "Alain Montavid" <alain@montavid.com>
To: <pmb.user@pizz.net>
Sent: Tuesday, April 04, 2006 6:51 PM
Subject: [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
Liste de diffusion pmb.user
Pour se désinscrire : mailto:pmb.user_request@sigb.net?subject=unsubscribe