﻿<?xml version="1.0" encoding="UTF-8"?>
<!--RSS generated by Windows SharePoint Services V3 RSS Generator on 07/09/2010 14:31:13-->
<?xml-stylesheet type="text/xsl" href="/Linq/_layouts/RssXslt.aspx?List=86c26ce7-c935-41ee-874a-290c2a90e0fa" version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Linq : Messages</title>
    <link>http://www.dominiqueverriere.com/Linq/Lists/Billets/AllPosts.aspx</link>
    <description>Flux RSS pour la liste Messages.</description>
    <lastBuildDate>Tue, 07 Sep 2010 12:31:13 GMT</lastBuildDate>
    <generator>Windows SharePoint Services V3 RSS Generator</generator>
    <ttl>60</ttl>
    <image>
      <title>Linq : Messages</title>
      <url>/Linq/_layouts/images/homepage.gif</url>
      <link>http://www.dominiqueverriere.com/Linq/Lists/Billets/AllPosts.aspx</link>
    </image>
    <item>
      <title>Fonctions de type table avec LINQ</title>
      <link>http://www.dominiqueverriere.com/Linq/Lists/Billets/ViewPost.aspx?ID=8</link>
      <description><![CDATA[<div><b>Corps:</b> <div class=ExternalClassABBCFB82C2864A11A6F0F77B485EC746><p><span style="color:#548dd4;font-family:Arial;font-size:14pt"><strong>Position du besoin :
</strong></span></p><p><span style="font-family:Arial;font-size:12pt">Je souhaite faire une page ASP avec les récompenses à donner dans une course à pied.
</span></p><p><span style="font-family:Arial;font-size:12pt">Mais je dois visualiser <span style="text-decoration:underline">toutes</span> les récompenses possibles, qu'elles soient paramétrées pour cette courses ou non.
</span></p><p><span style="font-family:Arial;font-size:12pt">J'ai déterminé par avance une liste des récompenses que les gestionnaires peuvent donner :
</span></p><p><span style="font-family:Arial;font-size:12pt">Voici les tables utilisées :
</span></p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde1.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">Par exemple je dois avoir
</span></p><div><table style="border-collapse:collapse" border=0><colgroup><col style="width:212px"><col style="width:212px"><col style="width:212px"></colgroup><tbody valign=top><tr><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">Catégorie</span></p></td><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">Place</span></p></td><td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">Donner cette récompense</span></p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">CAF</span></p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">1</span></p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">Oui</span></p></td></tr><tr><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">CAF</span></p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">2</span></p></td><td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt"><p><span style="font-family:Arial;font-size:12pt">Non</span></p></td></tr></tbody></table></div><p>
 </p><p><span style="font-family:Arial;font-size:12pt">Obtenir cette liste est un cas d'utilisation de produit cartésien :
</span></p><p><span style="font-family:Arial;font-size:12pt">En effet il suffit de faire la combinaison de toutes les récompenses possible et de les joindre (en externe) avec les récompenses données dans la course.
</span></p><p>
 </p><p><span style="color:#548dd4;font-family:Arial;font-size:14pt"><strong>La fonction de type table :
</strong></span></p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">C'est là que la fonction de type table intervient :
</span></p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde2.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">Voici le code :
</span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">USE</span>
			<span style="color:teal">[Digitime2008]
</span></span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:#548dd4">create</span>
			<span style="color:blue">function</span>
			<span style="color:teal">[dbo]</span><span style="color:gray">.</span><span style="color:teal">[ftRecompensesParType]</span><span style="color:blue">
			</span><span style="color:gray">(</span><span style="color:teal">@iNoCourse</span>
			<span style="color:blue">int</span><span style="color:gray">)
</span></span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">returns</span>
			<span style="color:teal">@tRecompense</span>
			<span style="color:blue">TABLE</span>
		</span></p><p><span style="color:gray;font-family:Courier New;font-size:10pt">(
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">NoCourse</span>
			<span style="color:blue">int</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">NoTypeRecompense</span>
			<span style="color:blue">int</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">NomTypeRecompense</span>
			<span style="color:blue">varchar</span><span style="color:gray">(</span>80<span style="color:gray">),
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">Categorie</span>
			<span style="color:blue">varchar</span><span style="color:gray">(</span>3<span style="color:gray">),
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">Place</span>
			<span style="color:blue">smallint</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">Gere</span>
			<span style="color:blue">bit</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">NoRecompense</span>
			<span style="color:blue">int</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">NomRecompense</span>
			<span style="color:blue">varchar</span><span style="color:gray">(</span>250<span style="color:gray">),
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">Sponsor</span>
			<span style="color:blue">varchar</span><span style="color:gray">(</span>250<span style="color:gray">),
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">ModeClassement</span>
			<span style="color:blue">smallint</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">DtMajUsr</span>
			<span style="color:blue">datetime</span><span style="color:gray">)
</span></span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">as
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">begin
</span></span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">insert</span>
			<span style="color:blue">into</span>
			<span style="color:teal">@tRecompense</span><span style="color:blue">
			</span><span style="color:gray">(</span><span style="color:teal">NoCourse</span><span style="color:gray">,</span><span style="color:teal">NoTypeRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">NomTypeRecompense</span><span style="color:gray">,</span><span style="color:teal">Categorie</span><span style="color:gray">,</span><span style="color:teal">Place</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">Gere</span><span style="color:gray">,</span><span style="color:teal">NoRecompense</span><span style="color:gray">,</span><span style="color:teal">NomRecompense</span><span style="color:gray">,</span><span style="color:teal">Sponsor</span><span style="color:gray">,</span><span style="color:teal">ModeClassement</span><span style="color:gray">,</span><span style="color:teal">DtMajUsr</span><span style="color:gray">)
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">select</span>    <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoCourse</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoTypeRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">tr</span><span style="color:gray">.</span><span style="color:teal">Libelle</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NomTypeRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Categorie</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Categorie</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Place</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">case</span>
			<span style="color:blue">when</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoRecompense</span>
			<span style="color:gray">is</span>
			<span style="color:gray">null</span>
			<span style="color:blue">then</span> 0
</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:blue">else</span> 1
</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">end</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Gere</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NomRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NomRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Sponsor</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Sponsor</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">ModeClassement</span>
			<span style="color:blue">as</span>
			<span style="color:teal">ModeClassement</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">DtMajUsr</span>
			<span style="color:blue">as</span>
			<span style="color:teal">DtMajUsr
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">     <span style="color:blue">from</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">     </span><span style="color:gray">(</span><span style="color:blue">select</span>
			<span style="color:teal">@iNoCourse</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoCourse</span><span style="color:gray">,</span>2 <span style="color:blue">as</span>
			<span style="color:teal">NoTypeRecompense</span><span style="color:gray">,</span><span style="color:teal">Categorie</span><span style="color:gray">,</span>
			<span style="color:teal">p</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Place</span>
			<span style="color:blue">from</span>
			<span style="color:teal">dbo</span><span style="color:gray">.</span><span style="color:teal">Categorie
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">cross</span>
			<span style="color:gray">join
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">dbo</span><span style="color:gray">.</span><span style="color:teal">ftPlagesDePlaces</span><span style="color:blue">
			</span><span style="color:gray">(</span>1<span style="color:gray">,</span>3<span style="color:gray">)</span>
			<span style="color:teal">p
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">where</span>
			<span style="color:teal">NoCourse</span>
			<span style="color:gray">=</span>
			<span style="color:teal">@iNoCourse
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">)</span>
			<span style="color:teal">rca
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">left</span>
			<span style="color:gray">outer</span>
			<span style="color:gray">join</span>
			<span style="color:teal">Recompense</span>
			<span style="color:teal">rcc
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">on</span>    <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:gray">and
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">and</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Categorie</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Categorie</span>
			<span style="color:gray">and
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Place
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">left</span>
			<span style="color:gray">outer</span>
			<span style="color:gray">join</span>
			<span style="color:teal">TypeRecompense</span>
			<span style="color:teal">tr
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">on</span>
			<span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">=</span>
			<span style="color:teal">tr</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense
</span></span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">union
</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">select</span>    <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoCourse</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoTypeRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">tr</span><span style="color:gray">.</span><span style="color:teal">Libelle</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NomTypeRecompense</span><span style="color:gray">,</span>    
</span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Categorie</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Categorie</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Place</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">case</span>
			<span style="color:blue">when</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoRecompense</span>
			<span style="color:gray">is</span>
			<span style="color:gray">null</span>
			<span style="color:blue">then</span> 0
</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:blue">else</span> 1
</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">end</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Gere</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NomRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NomRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Sponsor</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Sponsor</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">ModeClassement</span>
			<span style="color:blue">as</span>
			<span style="color:teal">ModeClassement</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">DtMajUsr</span>
			<span style="color:blue">as</span>
			<span style="color:teal">DtMajUsr
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">     <span style="color:blue">from</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">     </span><span style="color:gray">(</span><span style="color:blue">select</span>
			<span style="color:teal">@iNoCourse</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoCourse</span><span style="color:gray">,</span>4 <span style="color:blue">as</span>
			<span style="color:teal">NoTypeRecompense</span><span style="color:gray">,null</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Categorie</span><span style="color:gray">,</span>
			<span style="color:teal">p</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Place</span>
			<span style="color:blue">from</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">dbo</span><span style="color:gray">.</span><span style="color:teal">ftPlagesDePlaces</span><span style="color:blue">
			</span><span style="color:gray">(</span>1<span style="color:gray">,</span>8<span style="color:gray">)</span>
			<span style="color:teal">p
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">)</span>
			<span style="color:teal">rca
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">left</span>
			<span style="color:gray">outer</span>
			<span style="color:gray">join</span>
			<span style="color:teal">Recompense</span>
			<span style="color:teal">rcc
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">on</span>    <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:gray">and
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">and</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Place
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">left</span>
			<span style="color:gray">outer</span>
			<span style="color:gray">join</span>
			<span style="color:teal">TypeRecompense</span>
			<span style="color:teal">tr
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">on</span>
			<span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">=</span>
			<span style="color:teal">tr</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense
</span></span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">union
</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">select</span>    <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoCourse</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoTypeRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">tr</span><span style="color:gray">.</span><span style="color:teal">Libelle</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NomTypeRecompense</span><span style="color:gray">,</span>    
</span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Categorie</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Categorie</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Place</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">case</span>
			<span style="color:blue">when</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoRecompense</span>
			<span style="color:gray">is</span>
			<span style="color:gray">null</span>
			<span style="color:blue">then</span> 0
</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:blue">else</span> 1
</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">end</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Gere</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NomRecompense</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NomRecompense</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Sponsor</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Sponsor</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">ModeClassement</span>
			<span style="color:blue">as</span>
			<span style="color:teal">ModeClassement</span><span style="color:gray">,
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">DtMajUsr</span>
			<span style="color:blue">as</span>
			<span style="color:teal">DtMajUsr
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">     <span style="color:blue">from</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">     </span><span style="color:gray">(</span><span style="color:blue">select</span>
			<span style="color:teal">@iNoCourse</span>
			<span style="color:blue">as</span>
			<span style="color:teal">NoCourse</span><span style="color:gray">,</span>5 <span style="color:blue">as</span>
			<span style="color:teal">NoTypeRecompense</span><span style="color:gray">,null</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Categorie</span><span style="color:gray">,</span>
			<span style="color:teal">p</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:blue">as</span>
			<span style="color:teal">Place</span>
			<span style="color:blue">from</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:teal">dbo</span><span style="color:gray">.</span><span style="color:teal">ftPlagesDePlaces</span><span style="color:blue">
			</span><span style="color:gray">(</span>1<span style="color:gray">,</span>8<span style="color:gray">)</span>
			<span style="color:teal">p
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">)</span>
			<span style="color:teal">rca
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">left</span>
			<span style="color:gray">outer</span>
			<span style="color:gray">join</span>
			<span style="color:teal">Recompense</span>
			<span style="color:teal">rcc
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">on</span>    <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoCourse</span>
			<span style="color:gray">and
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">and</span>
		</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">Place</span>
			<span style="color:gray">=</span>
			<span style="color:teal">rcc</span><span style="color:gray">.</span><span style="color:teal">Place
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:gray">left</span>
			<span style="color:gray">outer</span>
			<span style="color:gray">join</span>
			<span style="color:teal">TypeRecompense</span>
			<span style="color:teal">tr
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">on</span>
			<span style="color:teal">rca</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense</span>
			<span style="color:gray">=</span>
			<span style="color:teal">tr</span><span style="color:gray">.</span><span style="color:teal">NoTypeRecompense
</span></span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">return</span>
		</span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">end
</span></p><p>
 </p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">Explications :
</span></p><p><span style="font-family:Arial;font-size:12pt">J'ai utilisé une autre fonction de type table qui me donne des places de places entre deux valeurs :
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">function</span>
			<span style="color:teal">[dbo]</span><span style="color:gray">.</span><span style="color:teal">[ftPlagesDePlaces]</span><span style="color:gray">(</span><span style="color:teal">@iPremierePlace</span>
			<span style="color:blue">int</span><span style="color:gray">,</span><span style="color:teal">@iDernierePlace</span>
			<span style="color:blue">int</span><span style="color:gray">)
</span></span></p><p><span style="font-family:Courier New;font-size:10pt"><span style="color:blue">returns</span>
			<span style="color:teal">@tPlace</span>
			<span style="color:blue">TABLE</span>
		</span></p><p><span style="color:gray;font-family:Courier New;font-size:10pt">(
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:teal">Place</span>
			<span style="color:blue">int</span>
			<span style="color:gray">NOT</span>
			<span style="color:gray">NULL
</span></span></p><p><span style="color:gray;font-family:Courier New;font-size:10pt">)
</span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">AS
</span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">begin
</span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">declare</span>
			<span style="color:teal">@Place</span>
			<span style="color:blue">int
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">set</span>
			<span style="color:teal">@Place</span>
			<span style="color:gray">=</span>
			<span style="color:teal">@iPremierePlace
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">    <span style="color:blue">while</span>
			<span style="color:teal">@Place</span>
			<span style="color:gray">&lt;=</span>
			<span style="color:teal">@iDernierePlace
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:blue">begin
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:blue">insert</span>
			<span style="color:blue">into</span>
			<span style="color:teal">@tPlace</span><span style="color:blue">
			</span><span style="color:gray">(</span><span style="color:teal">Place</span><span style="color:gray">)</span>
			<span style="color:blue">values </span><span style="color:gray">(</span><span style="color:teal">@Place</span><span style="color:gray">)
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">            <span style="color:blue">set</span>
			<span style="color:teal">@Place</span>
			<span style="color:gray">=</span>
			<span style="color:teal">@Place</span>
			<span style="color:gray">+</span> 1
</span></p><p><span style="font-family:Courier New;font-size:10pt">        <span style="color:blue">end
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">return
</span></span></p><p><span style="color:blue;font-family:Courier New;font-size:10pt">end
</span></p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">Ce genre de fonction est très pratique pour tout un tas de choses…
</span></p><p><span style="font-family:Arial;font-size:12pt">Voilà donc ma partie SQL terminée : j'ai une liste de toutes les récompenses possibles avec un indicateur (Gere de type bit) qui me dit si cette récompense est donnée dans cette course.
</span></p><p>
 </p><p>
 </p><p><span style="color:#4f81bd;font-family:Arial;font-size:14pt"><strong>Passage à la partie LINQ :
</strong></span></p><p><span style="font-family:Arial;font-size:12pt">Là, je dois avouer que j'ai du m'y reprendre à trous fois pour arriver à l'objectif :
</span></p><ol><li><span style="font-family:Arial;font-size:12pt">Au lieu de ma fonction de type table, j'utilisais une procédure stockée : échec car le rendu est un single result (dionc une ligne) par défaut. Je me suis fixé comme règle de ne pas réécrire la définition des objets LINQ
</span></li><li><span style="font-family:Arial;font-size:12pt">J'ai fait une fonction de type table en ligne (toujours sur la même requête vue ci-dessus) : nouvel échec, le type des données en retour étant aléatoire (je ne sais toujours pas comment LINQ déternie à la volée les types de données d'un SELECT)
</span></li><li><span style="font-family:Arial;font-size:12pt">Je suis arrivé à la fonction typée vue plus haut, qui elle ne pose aucun problème
</span></li></ol><p> 
 </p><p><span style="font-family:Arial;font-size:12pt">Une fois écrit dans SQL, l'utilisation avec LINQ n'est que du bonheur !
</span></p><p><span style="font-family:Arial;font-size:12pt">La définition :
</span></p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde3.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p>
 </p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">L'utilisation au sein d'un objet métier :
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:gray">///</span><span style="color:green">
			</span><span style="color:gray">&lt;summary&gt;
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:gray">///</span><span style="color:green"> Rend toutes les Recompenses d'une course
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:gray">///</span><span style="color:green">
			</span><span style="color:gray">&lt;/summary&gt;
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:gray">///</span><span style="color:green">
			</span><span style="color:gray">&lt;returns&gt;&lt;/returns&gt;
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">public</span>
			<span style="color:blue">static</span>
			<span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">ClRecompense</span>&gt; LireRecompenses(<span style="color:blue">int</span> iNoCourse)
</span></p><p><span style="font-family:Courier New;font-size:10pt">    {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">try
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">ClRecompense</span>&gt; tClRecompense = <span style="color:blue">new</span>
			<span style="color:#2b91af">List</span>&lt;<span style="color:#2b91af">ClRecompense</span>&gt;();
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:#2b91af">DataClassesDataContext</span> db = <span style="color:blue">new</span>
			<span style="color:#2b91af">DataClassesDataContext</span>();
</span></p><p>
 </p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">var</span> Recompenses = <span style="color:blue">from</span> r <span style="color:blue">in</span> db.ftRecompensesParType(iNoCourse)
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">orderby</span> r.NoTypeRecompense,r.Categorie, r.Place
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">select</span> r;
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">if</span> (Recompenses.Count() &lt; 1)
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">return</span> tClRecompense;
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">foreach</span> (<span style="color:blue">var</span> lnqR <span style="color:blue">in</span> Recompenses)
</span></p><p><span style="font-family:Courier New;font-size:10pt">            {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:#2b91af">ClRecompense</span> clR = <span style="color:blue">new</span>
			<span style="color:#2b91af">ClRecompense</span>();
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.NoRecompense = <span style="color:#2b91af">Utilitaires</span>.NullEnInt(lnqR.NoRecompense);
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">if</span> (lnqR.NoRecompense != <span style="color:blue">null</span>)
</span></p><p><span style="font-family:Courier New;font-size:10pt">                    clR.Gerer = <span style="color:blue">true</span>;
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">else
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">                    clR.Gerer = <span style="color:blue">false</span>; 
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">                clR.NoCourse = <span style="color:#2b91af">Utilitaires</span>.NullEnInt(lnqR.NoCourse);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.Categorie = <span style="color:#2b91af">Utilitaires</span>.NullEnString(lnqR.Categorie);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.NoTypeRecompense = <span style="color:#2b91af">Utilitaires</span>.NullEnInt(lnqR.NoTypeRecompense);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.NomTypeRecompense = <span style="color:#2b91af">Utilitaires</span>.NullEnString(lnqR.NomTypeRecompense);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.NomRecompense = <span style="color:#2b91af">Utilitaires</span>.NullEnString(lnqR.NomRecompense);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.Place = <span style="color:#2b91af">Utilitaires</span>.NullEnInt16(lnqR.Place);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.Sponsor = <span style="color:#2b91af">Utilitaires</span>.NullEnString(lnqR.Sponsor);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.ModeClassement = <span style="color:#2b91af">Utilitaires</span>.NullEnInt16(lnqR.ModeClassement);
</span></p><p><span style="font-family:Courier New;font-size:10pt">                clR.DtMajUsr = <span style="color:#2b91af">Utilitaires</span>.NullEnDateTime(lnqR.DtMajUsr);
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">                tClRecompense.Add(clR);
</span></p><p><span style="font-family:Courier New;font-size:10pt">            }
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">return</span> tClRecompense;
</span></p><p><span style="font-family:Courier New;font-size:10pt">        }
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">catch</span> (<span style="color:#2b91af">Exception</span> Erreur)
</span></p><p><span style="font-family:Courier New;font-size:10pt">        {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">throw</span>
			<span style="color:blue">new</span>
			<span style="color:#2b91af">Exception</span>(<span style="color:#a31515">&quot;LireRecompenses &quot;</span> + Erreur.Message);
</span></p><p><span style="font-family:Courier New;font-size:10pt">        }
</span></p><p><span style="font-family:Courier New;font-size:10pt">    }
</span></p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">L'utilisation de cet objet métier au sein d'une page ASP :
</span></p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde4.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p>
 </p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde5.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde6.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p><img src="/Linq/Lists/Photos/022409_0559_Fonctionsde7.png" alt=""><span style="font-family:Arial;font-size:12pt">
		</span></p><p><span style="font-family:Arial;font-size:12pt">Le paramètre étant attrapé à la volée ici :
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">protected</span>
			<span style="color:blue">void</span> odsRecompenses_Selecting(<span style="color:blue">object</span> sender, <span style="color:#2b91af">ObjectDataSourceSelectingEventArgs</span> e)
</span></p><p><span style="font-family:Courier New;font-size:10pt">    {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">try
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">        {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">if</span> (AssistantValidation.ActiveStepIndex == 3)
</span></p><p><span style="font-family:Courier New;font-size:10pt">                e.InputParameters[<span style="color:#a31515">&quot;iNoCourse&quot;</span>] = <span style="color:blue">this</span>.clCourse.NoCourse;
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">else
</span></span></p><p><span style="font-family:Courier New;font-size:10pt">                e.InputParameters[<span style="color:#a31515">&quot;iNoCourse&quot;</span>] = -1;
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">        }
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:blue">catch</span> (<span style="color:#2b91af">Exception</span> Erreur)
</span></p><p><span style="font-family:Courier New;font-size:10pt">        {
</span></p><p><span style="font-family:Courier New;font-size:10pt">
			<span style="color:#2b91af">Label</span> lblErreur = (<span style="color:#2b91af">Label</span>)Master.FindControl(<span style="color:#a31515">&quot;lblErreur&quot;</span>);
</span></p><p><span style="font-family:Courier New;font-size:10pt">            lblErreur.Text = <span style="color:#a31515">&quot;odsRecompenses_Selecting &quot;</span> + Erreur.Message;
</span></p><p><span style="font-family:Courier New;font-size:10pt">        }
</span></p><p>
 </p><p><span style="font-family:Courier New;font-size:10pt">    }
</span></p><p>
 </p><p><span style="font-family:Arial;font-size:12pt">On voit bien dans ce post la tendance de l'informatique actuelle :
</span></p><p><span style="font-family:Arial;font-size:12pt">Une combinaison de technologies qui permet avec le minimum d'efforts et le maximum de maintenabilité d'arriver au résultat.
</span></p></div></div>
<div><b>Catégorie:</b> Fonctions de type table avec LINQ</div>
<div><b>Publié:</b> 24/02/2009 06:58</div>
]]></description>
      <author>Compte système</author>
      <category>Fonctions de type table avec LINQ</category>
      <pubDate>Tue, 24 Feb 2009 05:58:23 GMT</pubDate>
      <guid isPermaLink="true">http://www.dominiqueverriere.com/Linq/Lists/Billets/ViewPost.aspx?ID=8</guid>
    </item>
  </channel>
</rss>