<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog de f-leb</title>
	<atom:link href="https://blog.developpez.com/f-leb/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/f-leb</link>
	<description></description>
	<lastBuildDate>Thu, 24 Oct 2013 17:46:38 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[Raspberry Pi] Matrice à LED Pi-Lite</title>
		<link>https://blog.developpez.com/f-leb/p12279/raspberry-pi/raspberry-pi-matrice-a-led-pi-lite</link>
		<comments>https://blog.developpez.com/f-leb/p12279/raspberry-pi/raspberry-pi-matrice-a-led-pi-lite#comments</comments>
		<pubDate>Sun, 13 Oct 2013 16:58:20 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/f-leb/?p=56</guid>
		<description><![CDATA[La société Ciseco vient de sortir une gamme de matrices à LED rouges ou blanches pour Raspberry Pi. La Pi-Lite avec son grand affichage (85 x 55 mm) et ses 14 x 9 LED se connecte directement sur le port GPIO de la Raspberry Pi. La matrice est pilotée par un microcontrôleur ATMega328P (le même [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La société <a href="http://shop.ciseco.co.uk/" target="_blank">Ciseco</a> vient de sortir une gamme de matrices à LED <a href="http://shop.ciseco.co.uk/pi-lite-lots-of-leds-for-the-raspberry-pi-0805-red/" target="_blank">rouges</a> ou <a href="http://shop.ciseco.co.uk/pi-lite-white-lots-of-leds-for-the-raspberry-pi-1206-white/" target="_blank">blanches</a> pour Raspberry Pi.<br />
<a href="http://blog.developpez.com/f-leb/files/2013/10/matrice_PiLite.jpg"><img src="http://blog.developpez.com/f-leb/files/2013/10/matrice_PiLite.jpg" alt="matrice_PiLite" width="250" height="213" class="alignnone size-full wp-image-64" /></a></p>
<p>La Pi-Lite avec son grand affichage (85 x 55 mm) et ses 14 x 9 LED se connecte directement sur le port GPIO de la Raspberry Pi.</p>
<p><iframe width="625" height="469" src="http://www.youtube.com/embed/tyS45yYtKJU?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>La matrice est pilotée par un microcontrôleur ATMega328P (le même que celui qui équipe la carte Arduino de base). La communication entre le RPi et le Pi-Lite s&rsquo;effectue par la <a href="http://openmicros.org/index.php/articles/94-ciseco-product-documentation/raspberry-pi/283-setting-up-my-raspberry-pi" target="_blank">liaison série</a> classique à 9600 bds (compatible TTL) ce qui rend la Pi-Lite compatible avec n&rsquo;importe quelle carte/microcontrôleur utilisant ce média.<br />
Un logiciel préchargé permet, dès le déballage, de faire défiler du texte, dessiner des graphiques à barres ou un vumètre, d&rsquo;allumer/éteindre des LED individuellement, etc. Il suffit d&rsquo;y envoyer les bonnes commandes série.</p>
<p>Le constructeur donne un lien vers un <a href="http://openmicros.org/index.php/articles/94-ciseco-product-documentation/raspberry-pi/280-b040-pi-lite-beginners-guide" target="_blank">guide pour débuter avec Pi-Lite</a> avec les commandes de base à envoyer sur le port série.<br />
Si vous voulez gagner du temps en vous affranchissant des configurations parfois fastidieuses de votre distribution Linux, vous pouvez installer une distribution adaptée à la Pi-Lite sur une carte SD (en téléchargeant son image : <a href="http://www.openmicros.org/Download/2013-05-25-wheezy-raspbian-ciseco.img.zip" target="_blank">Ciseco Wheezy image</a>).<br />
Vous disposez également d&rsquo;un <a href="http://openmicros.org/index.php/articles/94-ciseco-product-documentation/raspberry-pi/305-pi-lite-python-emulator" target="_blank">émulateur</a> (écrit en Python) pour faire quelques tests de commandes série.</p>
<p>Des exemples d&rsquo;utilisation en Python sont disponibles <a href="http://openmicros.org/index.php/articles/94-ciseco-product-documentation/raspberry-pi/304-pi-lite-python-examples" target="_blank">ici</a>.</p>
<p>Exemple de code Python, d&rsquo;après <a href="http://www.raspberrypi-spy.co.uk/2013/09/pi-lite-led-matrix-board-python-hello-world-example/" target="_blank">Pi-Lite LED Matrix Board Python ‘Hello World’ Example</a> :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#!/usr/bin/env python<br />
&nbsp;<br />
import serial<br />
import time<br />
import sys<br />
&nbsp;<br />
# Define message complete with<br />
# carriage return at the end<br />
message1 = &quot;Hello World!\r&quot;<br />
message2 = &quot;Pi-Lite messages are easy!\r&quot;<br />
&nbsp;<br />
# Configure Pi serial port<br />
s = serial.Serial()<br />
s.baudrate = 9600<br />
s.timeout = 0<br />
s.port = &quot;/dev/ttyAMA0&quot;<br />
&nbsp;<br />
try:<br />
&nbsp; &nbsp; # Open serial port<br />
&nbsp; &nbsp; s.open()<br />
except serial.SerialException, e:<br />
&nbsp; &nbsp; # There was an error<br />
&nbsp; &nbsp; sys.stderr.write(&quot;could not open port %r: %s\n&quot; % (s.port, e))<br />
&nbsp; &nbsp; sys.exit(1)<br />
&nbsp;<br />
print &quot;Serial port ready&quot;<br />
&nbsp;<br />
# Clear display<br />
s.write(&quot;$$$ALL,OFF\r&quot;)<br />
&nbsp;<br />
# Send message 1 to the Pi-Lite<br />
print message1<br />
s.write(message1)<br />
&nbsp;<br />
# Short delay to allow the<br />
# 12 character message to finish<br />
time.sleep(6)<br />
&nbsp;<br />
# Send message 2 to the Pi-Lite<br />
print message2<br />
s.write(message2)<br />
&nbsp;<br />
# Short delay to allow the<br />
# 26 character message to finish<br />
time.sleep(12)<br />
&nbsp;<br />
print &quot;Good bye&quot;</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Arduino] L&#8217;univers Arduino</title>
		<link>https://blog.developpez.com/f-leb/p12206/arduino/arduino-lunivers-arduino</link>
		<comments>https://blog.developpez.com/f-leb/p12206/arduino/arduino-lunivers-arduino#comments</comments>
		<pubDate>Fri, 30 Aug 2013 13:59:03 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/f-leb/?p=49</guid>
		<description><![CDATA[Vous programmez déjà et vous voulez vous lancer dans la création d&#8217;objets électroniques interactifs ? Voici un article en deux parties sur L&#8217;Univers Arduino Partie I : Aperçu de la plateforme Arduino et ses cartes d&#8217;interface (shields) Partie II : Réalisation d&#8217;un prototype à base d&#8217;Arduino]]></description>
				<content:encoded><![CDATA[<p>Vous programmez déjà et vous voulez vous lancer dans la création d&rsquo;objets électroniques interactifs ?<br />
Voici un article en deux parties sur L&rsquo;<strong>Univers Arduino</strong><br />
<img src="http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg" alt="Arduino Uno" /><br />
<a href="http://f-leb.developpez.com/tutoriels/arduino/univers_arduino/part1/" target="_blank"><br />
<strong>Partie I :</strong> Aperçu de la plateforme Arduino et ses cartes d&rsquo;interface (<em>shields</em>)</a><br />
<a href="http://f-leb.developpez.com/tutoriels/arduino/univers_arduino/part2/" target="_blank"><strong>Partie II :</strong> Réalisation d&rsquo;un prototype à base d&rsquo;Arduino</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Education]  &#171;&#160;Informatique et Sciences du Numérique&#160;&#187; en CPGE</title>
		<link>https://blog.developpez.com/f-leb/p11706/education/education-informatique-et-sciences-du-numerique-en-cpge</link>
		<comments>https://blog.developpez.com/f-leb/p11706/education/education-informatique-et-sciences-du-numerique-en-cpge#comments</comments>
		<pubDate>Tue, 08 Jan 2013 22:19:41 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/f-leb/?p=44</guid>
		<description><![CDATA[La rénovation des programmes des classes préparatoires aux grandes écoles (C.P.G.E.) a été entreprise suite à la réforme du lycée. Celle-ci s’est appliquée progressivement, à partir de la rentrée 2010, et a entraîné une modification importante des programmes et des approches. La consultation pour la rénovation des programmes de C.P.G.E s&#8217;est donc terminée le 16 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La rénovation des programmes des classes préparatoires aux grandes écoles (C.P.G.E.) a été entreprise suite à la réforme du lycée. Celle-ci s’est appliquée progressivement, à partir de la rentrée 2010, et a entraîné une modification importante des programmes et des approches.</p>
<p>La consultation pour la rénovation des programmes de C.P.G.E s&rsquo;est donc terminée le 16 décembre 2012.</p>
<p>Pour les filières scientifiques,</p>
<blockquote><p> le seul changement important concerne l’introduction dans la filière scientifique d&rsquo;une discipline à part entière, &laquo;&nbsp;Informatique et Sciences du Numérique&nbsp;&raquo;, qui sera enseignée sur les deux années.</p></blockquote>
<p>Ce changement est donc la suite logique de l&rsquo;introduction de l&rsquo;<a href="http://blog.developpez.com/f-leb/p10595/education/education_l_informatique_fait_son_grand" target="_blank">option &laquo;&nbsp;Informatique et Sciences du Numérique&nbsp;&raquo; en Terminale S depuis la rentrée 2012</a>.</p>
<p>voir <a href="http://www.enseignementsup-recherche.gouv.fr/cid66194/renovation-des-programmes-des-c.p.g.e-rentree-2013.html" target="_blank">Rénovation des programmes des C.P.G.E &#8211; rentrée 2013</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Education]  Le code html au service de l&#8217;éducation</title>
		<link>https://blog.developpez.com/f-leb/p11557/education/education-le-code-html-au-service-de-leducation</link>
		<comments>https://blog.developpez.com/f-leb/p11557/education/education-le-code-html-au-service-de-leducation#comments</comments>
		<pubDate>Sun, 09 Dec 2012 21:07:02 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[ISN]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/f-leb/?p=35</guid>
		<description><![CDATA[Ils ont osé : « Le code html rend les étudiants plus performants » Plusieurs études montrent que l’apprentissage du code est un très bon outil de structuration de la pensée. Je cherche les études en question. Les élèves qui ont appris le code sont plus performants dans les autres matières J&#8217;ai surtout remarqué l&#8217;inverse. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ils ont osé : <a href="http://etudiant.lefigaro.fr/les-news/actu/detail/article/le-code-html-rend-les-etudiants-plus-performants-662/" target="_blank">« Le code html rend les étudiants plus performants »</a></p>
<blockquote><p>Plusieurs études montrent que l’apprentissage du code est un très bon outil de structuration de la pensée.</p></blockquote>
<p>Je cherche les études en question.</p>
<blockquote><p> Les élèves qui ont appris le code sont plus performants dans les autres matières</p></blockquote>
<p>J&rsquo;ai surtout remarqué l&rsquo;inverse. Les élèves qui ont une pensée structurée sont performants aussi en HTML. Curieux hein ?</p>
<p>Enfin, la future bonne nouvelle :</p>
<blockquote><p> « Du côté du ministère de l’Education, on annonce l’extension de l’option <a href="http://blog.developpez.com/f-leb/p10595/education/education_l_informatique_fait_son_grand" target="_blank">«informatique et sciences du numérique»</a> aux classes de terminale des filières généralistes du lycée. Les élèves y apprendront notamment ce qu’est un langage de programmation et son utilisation. Elle sera expérimentée à la rentrée 2013, afin d’être effective pour tous en 2014. Cette mesure sera officialisée jeudi prochain lors de la conférence de Vincent Peillon sur l’école numérique. »</p></blockquote>
<p>du boulot pour f-leb, c&rsquo;est bon ça, encore plus de HTML&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Education] L&#8217;informatique fait son grand retour au lycée&#8230;</title>
		<link>https://blog.developpez.com/f-leb/p10595/education/education_l_informatique_fait_son_grand</link>
		<comments>https://blog.developpez.com/f-leb/p10595/education/education_l_informatique_fait_son_grand#comments</comments>
		<pubDate>Fri, 16 Dec 2011 19:19:33 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Education]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L’enseignement de l’informatique au lycée fut créé dans les années 80… et a été supprimé en 1992. C’est donc officiel, l’informatique fera son grand retour à la rentrée 2012. Le BAC S en 2012 : maths, physique et&#8230; informatique Bulletin officiel spécial n°8 du 13 octobre 2011: Enseignement de spécialité d&#8217;informatique et sciences du numérique [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>L’enseignement de l’informatique au lycée fut créé dans les années 80… et a été supprimé en 1992.</p>
<p>C’est donc officiel, l’informatique fera son grand retour à la rentrée 2012.</p>
<p><a href="http://www.lepost.fr/article/2011/11/25/2646723_le-bac-s-en-2012-maths-physique-et-informatique.html">Le BAC S en 2012 : maths, physique et&#8230; informatique</a></p>
<p><a href="http://www.education.gouv.fr/pid25535/bulletin_officiel.html?cid_bo=57572">Bulletin officiel spécial n°8 du 13 octobre 2011</a>:<br />
Enseignement de spécialité d&rsquo;informatique et sciences du numérique de la série scientifique &#8211; classe terminale</p>
<p><a href="http://www.onisep.fr/Toute-l-actualite-nationale/Etudes-au-lycee-et-CFA/Janvier-2012/Un-nouvel-enseignement-de-specialite-en-terminale-S-a-la-rentree-2012">Un nouvel enseignement de spécialité en terminale S à la rentrée 2012</a></p>
<p><a href="http://science-info-lycee.fr/">Le SIL :O !</a>: Science Informatique au lycée, oui !</p>
<p><a href="http://www.epi.asso.fr/revue/docu/d1202a.htm">Association Enseignement Public et Informatique EPI: Appel et questions aux candidats à l&rsquo;élection présidentielle de 2012</a></p>
<p><strong>NEW : </strong> <a href="https://wiki.inria.fr/sciencinfolycee/Informatique_et_Sciences_du_Num%C3%A9rique_-_Sp%C3%A9cialit%C3%A9_ISN_en_Terminale_S">Manuel scolaire de la spécialité ISN en Terminale S</a></p>
<p><em>dernière MAJ le 25/08/2012</em></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[Access SQL] Trouver l&#8217;enregistrement précédent</title>
		<link>https://blog.developpez.com/f-leb/p11116/access/access_sql_trouver_l_enregistrement_prec</link>
		<comments>https://blog.developpez.com/f-leb/p11116/access/access_sql_trouver_l_enregistrement_prec#comments</comments>
		<pubDate>Mon, 25 Jun 2012 21:38:45 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[SQL Access]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[C’est tellement simple sous Excel de retrouver la valeur « précédente » qui se trouve à la cellule de la ligne « au-dessus ». Seulement Ici, ma table Access ressemble à ça : J’ai plusieurs véhicules dont je relève le compteur à chaque plein. [Id] est un numéro auto dont je ne peux évidemment pas [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C’est tellement simple sous Excel de retrouver la valeur « précédente » qui se trouve à la cellule de la  ligne « au-dessus ».<br />
Seulement Ici, ma table Access ressemble à ça :<br />
<img src="http://blog.developpez.com/media/Tbl_Journal.PNG" width="353" height="183" alt="" /></p>
<p>J’ai plusieurs véhicules dont je relève le compteur à chaque plein. [Id] est un numéro auto dont je ne peux  évidemment pas me servir pour retrouver le plein « précédent ».<br />
Dans une table de base de données, les lignes sont un peu comme des billes mélangées dans un sac et retrouver la ligne « précédente » dans ces conditions  n’a pas de sens.</p>
<p>Et pourtant il faudrait obtenir :<br />
<img src="http://blog.developpez.com/media/Result_R_final.PNG" width="451" height="184" alt="" /></p>
<p>Sauriez-vous trouver le jeu de requête/sous-requête pour obtenir le résultat ci-dessus ?<br />
Uniquement avec les assistants, bien sûr ! QBEO*<br />
*<em>Query By Example Only </em><img src="https://blog.developpez.com/f-leb/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
<p><span id="more-11"></span><br />
On commence par une requête intermédiaire <strong>R_DatePrecedente</strong>.</p>
<p>Celle-ci nécessite une auto-jointure sur la table [Journal]. Dans l’assistant il faut ajouter une deuxième fois la table Journal qui prendra automatiquement l’alias [journal_1].<br />
Pour chaque plein d’un véhicule, on recherche les dates des pleins précédents et on retient la date du plein le plus récent (avec Max(Journal_1.DatePlein)).</p>
<p><img src="http://blog.developpez.com/media/R_DatePrecedente.PNG" width="548" height="291" alt="" /></p>
<p><img src="http://blog.developpez.com/media/Result_R_DatePrecedente.PNG" width="361" height="146" alt="" /></p>
<p>La requête <strong>R_final</strong> reprend la requête précédente comme sous-requête :<br />
<img src="http://blog.developpez.com/media/R_final.PNG" width="453" height="282" alt="" /><br />
<img src="http://blog.developpez.com/media/Result_R_final.PNG" width="451" height="184" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Access SQL]  Count(*) ou Count([Nom_de_colonne]) ?</title>
		<link>https://blog.developpez.com/f-leb/p10498/access/access_sql_count_ou_count_nom_de_colonne</link>
		<comments>https://blog.developpez.com/f-leb/p10498/access/access_sql_count_ou_count_nom_de_colonne#comments</comments>
		<pubDate>Sun, 13 Nov 2011 10:10:14 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[SQL Access]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Tout le monde connaît l’opération d’agrégation SQL count permettant de compter le nombre d’occurrences renvoyées par une requête. Dans le QBE d’Access, après avoir opéré le regroupement, on sélectionne l’opération Compte avec le champ de la table concerné. Par exemple, si on souhaite connaître le nombre de commandes par client : dont la traduction en [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Tout le monde connaît l’opération d’agrégation SQL <a href="http://office.microsoft.com/fr-fr/access-help/fonction-count-HA001231438.aspx">count</a> permettant de compter le nombre d’occurrences renvoyées par une requête.<br />
<span id="more-10"></span></p>
<p>Dans le QBE d’Access, après avoir opéré le regroupement, on sélectionne  l’opération <em>Compte</em> avec le champ de la table concerné.<br />
Par exemple, si on souhaite connaître le nombre de commandes par client :</p>
<p><img src="http://blog.developpez.com/media/Blog11_qbeR1_01.PNG" width="348" height="307" alt="" /></p>
<p>dont la traduction en SQL, nous donne l’opération :<br />
<code class="codecolorer text default"><span class="text">…Count(Commandes.[N° commande]) AS [CompteDeN° commande]</span></code></p>
<p>Or on peut lire dans l’aide Access:</p>
<blockquote><p><em>Count(*)</em> s&rsquo;exécute beaucoup plus rapidement que <em>Count([nom_de_colonne]</em>)</p></blockquote>
<p>Ce qui fait que l’on devrait plutôt utiliser le caractère générique *, et écrire quelque chose de normalement plus performant avec:<br />
<img src="http://blog.developpez.com/media/Blog11_qbeR1_avecstar.PNG" width="461" height="305" alt="" /> </p>
<p>Soit en SQL,:<br />
<code class="codecolorer text default"><span class="text">…Count(*) AS [CompteDeN° commande]</span></code></p>
<p>Notre requête présente toutefois  l’inconvénient de ne pas présenter les clients qui n’ont jamais commandé. Pour tenter d’y remédier, on modifie dans un premier temps la requête avec une jointure externe LEFT (type &laquo;&nbsp;2&nbsp;&raquo; dans le QBE) :<br />
<img src="http://blog.developpez.com/media/Blog11_qbeR2.PNG" width="462" height="332" alt="" /></p>
<p><strong>qui retourne un résultat faux</strong> avec un nombre de commandes égal à 1 pour les clients qui n’ont jamais commandé. Cela est logique puisque le but de la jointure <em>LEFT</em> est justement de retourner au moins un enregistrement par client.</p>
<p>Pour s’en sortir il suffit de consulter l’aide à nouveau :</p>
<blockquote><p>La fonction <em>Count(expr)</em> ne compte pas les enregistrements possédant des champs <em>Null</em> sauf si l’argument <em>expr</em> est remplacé par le caractère générique astérisque (*)</p></blockquote>
<p>Si on écrit, la requête :</p>
<p><img src="http://blog.developpez.com/media/Blog11_qbeR3.PNG" width="353" height="311" alt="" /> </p>
<p>La requête retourne, pour les clients qui n’ont jamais commandé, un enregistrement avec [N° commande]=<em>Null</em>.
</p>
<p><img src="http://blog.developpez.com/media/Blog11_qbeR3_result.PNG" width="429" height="323" alt="" /> </p>
<p>Il suffit de regrouper par client et de compter le nombre de champ [N° Commande] non à Null.</p>
<p><strong>Il faut donc utiliser dans ce cas précis <em>count([N°Commande])</em>  et non <em>count(*)</em>:</strong></p>
<p><img src="http://blog.developpez.com/media/Blog11_qbeR4.PNG" width="366" height="326" alt="" /></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT &nbsp;<br />
&nbsp; Clients.[Code client], Clients.Société, <br />
&nbsp; Count(Commandes.[N° commande]) AS [CompteDeN° commande] <br />
FROM Clients LEFT JOIN Commandes <br />
&nbsp; &nbsp; ON Clients.[Code client] = Commandes.[Code client] <br />
GROUP BY Clients.[Code client], Clients.Société;</div></div>
</p>
<p><img src="http://blog.developpez.com/media/Blog11_qbeR4_result.PNG" width="511" height="227" alt="" /></p>
<p><strong>Conclusion :</strong></p>
<p>Je reprends <a href="http://office.microsoft.com/fr-fr/access-help/fonction-count-HA001231438.aspx">l&rsquo;aide Access</a>:</p>
<blockquote><p>
La fonction <em>Count(expr)</em>  ne compte pas les enregistrements possédant des champs <em>Null</em> sauf si l’argument <em>expr</em> est remplacé par le caractère générique astérisque (*). Si vous utilisez un astérisque, la fonction <em>Count</em> calcule le nombre total des enregistrements, y compris ceux qui contiennent des champs <em>Null</em>.<br />
<em>Count(*)</em> s&rsquo;exécute beaucoup plus rapidement que <em>Count([nom_de_colonne])</em>.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Education] Concours &#171;&#160;Castor Informatique 2011&#8243;</title>
		<link>https://blog.developpez.com/f-leb/p10408/education/concours_castor_informatique_2011</link>
		<comments>https://blog.developpez.com/f-leb/p10408/education/concours_castor_informatique_2011#comments</comments>
		<pubDate>Mon, 17 Oct 2011 07:14:00 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Education]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une nouvelle rubrique concernant l&#8217;enseignement de l&#8217;informatique&#8230; Je commence par le nouveau concours Castor Informatique, organisé très prochainement. Ce concours vise à éveiller l&#8217;intérêt des jeunes pour l’informatique grâce à une première rencontre attrayante avec les concepts qui s’y rattachent. Les collégiens comme les lycéens sont encouragés à y participer activement. La participation à ce [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une nouvelle rubrique concernant l&rsquo;enseignement de l&rsquo;informatique&#8230;</p>
<p>Je commence par le nouveau concours <a href="http://castor-informatique.fr/index.html"><strong>Castor Informatique</strong></a>, organisé très prochainement.<br />
<img src="http://castor-informatique.fr/img/castor_small.png" alt="" title="" /></p>
<p><em>Ce concours vise à éveiller l&rsquo;intérêt des jeunes pour l’informatique grâce à une première rencontre attrayante avec les concepts qui s’y rattachent. Les collégiens comme les lycéens sont encouragés à y participer activement.</p>
<p>La participation à ce concours leur fera sentir comment l’informatique imprègne tous les domaines de la vie quotidienne, et pourquoi ses applications sont polyvalentes. Le concours du Castor informatique vise notamment à augmenter l&rsquo;attractivité de la « science informatique » en général, ainsi que sa part dans l&rsquo;enseignement secondaire.</p>
<p>Le concours est proposé dans de nombreux pays, au mois de novembre, à quatre niveaux de l&rsquo;enseignement secondaire, qui correspondent chez nous à : sixième-cinquième, quatrième-troisième, seconde, première-terminale. Les 18 tâches proposées dans le concours à chaque niveau sont divertissantes, surprenantes, et font souvent référence à la vie quotidienne. Néanmoins, leur contenu est clair, stimulant, résolument informatique&#8230; et pourtant ne nécessite aucune connaissance préalable en informatique ! Un peu de pensée logique et de sens de l&rsquo;observation suffisent.</p>
<p>Par ailleurs, l’implication des filles dans la société numérique reste un enjeu important ; c&rsquo;est pourquoi le concours doit être proposé dès le collège, afin de susciter l&rsquo;intérêt des jeunes filles pour les sciences et les techniques, avant que se mettent en place les processus d&rsquo;orientation.</p>
<p>L&rsquo;épreuve se déroule entre le 14 et le 18 novembre, chaque élève se connecte individuellement sur un ordinateur pendant une durée de 45 minutes (à un niveau choisi par l&rsquo;enseignant parmi les quatre niveaux proposés). </em></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Access SQL] Avec ou sans sous-requêtes ?</title>
		<link>https://blog.developpez.com/f-leb/p10252/access/access_sql_avec_ou_sans_sous_requetes</link>
		<comments>https://blog.developpez.com/f-leb/p10252/access/access_sql_avec_ou_sans_sous_requetes#comments</comments>
		<pubDate>Sun, 04 Sep 2011 21:06:05 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[SQL Access]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[On s’intéresse aux résultats de la Ligue 1 En fonction des scores des rencontres, on souhaite une requête qui renverrait pour chaque équipe les nombres de victoires, nuls et défaites à domicile. 1ère solution: avec des sous-requêtes corrélées, SELECT DISTINCT equipe.idequipe, &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; equipe.nomequipe, &#160; &#160; &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>On s’intéresse aux résultats de la Ligue 1 <img src="https://blog.developpez.com/f-leb/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>
<p><img src="http://blog.developpez.com/media/Blog9_Relations.PNG" width="321" height="186" alt="" /></p>
<p>En fonction des scores des rencontres, on souhaite une requête qui renverrait pour chaque équipe les nombres de victoires, nuls et défaites <strong>à domicile</strong>.</p>
<p><img src="http://blog.developpez.com/media/Blog9_R_GNPDomicile.PNG" width="540" height="196" alt="" /><br />
<span id="more-9"></span><br />
<strong>1ère solution:</strong> avec des sous-requêtes corrélées,</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT DISTINCT equipe.idequipe, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equipe.nomequipe, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SELECT COUNT(*) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM &nbsp; [Match] m1 &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHERE &nbsp;m1.idequipedomicile = equipe.idequipe &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AND m1.scoreequipedomicile &gt; m1.scoreequipeext) AS gagne &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SELECT COUNT(*) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM &nbsp; [Match] m1 &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHERE &nbsp;m1.idequipedomicile = equipe.idequipe &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AND m1.scoreequipedomicile = m1.scoreequipeext) AS nul, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (SELECT COUNT(*) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM &nbsp; [Match] m1 &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHERE &nbsp;m1.idequipedomicile = equipe.idequipe &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AND m1.scoreequipedomicile &lt; m1.scoreequipeext) AS perdu &nbsp;<br />
FROM &nbsp; equipe &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;LEFT JOIN [Match] &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ON equipe.idequipe = match.idequipedomicile;</div></div>
<p><img src="http://blog.developpez.com/media/Blog9_R1.PNG" width="575" height="246" alt="" /></p>
<p><strong>2ème solution:</strong> sans sous-requêtes, dans une requête qui regroupe les rencontres à domicile de chaque équipe,</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT equipe.idequipe, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;equipe.nomequipe, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;SUM(Iif(scoreequipedomicile &gt; scoreequipeext, 1, 0)) AS gagne, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;SUM(Iif(scoreequipedomicile = scoreequipeext, 1, 0)) AS nul, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;SUM(Iif(scoreequipedomicile &lt; scoreequipeext, 1, 0)) AS perdu &nbsp;<br />
FROM &nbsp; equipe &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;LEFT JOIN [Match] &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ON equipe.idequipe = match.idequipedomicile &nbsp;<br />
GROUP &nbsp;BY equipe.idequipe, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; equipe.nomequipe;</div></div>
<p><img src="http://blog.developpez.com/media/Blog9_R2.PNG" width="735" height="262" alt="" /></p>
<p><code class="codecolorer text default"><span class="text">…SUM(Iif(scoreequipedomicile &gt; scoreequipeext, 1, 0)) AS gagne, …</span></code><br />
En cas de victoire à domicile, l’expression Iif retourne 1 et 0 sinon. Puis on somme les victoires.<br />
Même principe pour les nuls et défaites.</p>
<p>Et vous, quelle solution vous préférez, 1 ou 2 ?</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Access SQL] Modifier un tri</title>
		<link>https://blog.developpez.com/f-leb/p10240/access/access_sql_modifier_un_tri</link>
		<comments>https://blog.developpez.com/f-leb/p10240/access/access_sql_modifier_un_tri#comments</comments>
		<pubDate>Wed, 31 Aug 2011 21:01:16 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[SQL Access]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je voudrais les pays classés par ordre alphabétique à l’exception de la France qui serait en tête de liste : 1ère solution : avec une requête UNION SELECT t.idpays, &#160; &#160; &#160; &#160; &#160;t.nompays &#160; FROM &#160; (SELECT 0 AS indextri, &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;idpays, &#160; &#160; &#160; &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je voudrais les pays classés par ordre alphabétique à l’exception de la  France qui serait en tête de liste :</p>
<p>     <img src="http://blog.developpez.com/media/blog8_trialpha.PNG" width="361" height="140" alt="" /><br />
<span id="more-8"></span><br />
<strong>1ère solution :</strong> avec une requête UNION</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT t.idpays, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;t.nompays &nbsp;<br />
FROM &nbsp; (SELECT 0 AS indextri, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;idpays, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nompays &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; FROM &nbsp; pays &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; WHERE &nbsp;nompays = &quot;France&quot; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; UNION ALL &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; SELECT 1 AS indextri, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;idpays, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;nompays &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; FROM &nbsp; pays &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; WHERE &nbsp;nompays &lt;&gt; &quot;France&quot;) AS t &nbsp;<br />
ORDER &nbsp;BY t.indextri, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t.nompays;</div></div>
<p><strong>2ème solution:</strong> avec un champ calculé placé dans la clause ORDER BY</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT pays.idpays, &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;pays.nompays &nbsp;<br />
FROM &nbsp; pays &nbsp;<br />
ORDER &nbsp;BY Iif(nompays = &quot;France&quot;, 0, 1), &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pays.nompays;</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
