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

[pmb.user] Re: Requêtes sur paniers




Bonjour,

Après la chouette parenthèse de jeudi à Bruxelles (la séance de formation - 
et oui, il y a eu plusieurs moments de travail sérieux malgré les 
apparences - la rencontre avec Eric et Florent, et la soirée au restaurant - 
j'imagine que tous les lecteurs de la liste sont au courant ...), la petite 
nuit de jeudi à vendredi et la dure journée de vendredi (dernier jour 
d'école avant les vacances), revoici le moment de travailler - un peu .... - 
n'exagérons pas.


Voici comment obtenir un inventaire des livres par statut (j'expliquerai 
plus loin la raison de mon choix - par statut).

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 ranegment, titre et numéro de code-barres.

Si vous voulez réduire le nombre de colonnes et afficher moins d'éléments 
(supprimer par exemple la cote de rangement), il vous suffit de supprimer 
les références aux noms de champs repris ci-dessus entre parenthèses (par 
exemples expl_cote)


Comme critère de sélection des notices à imprimer (livres à vendre), je vous 
suggère de le faire sur base du statut.
Comme je l'expliquais dans mon mail précédent (3e partie, lien entre les 
paniers et les états personnalisables), si vous voulez appliquer une requête 
sql, un état personnalisable à l'ensemble des exemplaires contenus dans un 
panier, il suffit d'employer le critère du statut.

Pourquoi une sélection par statut?

    C'est la seule manière d'exécuter un état personnalisable à un ensemble 
d'exemplaires qui n'ont a priori aucun autre point commun que (dans ce 
cas-ci) le fait d'être à vendre.
    C'est la même situation si vous décidez de réimprimer des étiquettes de 
rangement pour 15 livres dont les étiquettes sont abîmées ou erronées,
    Aucun critère "objectivable" ne permet à coup sûr d'identifier ces 
exemplaires.  On ne pourrait pas dire "codes-barres entre ... et ...", "cote 
d'indexation = ...", "section = ..."

    Donc, vous commencez par les mettre dans un panier. Ensuite, vous 
changez globalement le statut des exemplaires de ce panier.
    N'employez pas un statut "normal" de PMB, créez un autre statut, par 
exemple  "à vendre - sans étiquette", etc.
    Après exécution de l'action personnalisable, il vous suffit de ramener 
tous les exemplaires du panier à leur statut antérieur.


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.
La requête sql permet de dire qu'elle ne doit s'appliquer qu'aux exemplaires 
contenus dans telle section ou telle section, compris entre tel et tel 
numéro de code-barres. C'est un critère "objectivable".
C'est la raison pour laquelle je vous donne ci-dessous une 2e variante : 
inventaire des livres - sélection par section.


J'ai mis sur le Wiki d'autres variantes d'inventaires et d'étiquette - avec 
d'autres critères de sélection - à vous de voir si l'un d'entre eux peut 
vous être utile.
Les 2 autres variantes proposées sont
        - inventaire (ou étiquettes) des livres dont le code-barres est >= 
..... et <= ....
                fort utile pour imprimer les étiquettes des 30 derniers 
livres encodés

        - inventaire (ou étiquettes) des livres dont la cote de rangement 
est >= ... et <= ....
                cela pourrait vous permettre d'avoir des inventaires de 
sous-sections, ex. >=810 et <=820
                    --> toute la littérature en anglais (anglais américain 
ou britannique)
                ou d'une seule cote
                    --> <=510 et <=510 vous donne tous les livres de 
mathématiques, et seulement ceux-là.
            sans devoir nécessairement créer toutes ces sous-sections.


Concrètement : liste des livres à vendre - comment y parvenir ?

Etapes à suivre
    1) créer la requête sql "inventaire des livres" - voir code ci-dessous 
(j'ai gardé le texte en continu pour la clarté)
                dans administration - outils - états personnalisables

     2) créer les procédures d'action dans les paniers (changer de statut, 
de section, de localisation ..)
                  dans catalogue - panier - gestion des procédure
            Si vous ne l'avez pas encore fait, récupérez sur le wiki les 
procédures qui permettent de changer de statut, de section, de localisation 
tous les exemplaires d'un panier - il vous faut en tout cas celle qui permet 
de changer de statut

    3) ajouter un type de statut à ceux déjà prédéfinis dans PMB (ex. en 
cours d'import/saisie, document en bon état, consultation sur place ...)
                dans administration - exemplaires - statut
                    Vous créez un nouveau statut (ex. à vendre)

    4) mettre tous les exemplaires à vendre dans un panier que vous aurez 
créé préalablement
                dans catalogue - paniers - collecte

    5) changer provisoirement le statut des exemplaires
                dans catalogue - panier - actions - sélectionner le panier - 
par requête - changer de statut
                Vos exemplaires ont donc le statut "à vendre", et non plus 
le statut "document en bon état"

    6) exécuter l'action personnalisable - inventaire des livres
                (si vous voulez la tester une 1e fois à l'écran, exécutez-la 
dans l'onglet administration et non pas dans l'onglet éditions)
                dans éditions - choisir l'action "inventaire des livres"
                ensuite transférer le résultat (les infos extraites) vers 
