<?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 User</title>
	<atom:link href="https://blog.developpez.com/user/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/user</link>
	<description></description>
	<lastBuildDate>Sun, 04 Nov 2012 14:08:02 +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>Créer un planning des statistiques</title>
		<link>https://blog.developpez.com/user/p11472/access/creer-un-planning-des-statistiques</link>
		<comments>https://blog.developpez.com/user/p11472/access/creer-un-planning-des-statistiques#comments</comments>
		<pubDate>Sun, 04 Nov 2012 14:08:02 +0000</pubDate>
		<dc:creator><![CDATA[User]]></dc:creator>
				<category><![CDATA[Access]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/user/?p=6</guid>
		<description><![CDATA[Objectif On souhaite afficher sur 1 planning la somme des montants journaliers avec en lignes les mois et en colonnes les jours du mois. On dispose pour cela d&#8217;1 table &#171;&#160;T_Facture&#160;&#187; contenant 4 champs : N° : clé primaire DateFacture : type Date PU : type Monétaire Volume : type Numérique Et de la requête analyse croisée qui donne le résultat demandé : TRANSFORM Sum(PU*Volume) AS Montant SELECT Format([DateFacture],&#34;mmm-yyyy&#34;) AS Mois FROM T_Facture GROUP BY [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Objectif</strong></p>
<p>On souhaite afficher sur 1 planning la somme des montants journaliers avec en lignes les mois et en colonnes les jours du mois.</p>
<p>On dispose pour cela d&rsquo;1 table &laquo;&nbsp;T_Facture&nbsp;&raquo; contenant 4 champs : </p>
<ul>
<li>N° : clé primaire</li>
<li>DateFacture : type Date</li>
<li>PU : type Monétaire</li>
<li>Volume : type Numérique</li>
<p>Et de la requête analyse croisée qui donne le résultat demandé :</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">TRANSFORM Sum(PU*Volume) AS Montant<br />
SELECT Format([DateFacture],&quot;mmm-yyyy&quot;) AS Mois<br />
FROM T_Facture<br />
GROUP BY Format([DateFacture],&quot;mmm-yyyy&quot;), Format([DateFacture],&quot;yyyy-mm&quot;)<br />
ORDER BY Format([DateFacture],&quot;yyyy-mm&quot;)<br />
PIVOT Day([DateFacture]) In (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31);</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer un semainier à partir d&#8217;une requête paramétrée</title>
		<link>https://blog.developpez.com/user/p10995/access/title_223</link>
		<comments>https://blog.developpez.com/user/p10995/access/title_223#comments</comments>
		<pubDate>Sat, 28 Apr 2012 15:09:19 +0000</pubDate>
		<dc:creator><![CDATA[User]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[SQL Access]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Objectif On souhaite afficher les activités de personnes sur 1 semainier et on dispose pour cela de 2 tables: La table &#171;&#160;T_Personne&#160;&#187; avec le numéro de la personne et son nom : NumPersonne : type Entier long (clé) NomPersonne : type Texte Et la table &#171;&#160;T_Planning&#160;&#187; contenant 10 champs : NumPersonne : type Entier long (clé) Annee : type Entier (clé) NumSemaine : type Entier (clé) Lundi : type Texte Mardi : type Texte Mercredi [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Objectif</strong></p>
<p>On souhaite afficher les activités de personnes sur 1 semainier et on dispose pour cela de 2 tables: </p>
<p>La table &laquo;&nbsp;T_Personne&nbsp;&raquo; avec le numéro de la personne et son nom :</p>
<ul>
<li>NumPersonne : type Entier long (clé)</li>
<li>NomPersonne : type Texte</li>
</ul>
<p>Et la table &laquo;&nbsp;T_Planning&nbsp;&raquo; contenant 10 champs :</p>
<ul>
<li>NumPersonne : type Entier long (clé)</li>
<li>Annee : type Entier (clé)</li>
<li>NumSemaine : type Entier (clé)</li>
<li>Lundi : type Texte</li>
<li>Mardi : type Texte</li>
<li>Mercredi : type Texte</li>
<li>Jeudi : type Texte</li>
<li>Vendredi : type Texte</li>
<li>Samedi : type Texte</li>
<li>Dimanche : type Texte</li>
</ul>
<p>Pour atteindre notre objectif, on va réaliser une requête paramétrée avec en lignes les informations concernant les personnes, en colonnes les jours de la semaine, et à l&rsquo;intersection les activités.</p>
<p>Cette requête sera alors facilement exploitable comme source d&rsquo;un formulaire.</p>
<p><strong>Marche à suivre</strong></p>
<p><strong><em>1) Création de la requête paramétrée</em></strong></p>
<p>L&rsquo;étape suivant consiste à créer une requête &laquo;&nbsp;R_Plan&nbsp;&raquo;, basée sur la table &laquo;&nbsp;T_Planning&nbsp;&raquo;, qui affiche les activités des jours de la semaine identifiée par les paramètres [Forms]![F_Planning]![Annee] et [Forms]![F_Planning]![NumSemaine], qui sont en fait des références aux contrôles situés sur le formulaire &laquo;&nbsp;F_Planning&nbsp;&raquo; :</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">PARAMETERS &nbsp;[Forms]![F_Planning]![Annee] &nbsp;Value, [Forms]![F_Planning]![NumSemaine] Value; <br />
SELECT NumPersonne, Annee, NumSemaine, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche <br />
FROM T_Planning <br />
WHERE ((Annee=[Forms]![F_Planning]![Annee]) AND (NumSemaine=[Forms]![F_Planning]![NumSemaine]));</div></div>
<p><strong><em>2) Afficher toutes les personnes</em></strong></p>
<p>Cette étape consiste à afficher toutes les personnes en en-têtes de lignes, y compris celles qui n&rsquo;ont pas eu d&rsquo;activité au cours de la période. On crée donc une requête &laquo;&nbsp;R_Planning&nbsp;&raquo; basée sur la table &laquo;&nbsp;T_Personne&nbsp;&raquo; et sur la dernière requête &laquo;&nbsp;R_Plan&nbsp;&raquo; et qui réalise une jointure gauche entre la table &laquo;&nbsp;T_Personne&nbsp;&raquo; et la requête &laquo;&nbsp;R_Plan&nbsp;&raquo; sur le champ &laquo;&nbsp;NumPersonne&nbsp;&raquo; :</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_Personne.NumPersonne, T_Personne.NomPersonne, R_Plan.* <br />
FROM T_Personne LEFT JOIN R_Plan ON T_Personne.NumPersonne = R_Plan.NumPersonne <br />
ORDER BY T_Personne.NumPersonne;</div></div>
<p><strong><em>3) Création du sous-formulaire &laquo;&nbsp;SF_Planning&nbsp;&raquo;</em></strong></p>
<p>Ce formulaire en mode continu ou feuille de données possède comme source la requête &laquo;&nbsp;R_Planning&nbsp;&raquo;.<br />
Il affiche en ligne les personnes et en colonnes les jours de la semaine.<br />
Il est intégré au formulaire principal.</p>
<p>Pour mettre à jour les champ [Annee] et [NumSemaine] on ajoutera, sur l&rsquo;évènement <strong>Avant MAJ</strong>, le code suivant :</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">Private Sub Form_BeforeUpdate(Cancel As Integer) <br />
[Annee] = Forms!F_Planning!Annee <br />
[NumSemaine] = Forms!F_Planning!NumSemaine <br />
&nbsp;<br />
End Sub</div></div>
<p><strong><em>4) Création du formulaire principal &laquo;&nbsp;F_Planning&nbsp;&raquo;</em></strong></p>
<p>Ce formulaire contiendra, en plus du sous-formulaire, les contrôles (zones de texte ou listes déroulantes) nommés &laquo;&nbsp;Annee&nbsp;&raquo; pour l&rsquo;année, et &laquo;&nbsp;NumSemaine&nbsp;&raquo; pour le numéro de semaine.<br />
On ajoutera une commande pour rafraichir le sous formulaire sur l&rsquo;évènement <strong>Après MAJ</strong> des 2 contrôles :</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">Private Sub Annee_AfterUpdate() <br />
Me!SF_Planning.requery <br />
End Sub <br />
&nbsp;<br />
Private Sub NumSemaine_AfterUpdate() <br />
Me!SF_Planning.requery <br />
End Sub</div></div>
<p><strong>Conclusion</strong></p>
<p>Vous pouvez facilement adapter cet exemple à votre cas en changeant au besoin les noms des champs et des contrôles.</p>
<p>Notez que les données peuvent être directement mise à jour sur le planning.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Afficher un planning au moyen d&#8217;une requête analyse croisée</title>
		<link>https://blog.developpez.com/user/p10992/access/afficher_un_planning_au_moyen_d_une_requ</link>
		<comments>https://blog.developpez.com/user/p10992/access/afficher_un_planning_au_moyen_d_une_requ#comments</comments>
		<pubDate>Fri, 27 Apr 2012 15:37:27 +0000</pubDate>
		<dc:creator><![CDATA[User]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[SQL Access]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Objectif On souhaite afficher les activités de personnes sur 1 planning et on dispose pour cela de 2 tables : La table &#171;&#160;T_Personne&#160;&#187; avec le numéro de la personne et son nom : NumPersonne : clé primaire NomPersonne : type Texte Et la table &#171;&#160;T_Planning&#160;&#187; contenant 4 champs : id : clé primaire DateDebut : type Date DateFin : type Date Activite : type Texte NumPersonne : clé étrangère Pour atteindre notre objectif, on va [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Objectif</strong></p>
<p>On souhaite afficher les activités de personnes sur 1 planning et on dispose pour cela de 2 tables : </p>
<p>La table &laquo;&nbsp;T_Personne&nbsp;&raquo; avec le numéro de la personne et son nom :</p>
<ul>
<li>NumPersonne : clé primaire</li>
<li>NomPersonne : type Texte</li>
</ul>
<p>Et la table &laquo;&nbsp;T_Planning&nbsp;&raquo; contenant 4 champs :</p>
<ul>
<li>id : clé primaire</li>
<li>DateDebut : type Date</li>
<li>DateFin : type Date</li>
<li>Activite : type Texte</li>
<li>NumPersonne : clé étrangère</li>
</ul>
<p>Pour atteindre notre objectif, on va réaliser une requête analyse croisée avec en en-têtes de lignes les informations concernant les personnes, en en-têtes de colonnes les indices des jours et à l&rsquo;intersection les activités.</p>
<p>Cette requête sera alors facilement exploitable comme source d&rsquo;un formulaire.</p>
<p><strong>Marche à suivre</strong></p>
<p><strong><em>1) Définition des indices de colonnes</em></strong></p>
<p>Tout d&rsquo;abord, il nous faut définir le nombre de colonnes, le nombre de jours à afficher dans la requête analyse croisée, normalement 31.<br />
Pour cela, on doit créer une table &laquo;&nbsp;T_Jour&nbsp;&raquo; contenant les indices des 31 jours (1,2,3&#8230;31).</p>
<p><strong><em>2) Génération des 31 dates</em></strong></p>
<p>Puis, il nous faut générer les dates correspondant aux 31 indices partant d&rsquo;une date entrée en paramètre d&rsquo;une requête.<br />
On crée donc une requête paramétrée &laquo;&nbsp;R_Jour&nbsp;&raquo;, basée sur la table précédente et qui affiche les 31 jours à partir du jour <strong>[Jour1]</strong> passé en paramètre.</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">PARAMETERS [Jour1] DateTime; <br />
SELECT T_Jour.Jour, [Jour1]+[Jour]-1 AS DateJ <br />
FROM T_Jour;</div></div>
<p>Notez que le paramètre <strong>[Jour1]</strong> peut aussi bien être un contrôle dans un formulaire.</p>
<p><strong><em>3) Générer les jours intermédiaires entre les dates de début et de fin</em></strong></p>
<p>L&rsquo;étape suivant consiste à créer une requête &laquo;&nbsp;R_Plan&nbsp;&raquo;, basée sur la requête &laquo;&nbsp;R_Jour&nbsp;&raquo; et la table &laquo;&nbsp;T_Planning&nbsp;&raquo;, qui affiche tous les jours à planifier, y compris les jours intermédiaires entre les dates de début et de fin :</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_Planning.*, R_Jour.DateJ <br />
FROM R_Jour, T_Planning <br />
WHERE (R_Jour.DateJ BETWEEN [DateDebut] AND [DateFin]);</div></div>
<p><strong><em>4) Afficher toutes les personnes</em></strong></p>
<p>L&rsquo;avant dernière étape consiste à afficher toutes les personnes, y compris celles qui n&rsquo;ont pas eu d&rsquo;activité au cours de la période. On crée donc une requête &laquo;&nbsp;R_Planning&nbsp;&raquo; basée sur la table &laquo;&nbsp;T_Personne&nbsp;&raquo; et sur la dernière requête &laquo;&nbsp;R_Plan&nbsp;&raquo; et qui réalise une jointure gauche entre la table &laquo;&nbsp;T_Personne&nbsp;&raquo; et la requête &laquo;&nbsp;R_Plan&nbsp;&raquo; sur le champ &laquo;&nbsp;NumPersonne&nbsp;&raquo; :</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_Personne.NumPersonne, T_Personne.NomPersonne, R_Plan.[DateJ] AS Jour, R_Plan.Activite AS Activite <br />
FROM T_Personne LEFT JOIN R_Plan ON T_Personne.NumPersonne = R_Plan.NumPersonne <br />
ORDER BY T_Personne.NumPersonne;</div></div>
<p><strong><em>5) Créer la requête analyse croisée</em></strong></p>
<p>Enfin, on va réaliser une requête croisée basée sur la table &laquo;&nbsp;T_Personne&nbsp;&raquo; et sur la dernière requête &laquo;&nbsp;R_Planning&nbsp;&raquo; et qui affiche, en lignes les informations des personnes, et en colonnes les indices des 31 jours partant du 1er jour passé en paramètre :</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">TRANSFORM First(Activite) AS Activite <br />
SELECT NumPersonne, NomPersonne <br />
FROM R_Planning <br />
GROUP BY NumPersonne, NomPersonne <br />
ORDER BY NumPersonne <br />
PIVOT DateDiff(&quot;d&quot;,[Jour1],[Jour])+1 In (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31);</div></div>
<p>La clause <strong>Pivot</strong> désigne les en-têtes de colonnes et l&rsquo;opérateur <strong>In</strong> permet de fixer les colonnes : Ici, la requête comportera 31 colonnes (1,2..31). </p>
<p>L&rsquo;expression DateDiff(&laquo;&nbsp;d&nbsp;&raquo;,[Jour1],[Jour])+1 renvoie l&rsquo;<strong>indice du jour</strong> partant du 1er jour passé en paramètre.</p>
<p><strong>Conclusion</strong></p>
<p>Vous pouvez facilement adapter cet exemple à votre cas et utiliser le résultat dans un formulaire en mode continu.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
