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

[pmb.user] Re: Requête d'inventaire




Bonjour,

Voici la requête demandée - on sélectionne à chaque fois un seul 
propriétaire
La procédure affiche le nom de l'auteur uniquement s'il s'agit d"un auteur 
principal.
Le nom des auteurs secondaires n'est pas mentionné. (sinon, on pourrait 
avoir plusisurs fois le même exemplaire, avec à chaque fois le nom d'un des 
auteurs secondaires).


Version sans n° de code-barres

select section_libelle as Section, expl_cote as Cote, 
GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', a.author_rejete), 
1/(r.responsability_type=0))  SEPARATOR ', ') as Auteurs, tit1 as Titre from 
authors a, exemplaires e, notices n, lenders l, docs_section, responsability 
r where expl_owner = !!proprietaire!! and expl_notice=notice_id and 
expl_owner=idlender and expl_section=idsection and responsability_notice = 
notice_id AND responsability_author = author_id group by expl_cb order by 
expl_cote, expl_section, expl_cb

Titre du paramètre : propriétaire / ou prêteur (comme vous voulez)
Liste de choix à partir d'un requête
Options : select idlender, lender_libelle from lenders order by 
lender_libelle (NE PAS cocher case multiple)
    voir explications ci-dessous


Version avec n° de code-barres

select section_libelle as Section, expl_cote as Cote, 
GROUP_CONCAT(REPEAT(CONCAT(a.author_name, ', ', a.author_rejete), 
1/(r.responsability_type=0))  SEPARATOR ', ') as Auteurs, tit1 as Titre, 
expl_cb as Code_barres from authors a, exemplaires e, notices n, lenders l, 
docs_section, responsability r where expl_owner =!!proprietaire!! and 
expl_notice=notice_id and expl_owner=idlender and expl_section=idsection and 
responsability_notice = notice_id AND responsability_author = author_id 
group by expl_cb order by expl_cote, expl_section, expl_cb



**IMPORTANT : Remarque de syntaxe**

Il y a une différence cruciale entre
    d'une part            where expl_owner = !!proprietaire!!        ou 
where idsection = !!section!!        ou where expl_statut = !!statut!!
    et d'autre part      where expl_owner in (!!proprietaire!!)     ou where 
idsection in (!!section!!)     ou where expl_statut in (!!statut!!)


Si j'écris where expl_owner in (!!proprietaire!!) - j'emploie  le mot "in" 
et les parenthèses
     c'est que je veux laisser la possibilité de choisir un ou plusieurs 
propriétaires
     vous devez cocher la case "liste multiple" pour disposer vraiment de ce 
choix (au moment de l'exécution de la requête)

Mais si j'écris  where expl_owner = !!proprietaire!! - j'emploie le signe 
égal
     dans ce cas, je dis de NE PAS cocher "liste multiple"
     car je veux restreindre le choix à une seule possibilité (un seul 
statut, dans ce cas-ci)
     même si vous cochez la case "liste multiple", cela va déclencher un 
message d'erreur au moment de l'exécution

N.B. Le fait d'employer la syntaxe avec in ( ) et de cocher la case "liste 
multiple" n'oblige pas l'utilisateur à choisir - au moment de l'exécution de 
la requête -plusieurs éléments dans la liste, il peut très bien ne 
sélectionner par exemple qu'un seul propriétaire.
Mais le fait d'avoir employé cette syntaxe avec "in" et d'avoir coché cette 
case rend votre procédure plus polyvalente, puisqu'on peut demander la liste 
pour 1 ou 2 propriétaires, au choix.
Idem pour les ections ou statuts.

A vous de voir ce que vous préférez employer dans votre requête.


**La syntaxe est donc fort importante**

En résumé
 - pour avoir la possibilité de choisir plusieurs éléments dans la liste
  il faut employer la syntaxe avec in(   ) ET cocher la case "liste 
multiple"
    (les 2 conditions doivent être remplies)

 - pour être sûr de restreindre le choix à une possibilité et éviter tout 
risque de message d'erreur
  soit il faut employer la syntaxe avec in(   ) ET NE PAS cocher la case 
"liste multiple"
  soit il faut employer la syntaxe avec le signe =  ET NE PAS cocher la case 
"liste multiple"

 - attention si vous avez employé la syntaxe avec le signe  = (c'est le 
grand "piège")
  ne cochez surtout pas la case "liste multiple" - sinon l'utilisateur sera 
confronté à un message d'erreur s'il essaye de choisir plusieurs éléments


**Rappel : Comment sélectionner plusieurs éléments dans la liste 
déroulante?**

Avec le système habituel de Windows
   -  pour sélectionner des éléments consécutifs dans une liste : on 
maintient la touche MAJ (SHIFT) enfoncée, et on clique sur le premier et le 
dernier élément à sélectionner.
   -  pour sélectionner des éléments non consécutifs dans une liste : on 
maintient la touche CTRL enfoncée, et on clique sur les éléments à 
sélectionner.



Sinon, si vous voulez d'autres requêtes d'inventaire, allez voir sur le 
Wiki, j'ai mis en ligne quelques variantes.
Voir requêtes sql  - inventaire (3e partie)


Bonne journée,

Anne-Marie Cubat

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

----- Original Message ----- 
From: "Hervé BATARDIERE" <herve.batardiere@free.fr>
To: <pmb.user@pizz.net>
Sent: Thursday, April 06, 2006 2:24 AM
Subject: [pmb.user] Requête d'inventaire


Bonjour à tous,

Je voudrais faire une requête pour éditer un inventaire des documents de
la bibliothèque avec les éléments suivants :

Section     Cote   Titre Auteur nom + prénom  pour un Prêteur dans une
liste de choix

Voici le début de la requête, mais je coince sur le nom de l'auteur

select expl_section as Section, expl_cote as Cote, tit1  as Titre from
exemplaires, notices, docs_statut, lenders where
expl_owner=!!proprietaire!! and expl_notice=notice_id and
expl_statut=idstatut and expl_owner=idlender and expl_section=idsection
order by  expl_cote, expl_section

Que faut-il rajouter ?

Merci de votre aide

Hervé batardiere


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