<?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 &#187; Nouveautés Access 2010</title>
	<atom:link href="https://blog.developpez.com/f-leb/pcategory/access/nouveautes-access-2010/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>[Access 2010] Programmer des contraintes avec les évènements de tables (macro de données)</title>
		<link>https://blog.developpez.com/f-leb/p9640/access/programmer_des_contraintes_avec_les_even</link>
		<comments>https://blog.developpez.com/f-leb/p9640/access/programmer_des_contraintes_avec_les_even#comments</comments>
		<pubDate>Thu, 06 Jan 2011 19:13:34 +0000</pubDate>
		<dc:creator><![CDATA[f-leb]]></dc:creator>
				<category><![CDATA[Access]]></category>
		<category><![CDATA[Nouveautés Access 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Access dans sa version 2010 dispose enfin d’un mécanisme s’apparentant aux triggers (déclencheurs) bien connus chez les SGBD poids lourds (SQL Server, Oracle,…). Prenons un exemple avec le schéma des relations : Étant donné un découpage de la région en territoires comportant des adresses. Les territoires sont attribués à des colporteurs et dans le cadre [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Access dans sa version 2010 dispose enfin d’un mécanisme s’apparentant aux triggers (déclencheurs) bien connus chez les SGBD poids lourds (SQL Server, Oracle,…).<br />
<img src="http://blog.developpez.com/media/trigger1.png" width="189" height="203" alt="" /><br />
<span id="more-1"></span></p>
<p>Prenons un exemple avec le schéma des relations :<br />
<img src="http://blog.developpez.com/media/trigger2.png" width="605" height="292" alt="" /></p>
<p>Étant donné un découpage de la région en territoires comportant des adresses.<br />
Les territoires sont attribués à des colporteurs et dans le cadre de leurs attributions, ceux-ci effectuent des visites.</p>
<p>Les contraintes à vérifier ici sont les suivantes :</p>
<blockquote><p><strong>C1)</strong> Une visite effectuée dans le cadre d’une attribution doit être réalisée parmi les adresses faisant partie des adresses du territoire attribué<br />
<strong>C2)</strong> On ne rend pas visite à une adresse si la seule personne qui y habite est un colporteur.
</p></blockquote>
<p>La contrainte à programmer est donc sur le couple {idAttribution, idAdresse} de la table Visite.</p>
<p><strong>Une première tentative…</strong></p>
<p>La seule contrainte C1 peut être assurée grâce au jeu de l’intégrité référentielle en modifiant le schéma (adresses et attributions identifiées relativement au territoire):<br />
<img src="http://blog.developpez.com/media/trigger3.png" width="604" height="311" alt="" /></p>
<p>Pas forcément simple à gérer au niveau de l’IHM et il reste encore la contrainte C2 à programmer.</p>
<p><strong>2ème tentative  avec une macro de données :</strong></p>
<p>Enregistrons une première requête,<br />
<img src="http://blog.developpez.com/media/trigger4.png" width="605" height="232" alt="" /><br />
qui retourne les couples (adresse, attribution) possibles. J&rsquo;ai retiré les occurrences où l&rsquo;adresse est celle d&rsquo;un colporteur (critère PersonneQuiEstColporteur.idPersonne Est Null).</p>
<p>Sur l&rsquo;évènement « Avant Modification » de la table Visite, on écrit la macro commentée suivante:<br />
<img src="http://blog.developpez.com/media/trigger5.png" width="605" height="330" alt="" /></p>
<p>On teste…<br />
<img src="http://blog.developpez.com/media/trigger6.png" width="398" height="215" alt="" /></p>
<p>Soit l’adresse n°4 ne fait pas partie du territoire de l’attribution n°3, soit elle en fait éventuellement partie mais c’est un colporteur qui est enregistré à cette adresse.</p>
<p>CQFD : l’action de donnée « DéclencherErreur » invalide la saisie/modification de la visite n°12 dans la table.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