Excel afin de pouvoir éventuellement améliorer la mise en page, changer la 
police de caractères ..
                vous pouvez imprimer le tout en Excel ou transférer dans 
Word

    7) rechanger éventuellement le statut des exemplaires
                Je dis "éventuellement", tout dépend de ce que vous voulez
                Voulez-vous garder ces livres "à part", ou voulez-vous les 
remettre dans le fonds propre avec le statut "document en bon état"?
                Aussi longtemps que vous conservez le panier "à vendre", 
vous pourrez de toute façon les identifier.
                Si vous voulez les rechanger de statut, c'est la même chose 
qu'au point 5 - mais dans l'autre sens


Bonne chance !

Anne-Marie Cubat

Ecole N.-D. de la Sagesse
Avenue Van Overbeke, 10
B-1083 Bruxelles
Belgique



Requêtes SQL

Inventaire des livres - sélection par statut
Code sql (attention si vous faites un copier-coller - effacer les ENTER dans 
ce code, sinon il ne fonctionne pas)

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 
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

Paramètres
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
N.B. Ne pas oublier de cliquer sur "enregistrer" avant de fermer la fenêtre 
options


La requête "inventaire des livres par section" ressemble fort à la 
précédente - les différences sont mineures

Inventaire des livres - sélection par section
Code sql (attention si vous faites un copier-coller - effacer les ENTER dans 
ce code, sinon il ne fonctionne pas)

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

Paramètres
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 2
N.B. Ne pas oublier de cliquer sur "enregistrer" avant de fermer la fenêtre 
options



Je n'ai pas de champ personnalisable, je n'ai donc pas pu essayer chez moi 
d'intégrer tout à fait votre requête à la mienne
SELECT notices_custom_small_text FROM notices_custom_values, notices_custom 
WHERE notices_custom_champ=idchamp and (name='Vendeur' or 
name='Adresse_vendeur' or name='Tel_vendeur' or name='Email_vendeur' or 
name='Prix_achat')

Mais je suppose que si vous la scindez en 3 parties, et que vous intercalez 
cela au bon endroit dans les parties SELECT  - FROM  et  WHERE, cela devrait 
fonctionner.


N.B. Employez d'abord les procédures telles quelles, supprimez 
éventuellement un champ si vous n'en avez pas besoin. (ex. code-barres)
Vérifiez si tout est ok.
Si c'est le cas, essayez d'y intégrer votre champ personnalisable. Ne faites 
pas le tout en une fois.


----- Original Message ----- 
From: "Gilles Clavel" <gilclavel@yahoo.com>
To: <pmb.user@pizz.net>
Sent: Thursday, March 30, 2006 3:45 PM
Subject: [pmb.user] Re: Requêtes sur paniers


Bonjour,

Merci pour vos réponses. Je suis heureux que ma
question ait permis de rendre service à d'autres
éventuellement.

Cependant, il demeure toujours et encore des zones
d'ombre.

En effet, lorsque j'évoque les différentes valeurs du
champ notices_custom_values_small_text, c'est pour la
raison suivante :

Notices_custom_values_small_text est le champ de la
table notices_custom_values qui contient la valeur
d'un champ personnalisable , soit :

Un champ personnalisable appelé 'Vendeur'. Pour sortir
la valeur de ce champ, il faut :

SELECT notices_custom_values_small_text FROM
notices_custom_values, notices_custom WHERE
notices_custom_champ=idchamp AND name='Vendeur'

Si je veux les valeurs des champs personnalisables
'Vendeur', 'Adresse_vendeur', 'Tel_vendeur',
'Email_vendeur', 'Prix_achat', je ferais :

SELECT notices_custom_small_text FROM
notices_custom_values, notices_custom WHERE
notices_custom_champ=idchamp and (name='Vendeur' or
name='Adresse_vendeur' or name='Tel_vendeur' or
name='Email_vendeur' or name='Prix_achat')

J'obtiens alors comme résultat une colonne
(notices_custom_small_text) avec les différentes
valeurs sorties dans les lignes. Jusqu'ici, tout va
bien.

Mais comme j'aimerais également faire apparaître, dans
mon inventaire, le titre, l'éditeur, l'auteur et
l'année d'édition, j'aimerais que toutes ces
informations apparaissent en ligne et non en colonne.

Ce qui m'intéresse, c'est de pouvoir appliquer cette
porcédure sur un panier contenant les notices des
livres à vendre.

Idem lorsque je fais un inventaire par section. J'ai
une procédure qui me met dans un panier les
exemplaires rattaché à une certaine section
(paramètre). Comment puis-je faire une procédure pour
afficher, de ce panier, seulement l'auteur, le titre,
l'éditeur et l'année d'édition ?

J'espère que je n'embête personne avec mes questions,
mais il est vrai que je ne trouve nullepart des pistes
pouvant m'aider (wiki ou autres sources).

Merci d'avance

Bonne journée

Gilles








___________________________________________________________________________
Nouveau : téléphonez moins cher avec Yahoo! Messenger ! Découvez les tarifs 
exceptionnels pour appeler la France et l'international.
Téléchargez sur http://fr.messenger.yahoo.com

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