<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Blogs - Le Blog de DSR57 - Programmation WinDev par dsr57</title>
		<link>https://www.developpez.net/forums/blogs/25867-dsr57/</link>
		<description>Developpez.com, le Club des Développeurs et IT Pro</description>
		<language>fr</language>
		<lastBuildDate>Sat, 18 Apr 2026 12:01:04 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.jpg</url>
			<title>Forum du club des développeurs et IT Pro - Blogs - Le Blog de DSR57 - Programmation WinDev par dsr57</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/</link>
		</image>
		<item>
			<title><![CDATA[WinDev : les temps d'impression]]></title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b1401/windev-temps-d-impression/</link>
			<pubDate>Sun, 19 Jun 2016 16:57:28 GMT</pubDate>
			<description>WinDev : évolution ou...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="5"><font color="#696969">WinDev : évolution ou régression du temps d'impression</font></font><br />
<br />
Dans ce billet nous allons voir comment à évoluer le temps de traitements des impressions de la version 19 à 21 de WinDev. Ce billet permet uniquement d'avoir un constat et une comparaison chiffrée de ces temps d'impressions (ou d'export PDF) dans les différentes versions de WinDev, il n'apporte pas de solution. Mais, si après la lecture de celui-ci vous avez des propositions, des axes de réflexions ou voir des solutions... je suis preneur. <br />
<br />
<font size="4">Contexte technique</font><br />
<hr /><br />
<br />
Ce paragraphe liste les points de détails techniques. <br />
<br />
<ul><li style="">Version : WinDev 19, 20, 21.</li><li style="">Traitements : impression d'un état de 8 pages avec fond PDF. Chaque page à un fond PDF différent. la dégradation des temps de traitements proviendrait des fonds d'états.</li><li style="">Type de traitement : impression directe sur imprimante, export PDF.</li><li style="">Valeurs : 10 tests par type d'impression, exprimées en millisecondes.</li></ul><br />
<br />
<br />
<font size="4">Résultats</font><br />
<hr /><br />
<br />
Ce paragraphe liste les résultats obtenus lors des tests. Ceux-ci ont été effectués sur le même ordinateur avec une base de données locale nettoyée ne comportant uniquement les informations nécessaires pour les tests. Les temps ont été calculés en faisant la différence de l'heure système avant et après l'appel des fonctions iImprimeEtat.<br />
<br />
<font size="3">version 19</font><br />
<br />
<div style="margin-left:40px"><br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">Test 1</td>
<td class="cms_table_grid_td">Test 2</td>
<td class="cms_table_grid_td">Test 3</td>
<td class="cms_table_grid_td">Test 4</td>
<td class="cms_table_grid_td">Test 5</td>
<td class="cms_table_grid_td">Test 6</td>
<td class="cms_table_grid_td">Test 7</td>
<td class="cms_table_grid_td">Test 8</td>
<td class="cms_table_grid_td">Test 9</td>
<td class="cms_table_grid_td">Test 10</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"><img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Imprimante</td>
<td class="cms_table_grid_td">878</td>
<td class="cms_table_grid_td">809</td>
<td class="cms_table_grid_td">808</td>
<td class="cms_table_grid_td">805</td>
<td class="cms_table_grid_td">815</td>
<td class="cms_table_grid_td">830</td>
<td class="cms_table_grid_td">819</td>
<td class="cms_table_grid_td">812</td>
<td class="cms_table_grid_td">828</td>
<td class="cms_table_grid_td">819</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"><img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> PDF</td>
<td class="cms_table_grid_td">857</td>
<td class="cms_table_grid_td">601</td>
<td class="cms_table_grid_td">580</td>
<td class="cms_table_grid_td">582</td>
<td class="cms_table_grid_td">582</td>
<td class="cms_table_grid_td">577</td>
<td class="cms_table_grid_td">577</td>
<td class="cms_table_grid_td">576</td>
<td class="cms_table_grid_td">579</td>
<td class="cms_table_grid_td">572</td>
</tr>
</table></div>
<br />
<img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Moyenne : 822 <br />
<img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> Moyenne : 608  </div><br />
<font size="3">version 20</font><br />
<br />
<div style="margin-left:40px"><br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">Test 1</td>
<td class="cms_table_grid_td">Test 2</td>
<td class="cms_table_grid_td">Test 3</td>
<td class="cms_table_grid_td">Test 4</td>
<td class="cms_table_grid_td">Test 5</td>
<td class="cms_table_grid_td">Test 6</td>
<td class="cms_table_grid_td">Test 7</td>
<td class="cms_table_grid_td">Test 8</td>
<td class="cms_table_grid_td">Test 9</td>
<td class="cms_table_grid_td">Test 10</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"><img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Imprimante</td>
<td class="cms_table_grid_td">1227</td>
<td class="cms_table_grid_td">1217</td>
<td class="cms_table_grid_td">1222</td>
<td class="cms_table_grid_td">1270</td>
<td class="cms_table_grid_td">1222</td>
<td class="cms_table_grid_td">1246</td>
<td class="cms_table_grid_td">1251</td>
<td class="cms_table_grid_td">1238</td>
<td class="cms_table_grid_td">1226</td>
<td class="cms_table_grid_td">1223</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"><img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> PDF</td>
<td class="cms_table_grid_td">1580</td>
<td class="cms_table_grid_td">1560</td>
<td class="cms_table_grid_td">1558</td>
<td class="cms_table_grid_td">1561</td>
<td class="cms_table_grid_td">1561</td>
<td class="cms_table_grid_td">1559</td>
<td class="cms_table_grid_td">1572</td>
<td class="cms_table_grid_td">1575</td>
<td class="cms_table_grid_td">1571</td>
<td class="cms_table_grid_td">1598</td>
</tr>
</table></div>
</div><br />
<div style="margin-left:40px"><br />
<img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Moyenne : 1234 <br />
<img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> Moyenne : 1569</div><br />
<font size="3">version 21</font><br />
<br />
<div style="margin-left:40px"><div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">Test 1</td>
<td class="cms_table_grid_td">Test 2</td>
<td class="cms_table_grid_td">Test 3</td>
<td class="cms_table_grid_td">Test 4</td>
<td class="cms_table_grid_td">Test 5</td>
<td class="cms_table_grid_td">Test 6</td>
<td class="cms_table_grid_td">Test 7</td>
<td class="cms_table_grid_td">Test 8</td>
<td class="cms_table_grid_td">Test 9</td>
<td class="cms_table_grid_td">Test 10</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"><img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Imprimante</td>
<td class="cms_table_grid_td">1024</td>
<td class="cms_table_grid_td">1009</td>
<td class="cms_table_grid_td">1009</td>
<td class="cms_table_grid_td">1012</td>
<td class="cms_table_grid_td">1037</td>
<td class="cms_table_grid_td">1022</td>
<td class="cms_table_grid_td">1014</td>
<td class="cms_table_grid_td">1021</td>
<td class="cms_table_grid_td">1015</td>
<td class="cms_table_grid_td">1019</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"><img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> PDF</td>
<td class="cms_table_grid_td">883</td>
<td class="cms_table_grid_td">866</td>
<td class="cms_table_grid_td">865</td>
<td class="cms_table_grid_td">869</td>
<td class="cms_table_grid_td">903</td>
<td class="cms_table_grid_td">865</td>
<td class="cms_table_grid_td">871</td>
<td class="cms_table_grid_td">865</td>
<td class="cms_table_grid_td">892</td>
<td class="cms_table_grid_td">867</td>
</tr>
</table></div>
<br />
<img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Moyenne : 1019<br />
<img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> Moyenne : 867 </div><br />
<font size="4">Représentation graphique</font><br />
<hr /><br />
<br />
Ce paragraphe permet d'avoir une représentation visuelle des résultats du paragraphe &quot;Résultats&quot;.<br />
<br />
<div style="text-align: center;"><br />
<img src="https://www.developpez.net/forums/attachments/p213311d1466341046/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/chartgo.png/" border="0" alt="Nom : ChartGo.png
Affichages : 403
Taille : 20,1 Ko"  style="float: CONFIG" /><br />
<br />
<img src="https://www.developpez.net/forums/attachments/p213313d1466341816/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/chartgo-2-.png/" border="0" alt="Nom : ChartGo(2).png
Affichages : 421
Taille : 19,2 Ko"  style="float: CONFIG" /><br />
</div><br />
<font size="4">Comparaison des valeurs</font><br />
<hr /><br />
<br />
Dans ce paragraphe nous allons comparer les valeurs moyennes entre les versions de WinDev. <br />
<br />
<font size="3">WinDev 19 - 20 </font><br />
<br />
<div style="margin-left:40px"><img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Augmentation de 50 % du temps de traitement<br />
<img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> Augmentation de 158 % du temps de traitement</div><br />
<font size="3">WinDev 19 - 21 </font><br />
<div style="margin-left:40px"><br />
<img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Augmentation de 24 % du temps de traitement<br />
<img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> Augmentation de 42 % du temps de traitement</div><br />
<font size="3">WinDev 20 - 21 </font><br />
<br />
<div style="margin-left:40px"><img src="https://www.developpez.net/forums/attachments/p211789d1465034229/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_imp.png/" border="0" alt="Nom : Img_Imp.png
Affichages : 317
Taille : 1,3 Ko"  style="float: CONFIG" /> Diminution de 17 % du temps de traitement<br />
<img src="https://www.developpez.net/forums/attachments/p211790d1465034255/c-cpp/outils-c-cpp/visual-cpp/mfc/multi-selection-combobox/img_pdf.jpg/" border="0" alt="Nom : Img_Pdf.jpg
Affichages : 288
Taille : 1,3 Ko"  style="float: CONFIG" /> Diminution de 45 % du temps de traitement</div><br />
Nous constatons une augmentation des temps de traitements qu'ils soient pour une impression ou pour un export PDF depuis la version 19.  Avec la version 21, nous constatons des augmentations plus faibles par rapport à la version 19 et une amélioration en les comparant avec la version 20. <br />
<br />
<font size="4">Conclusion</font><br />
<hr /><br />
<br />
Ces augmentations sont significatives et ne passent pas inaperçu pour les utilisateurs, effectivement ils se plaignent de cette régression et nous n'avons aucune solution de contournement à leurs proposer et aucune solution technique au niveau du développement. Ce problème a été évoqué avec un des intervenants présent au TDF et un ticket d'incident a été ouvert au support technique pour la version 20, malgré plusieurs propositions de correctifs aucuns ne donnent satisfaction... dossier à suivre. Comme suggéré en introduction si vous avez des propositions, n'hésitez pas, je me ferais une joie de les prendre en compte et de les tester. <br />
<br />
<br />
Bon dev à tous :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b1401/windev-temps-d-impression/</guid>
		</item>
		<item>
			<title>WinDev : reproduire la dernière action sur une champ ou un groupe de champ</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b1262/windev-reproduire-derniere-action-champ-groupe-champ/</link>
			<pubDate>Wed, 30 Mar 2016 15:14:36 GMT</pubDate>
			<description>WinDev :  reproduire la...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#696969">WinDev :  reproduire la dernière action sur un champ ou un groupe de champs</font></font><br />
<br />
<font size="3">Contexte technique et fonctionnel</font> <br />
<br />
Contexte technique : WinDev 15 et supérieures (WinDev Mobile, WebDev).<br />
<br />
Dans ce billet je souhaite évoquer une fonctionnalité peu connue (avis personnel car je l'ai apprise il y a peu de temps) et celle-ci permet de gagner du temps.<br />
WinDev nous permet de répéter la dernière action sur un champ ou un groupe de champs, c'est à dire si vous effectuez des modifications sur un champ vous pouvez les répercuter facilement et rapidement sur un autre champ (ou sur un ensemble de champ). Ci-dessous des exemples de contexte dans lesquels celle-ci pourrait être utilisée : <br />
<ul><li style="">erreur de conception d'IHM, erreur de masque de saisie</li><li style="">modification du cahier des charges, possibilité de saisir des montant négatifs</li><li style="">ajout d'une amélioration, changement du fond de champ selon la saisie</li><li style=""> ...</li></ul><br />
<br />
<font size="3">Exemple</font> <br />
<br />
Pour comprendre mieux l'intérêt de cette fonctionnalité nous allons la mettre en application à travers un exemple, nous avons une fenêtre permettant de saisir des montants pour chaque mois de l'année. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p205402d1459352352/c-cpp/c/execl-rend-main/image1.jpg/" border="0" alt="Nom : Image1.jpg
Affichages : 1087
Taille : 63,4 Ko"  style="float: CONFIG" /></div><br />
Les champs ont le masque de saisie : 999 999, 99<br />
<br />
Suite aux premiers tests nous devons effectuer des modifications : <br />
<ul><li style="">laisser la possibilité de saisir des montant négatifs ;</li><li style="">changer la couleur de fond si le montant est inférieur à 0.</li></ul><br />
<br />
Pour le premier point nous allons modifier le masque dans la description du champ et pour le deuxième nous allons utiliser les &quot;eYe magnet&quot;. <br />
Nous effectuons les modifications sur le premier champs. <br />
<br />
<b>Modification du masque de saisie</b><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p205407d1459352742/c-cpp/c/execl-rend-main/image2.jpg/" border="0" alt="Nom : Image2.jpg
Affichages : 1057
Taille : 85,4 Ko"  style="float: CONFIG" /></div><br />
<b>Ajout de la couleur de fond avec &quot;eYe Magnet&quot;</b><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p205408d1459352811/c-cpp/c/execl-rend-main/image3.jpg/" border="0" alt="Nom : Image3.jpg
Affichages : 956
Taille : 73,2 Ko"  style="float: CONFIG" /></div><br />
A ce stade nous avons répercuté les demandes de modifications sur un champ, reste à faire les autres. Il est possible de le faire champs par champs, solution rébarbative avec des possibilités d'erreur ou utiliser la fonctionnalité &quot;reproduire la dernière action sur une champ ou un groupe de champs&quot;. <br />
<br />
Pour utiliser celle-ci sélectionner tous les champs restant à modifier et sélectionner l'option &quot;reproduire la dernière action sur une champ ou un groupe de champs&quot; accessible à partir du menu &quot;Edition&quot; ou la touche de raccourci &quot;F4&quot;. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p205409d1459353250/c-cpp/c/execl-rend-main/image5.jpg/" border="0" alt="Nom : Image5.jpg
Affichages : 1048
Taille : 139,4 Ko"  style="float: CONFIG" /></div><br />
WinDev applique les modifications sur les champs. <br />
<div style="text-align: center;"><br />
<img src="https://www.developpez.net/forums/attachments/p205410d1459353382/c-cpp/c/execl-rend-main/image6.jpg/" border="0" alt="Nom : Image6.jpg
Affichages : 995
Taille : 79,8 Ko"  style="float: CONFIG" /></div><br />
C'est terminé :) . <br />
<br />
<font size="3">Conclusion</font><br />
<br />
Voilà à travers ce billet nous venons de voir l'intérêt et la mise en application de la fonctionnalité &quot;reproduire la dernière action sur une champ ou un groupe de champs&quot;<br />
<br />
Bon dev à tous :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b1262/windev-reproduire-derniere-action-champ-groupe-champ/</guid>
		</item>
		<item>
			<title>WinDev : Savoir si un champ Combo est ouvert ou fermé</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b827/windev-savoir-champ-combo-ouvert-ferme/</link>
			<pubDate>Wed, 28 Oct 2015 10:28:17 GMT</pubDate>
			<description>WinDev : Savoir si une combo...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#696969">WinDev : Savoir si une combo est ouvert ou fermée</font></font><br />
<br />
Contexte technique : WinDev 20 et antérieures.<br />
<br />
WinDev met à notre disposition un ensemble de propriétés sur les champ de type Combo : <a href="http://doc.pcsoft.fr/?1013014&amp;name=proprietes_associees_aux_combo" target="_blank">Propriétés associées aux combo</a><br />
<br />
Mais il n'existe pas de propriété pour déterminer si un champ combo est ouvert ou fermé. Vous trouverez ci-dessous le code d'une fonction savoir si un champ combo est ouvert ou fermé : <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Connaitre si une combo est ouverte ou ferm&eacute;e</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] ComboOuverte (&lt;ps_champ&gt; est cha&icirc;ne)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	ps_champ (cha&icirc;ne ANSI) : Nom du champ de type combo</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	Type ind&eacute;termin&eacute; : 0 si combo est ferm&eacute;e - 1 si combo est ouverte</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// Si ComboOuverte(&quot;Cbx_ListeCliebt&quot;) Alors</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> ComboOuverte<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typComboAVS <span style="font-weight:700;">OU</span>  <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typComboSNS <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">RENVOYER</span> <span class="br0">&#40;</span><span style="color: #0000ff;">SendMessage</span><span class="br0">&#40;</span><span style="color: #0000ff;">Handle</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>,<span style="color: #cc66cc;">343</span> ,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type combo/liste d&eacute;roulante&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> <span style="color: #339933;">Faux</span></pre></td></tr></table></pre>
</div></blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b827/windev-savoir-champ-combo-ouvert-ferme/</guid>
		</item>
		<item>
			<title>WinDev : Développer avec un ecran haute définition</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b824/windev-developper-ecran-haute-definition/</link>
			<pubDate>Mon, 19 Oct 2015 09:42:39 GMT</pubDate>
			<description>Configurer WinDev pour un...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Configurer WinDev pour un écran à haute résolution, 4K</font></font><br />
<br />
Dans ce billet, j'explique comment configurer WinDev pour développer avec des écrans à haute définition, 4K, ...<br />
<b>Contexte technique : WinDev 20 et antérieure.</b> <br />
<br />
Avec l'évolution des résolutions d'écran, la démocratisation de la haute définition et le renouvellement des ordinateurs ; vous avez surement un ordinateur portable (le problème se pose moins sur les desktop) avec une résolution élevée voir un écran 4k. Cette configuration est agréable pour les photos, vidéos mais pose certains problèmes pour développer en WinDev. Effectivement vous avez votre environnement de développement petit : <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p190505d1445247286/c-cpp/outils-c-cpp/cppbuilder/transmision-tableau-parametre/config_windev_4k.jpg/" border="0" alt="Nom : ConFig_WinDev_4K.jpg
Affichages : 1589
Taille : 109,1 Ko"  style="float: CONFIG" /> <br />
<font size="2"><i>Fig. 1 : WinDev sur un écran 4K</i></font></div><br />
C'est difficile pour ne pas dire impossible de travailler une journée complète comme ca. WinDev permet de laisser gérer l'affichage de son EDI par WinDows et ainsi avoir des taille d'écran &quot;normal&quot; pour développer. Il faut activer l'option  &quot;Laisser Windows gérer le DPI de l'éditeur&quot; accessible au chemin suivant : Outils --&gt; Options --&gt; Options générales de WinDev --&gt; Onglet Général. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p190501d1445245767/c-cpp/outils-c-cpp/cppbuilder/transmision-tableau-parametre/config_windev_4k_2.jpg/" border="0" alt="Nom : ConFig_WinDev_4K_2.jpg
Affichages : 1367
Taille : 96,9 Ko"  style="float: CONFIG" /><br />
<font size="2"><i>Fig. 2 : Fenêtre de configuration des options de WinDev</i></font></div><br />
Vous devez redémarrez WinDev pour prendre en compte ce changement et vous pouvez de nouveau continuer votre développement :).<br />
<br />
Pc-Soft avec la version 21 propose la prise en charge en natif de ces résolutions. Cf nouveauté <b>042 : Support des écrans 4k en développement</b>. <br />
<br />
Bon dev à tous :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b824/windev-developper-ecran-haute-definition/</guid>
		</item>
		<item>
			<title>WinDev 21 et ses nouveautés</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b808/windev-21-nouveautes/</link>
			<pubDate>Fri, 16 Oct 2015 14:56:01 GMT</pubDate>
			<description>PC-Soft annonce la version 21...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">PC-Soft annonce la version 21 de ses EDI avec 921 nouveautés. <br />
<br />
<br />
Comme chaque année, Pc-Soft nous annonce en ce début d'automne la nouvelle version de ses EDI : WinDev, WebDev, WinDev mobile, cette version 21 est présentée avec 921 nouveautés. Et comme chaque année, je livre mon avis sur ces nouveautés, celles que je trouve intéressantes. Attention, cette liste est établie par rapport mes propres besoins, vous en trouverez surement d’autres.<br />
<br />
<b><font size="3">027 : WDAnalytics </font></b><br />
<br />
Un outil intéressant qui permettra d'avoir une analyse de l'utilisation des logiciels par les utilisateurs. Cela devrait permettre d'avoir un retour d'expérience utilisateur et d'améliorer les interfaces. <br />
On peut reprocher le faite que cette nouveauté prenne les point de 027 à 040.<br />
<br />
<font size="3"><b>055 : Générateur de gabarit </b></font><br />
<br />
Outil intéressant car aujourd'hui la création d'un gabarit n'est pas une mince affaire. <br />
Cela me permettra de reprendre un vieux projet ...<br />
<br />
<font size="3"><b>070 : PDF/A</b></font><br />
<br />
la demande de ce format devient récurrente pour ne pas dire systématique dans certains projets professionnels<br />
<br />
<b><font size="3">072 : Etat avec formulaire PDF en fond : meilleure qualié</font></b><br />
<br />
Cela évitera toutes les manipulations et calcul pour éviter la perte de qualité. <br />
<br />
<b><font size="3">089 -090 : Code cible conditionnel</font></b><br />
<br />
Non négligeable quand l'in effectue des solutions cross plate forme avec certaines spécificités différentes. <br />
<br />
<b><font size="3">103 : ICalendar</font></b><br />
<br />
Cette nouveauté facilitera les automatismes avec les messageries.<br />
<br />
<br />
<br />
<b><font size="3">Conclusion</font></b><br />
<hr /><br />
<br />
Avant de donner mon ressenti sur cette version, il faut préciser que les sorties des nouvelles versions des OS de WinDows et IOS ont du donner pas mal de travail à Pc-Soft, mais je trouve le contenu de cette version globalement décevante. Peut être que le chiffre de 921 est très nettement sur estimé... Rendez vous l'année prochaine<br />
<br />
Bon dev :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b808/windev-21-nouveautes/</guid>
		</item>
		<item>
			<title>WinDev : fonctions de recherche dans un champ Table</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b789/windev-fonctions-recherche-champ-table/</link>
			<pubDate>Tue, 06 Oct 2015 20:16:40 GMT</pubDate>
			<description>Nouvelles fonctions de...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font color="#808080"><font size="4">Nouvelles fonctions de recherche dans un champ Table</font></font><br />
<br />
<font size="4"><b>Contexte technique et fonctionnel</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p189577d1444162388/applications/developpement-2d-3d-jeux/api-graphiques/opengl/glreadpixels/contextetechnique.jpg/" border="0" alt="Nom : contexteTechnique.jpg
Affichages : 5818
Taille : 27,5 Ko"  style="float: CONFIG" /></div><br />
Je commence ce billet par une affirmation, lors de la programmation sur l'EDI WinDev, nous avons tous utiliser le champ Table (Si non un petit coup d'oeil sur l'aide en ligne est nécessaire pour continuer ce billet : <a href="http://doc.pcsoft.fr/?1013224" target="_blank">champ Table</a>) et nous avons programmé celui-ci avec les fonctions : <br />
<ul><li style=""><a href="http://doc.pcsoft.fr/?3074017&amp;name=tableajoute_fonction" target="_blank">TableAjoute</a> ;</li><li style=""><a href="http://doc.pcsoft.fr/?3074006&amp;name=tableajouteligne_fonction" target="_blank">TableAjouteLigne</a> ;</li><li style=""><a href="http://doc.pcsoft.fr/?3074021&amp;name=tableoccurrence_fonction" target="_blank">TableOccurrence</a> ;</li><li style=""><a href="http://doc.pcsoft.fr/?3074031&amp;name=tableselectplus_fonction" target="_blank">TableSelectPlus</a> ;</li><li style=""><a href="http://doc.pcsoft.fr/?3074015&amp;name=tablecherche_fonction" target="_blank">TableCherche</a> ;</li><li style="">...</li></ul><br />
<br />
Dans ce billet, nous allons voir les recherches dans un champ Table, WinDev nous met à disposition la fonction TableCherche, d'après l'aide en ligne, cette fonction effectue une recherche un élément dans une colonne. Mais celle-ci ne nous permet pas <br />
<ol class="decimal"><li style="">la recherche d'un élément dans toutes les colonnes de la table ;</li><li style="">la recherche d'un élément dans un ensemble de colonne ;</li><li style="">la recherche d'un ensemble d'éléments dans une colonne ;</li><li style="">la recherche d'un ensemble d'éléments dans un ensemble de colonnes.</li></ol><br />
<br />
Afin de rendre moins abstrait ces possibilités manquantes, prenons un exemple. Une fenêtre de recherche client composée d'une table et différents champs de recherche. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p189498d1444075972/applications/developpement-2d-3d-jeux/api-graphiques/opengl/glreadpixels/listedesclients.jpg/" border="0" alt="Nom : ListedesClients.jpg
Affichages : 5293
Taille : 195,2 Ko"  style="float: CONFIG" /><br />
<font size="2"><i>Fig. 1 : exemple de fenêtre servant de jeu d'essai</i></font></div><br />
Nous voulons pouvoir rechercher tous les clients avec les critères suivants : <br />
<ul><li style="">avoir une numéro de téléphone portable (point 2) ;</li><li style="">habiter dans les départements 57 et 54 (point 3) ;</li><li style="">habiter dans les départements du 57, 54 et avoir un téléphone professionnel portable (point 4).</li></ul><br />
<br />
Pour illustrer le point 1, prenons l'exemple d'un tableau affichant le résultat d'un jeu de dé. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p189572d1444159452/applications/developpement-2d-3d-jeux/api-graphiques/opengl/glreadpixels/listedesclients2.jpg/" border="0" alt="Nom : ListedesClients2.jpg
Affichages : 4559
Taille : 123,9 Ko"  style="float: CONFIG" /><br />
<font size="2"><i>Fig. 2 : exemple de fenêtre servant de jeu d'essai</i></font></div><br />
Nous voulons pouvoir rechercher les joueurs qui ont eu un 6. <br />
<br />
Les fonctions utilisent le type de variable <a href="http://doc.pcsoft.fr/fr-FR/?1000020967&amp;name=TYPE_Champ" target="_blank">Champ</a>, les fonctions suivantes sont disponible pour les versions de <b>WinDev : 19 et supérieures</b>.<br />
<br />
<font size="4"><b>Les fonctions  </b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p189574d1444161971/applications/developpement-2d-3d-jeux/api-graphiques/opengl/glreadpixels/photo_programmation_web.png/" border="0" alt="Nom : photo_programmation_web.png
Affichages : 4461
Taille : 172,3 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3"><div style="margin-left:40px">Rechercher un élément dans toutes les colonnes</div></font></b><br />
<br />
Cette fonction permet de rechercher un élément dans toutes les colonnes d'une table.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Effectue une recherche dans toutes les colonnes d'un champ table.</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableCherche (&lt;pc_champ&gt; est champ, &lt;pv_ValeurRecherche&gt; est variant [, &lt;pb_rechercheIdentique&gt; est bool&eacute;en [, &lt;pi_indiceDepart&gt; est entier]])</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom du champ table ou de la colonne.</span>
<span style="color: #808080;">//	pv_ValeurRecherche (variant) : valeur recherch&eacute;e.</span>
<span style="color: #808080;">//	pb_rechercheIdentique (bool&eacute;en - valeur par d&eacute;faut=1) : Vrai recherche &agrave; l'identique. Faux recherche g&eacute;n&eacute;rique, dans ce cas, tous les &eacute;l&eacute;ments commen&ccedil;ant par &lt;&Eacute;l&eacute;ment recherch&eacute;&gt; sont retourn&eacute;s</span>
<span style="color: #808080;">//	pi_indiceDepart (entier - valeur par d&eacute;faut=1) : Num&eacute;ro de la ligne de d&eacute;part de la recherche dans la table.</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	entier : Indice de l'&eacute;l&eacute;ment trouv&eacute;, -1 si aucun &eacute;l&eacute;ment ne correspond &agrave; la recherche.</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableCherche(Tab_listeInfoClient,&quot;mail&quot;,faux,1).</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> <span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>,pv_ValeurRecherche <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Variant</span>,pb_rechercheIdentique <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>=<span style="color: #339933;">Vrai</span>,pi_indiceDepart <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>=<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
li_indiceDepart, li_nbColonne <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
li_nbColonne=<span style="color: #cc66cc;">1</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
		<span style="font-weight:700;">TANTQUE</span> <span style="color: #0000ff;">TableEnum&egrave;reColonne</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">Nom</span>,li_nbColonne<span class="br0">&#41;</span>&lt;&gt;<span style="color: #FF0000;">&quot;&quot;</span>
			li_nbColonne++
		<span style="font-weight:700;">FIN</span>
		li_nbColonne--
&nbsp;
		<span style="font-weight:700;">SI</span> pi_indiceDepart&gt;<span style="color: #cc66cc;">0</span> <span style="font-weight:700;">ALORS</span>
			li_indiceDepart=pi_indiceDepart
		<span style="font-weight:700;">SINON</span>
			li_indiceDepart=<span style="color: #cc66cc;">1</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=li_indiceDepart <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
			<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> li_nbColonne
				<span style="font-weight:700;">SI</span> pb_rechercheIdentique <span style="font-weight:700;">ALORS</span>
					<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span>li_i,li_j<span class="br0">&#93;</span> = pv_ValeurRecherche <span style="font-weight:700;">ALORS</span>
						<span style="font-weight:700;">RENVOYER</span> li_i
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">SINON</span>
					<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">Cha&icirc;neCommencePar</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#91;</span>li_i,li_j<span class="br0">&#93;</span>,pv_ValeurRecherche,<span style="color: #339933;">ccNormal</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
						<span style="font-weight:700;">RENVOYER</span> li_i
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> -<span style="color: #cc66cc;">1</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple :</u> <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:132px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
li_resRech <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>Tab_LstResultat,<span style="color: #FF0000;">&quot;6&quot;</span>,vrai<span class="br0">&#41;</span>
<span style="font-weight:700;">TANTQUE</span> li_resRech&lt;&gt;-<span style="color: #cc66cc;">1</span>
        <span style="color: #0000ff;">Trace</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Ligne : &quot;</span>+li_resRech<span class="br0">&#41;</span>
        li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>Tab_LstResultat,<span style="color: #FF0000;">&quot;6&quot;</span>,vrai,li_resRech+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<b><font size="3"><div style="margin-left:40px">Rechecrher une valeur dans plusieurs colonnes</div></font> </b><br />
<br />
Cette fonction permet de rechercher un élément dans plusieurs colonnes d'un champ de type table.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Effectue une recherche dans plusieurs les colonnes d'un champ table.</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableCherche (&lt;pt_LstColonne&gt; est tableau, &lt;pv_ValeurRecherche&gt; est variant [, &lt;pb_rechercheIdentique&gt; est bool&eacute;en [, &lt;pi_indiceDepart&gt; est entier]])</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pt_LstColonne (tableau) : Liste des colonnes.</span>
<span style="color: #808080;">//	pv_ValeurRecherche (variant) : valeur recherch&eacute;e.</span>
<span style="color: #808080;">//	pb_rechercheIdentique (bool&eacute;en - valeur par d&eacute;faut=1) :  Vrai recherche &agrave; l'identique. Faux recherche g&eacute;n&eacute;rique, dans ce cas, tous les &eacute;l&eacute;ments commen&ccedil;ant par &lt;&Eacute;l&eacute;ment recherch&eacute;&gt; sont retourn&eacute;s.</span>
<span style="color: #808080;">//	pi_indiceDepart (entier - valeur par d&eacute;faut=1) : Num&eacute;ro de la ligne de d&eacute;part de la recherche dans la table.</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	entier : Indice de l'&eacute;l&eacute;ment trouv&eacute;, -1 si aucun &eacute;l&eacute;ment ne correspond &agrave; la recherche.</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableCherche([Col_info,col_mailperso,Col_mailPro],&quot;@&quot;,faux,1).</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> <span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>pt_LstColonne <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #0080ff;">Champ</span>,pv_ValeurRecherche <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Variant</span>,pb_rechercheIdentique <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>=<span style="color: #339933;">Vrai</span>,pi_indiceDepart <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>=<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
li_indiceDepart, li_nbColonne <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
ls_nomTable <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
lo_ChampTemp <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
li_nbColonne=<span style="color: #cc66cc;">1</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Test si le tableau en contient que des colonnes</span>
<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableauOccurrence</span><span class="br0">&#40;</span>pt_LstColonne<span class="br0">&#41;</span>
&nbsp;
	ls_nomTable=pt_LstColonne<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>..<span style="color: #339933;">NomComplet</span>
	ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
	<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> &lt;&gt; <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pt_LstColonne<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">FIN</span>	
&nbsp;
&nbsp;
<span style="font-weight:700;">SI</span> pi_indiceDepart&gt;<span style="color: #cc66cc;">0</span> <span style="font-weight:700;">ALORS</span>
	li_indiceDepart=pi_indiceDepart
<span style="font-weight:700;">SINON</span>
	li_indiceDepart=<span style="color: #cc66cc;">1</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">POUR</span> li_i=li_indiceDepart <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ls_nomTable<span class="br0">&#41;</span>
&nbsp;
	<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableauOccurrence</span><span class="br0">&#40;</span>pt_LstColonne<span class="br0">&#41;</span>
		lo_ChampTemp&lt;-pt_LstColonne<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>
		<span style="font-weight:700;">SI</span> pb_rechercheIdentique <span style="font-weight:700;">ALORS</span>
			<span style="font-weight:700;">SI</span> lo_ChampTemp<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> = pv_ValeurRecherche <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">RENVOYER</span> li_i
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">SINON</span>
			<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">Cha&icirc;neCommencePar</span><span class="br0">&#40;</span>lo_ChampTemp<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,pv_ValeurRecherche,<span style="color: #339933;">ccNormal</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">RENVOYER</span> li_i
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
&nbsp;
<span style="font-weight:700;">RENVOYER</span> -<span style="color: #cc66cc;">1</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple :</u> <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:156px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
lt_lstColonnes <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #cc66cc;">2</span> <span style="color: #0080ff;">Champ</span>
lt_lstColonnes<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span>&lt;-Col_TelPerso
lt_lstColonnes<span class="br0">&#91;</span><span style="color: #cc66cc;">2</span><span class="br0">&#93;</span>&lt;-Col_TelPro
&nbsp;
li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>lt_lstColonnes,<span style="color: #FF0000;">&quot;06&quot;</span>,<span style="color: #339933;">Faux</span><span class="br0">&#41;</span>
<span style="font-weight:700;">TANTQUE</span> li_resRech&lt;&gt;-<span style="color: #cc66cc;">1</span>
	<span style="color: #0000ff;">Trace</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Ligne : &quot;</span>+li_resRech<span class="br0">&#41;</span>
	li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>lt_lstColonnes,<span style="color: #FF0000;">&quot;06&quot;</span>,<span style="color: #339933;">Faux</span>,li_resRech+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<b><font size="3"><div style="margin-left:40px">Rechercher une liste de valeurs dans une table (ou une colonne)</div></font></b><br />
<br />
Cette fonction permet de rechercher une liste de valeurs dans un champ de type table ou dans plusieurs colonnes.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Effectue une recherche dans un champ table ou colonne</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableCherche (&lt;pc_champ&gt; est champ, &lt;pt_LstValeurRecherche&gt; est tableau [, &lt;pb_rechercheIdentique&gt; est bool&eacute;en [, &lt;pi_indiceDepart&gt; est entier]])</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom du champ table ou de la colonne.</span>
<span style="color: #808080;">//	pt_LstValeurRecherche (tableau) : Liste des valeurs recherch&eacute;es.</span>
<span style="color: #808080;">//	pb_rechercheIdentique (bool&eacute;en - valeur par d&eacute;faut=1) : Vrai recherche &agrave; l'identique. Faux recherche g&eacute;n&eacute;rique, dans ce cas, tous les &eacute;l&eacute;ments commen&ccedil;ant par &lt;&Eacute;l&eacute;ment recherch&eacute;&gt; sont retourn&eacute;s</span>
<span style="color: #808080;">//	pi_indiceDepart (entier - valeur par d&eacute;faut=1) : Num&eacute;ro de la ligne de d&eacute;part de la recherche dans la table.</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	entier : Indice de l'&eacute;l&eacute;ment trouv&eacute;, -1 si aucun &eacute;l&eacute;ment ne correspond &agrave; la recherche.</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableCherche(Col_CodePostal,[&quot;57&quot;,&quot;55&quot;,&quot;54,&quot;88&quot;],faux,1).</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> <span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>,pt_LstValeurRecherche <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #0080ff;">Variant</span>,pb_rechercheIdentique <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>=<span style="color: #339933;">Vrai</span>,pi_indiceDepart <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>=<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
li_indiceDepart <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
		<span style="font-weight:700;">SI</span> pi_indiceDepart&gt;<span style="color: #cc66cc;">0</span> <span style="font-weight:700;">ALORS</span>
			li_indiceDepart=pi_indiceDepart
		<span style="font-weight:700;">SINON</span>
			li_indiceDepart=<span style="color: #cc66cc;">1</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=li_indiceDepart <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
			<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pc_champ..<span style="color: #339933;">NombreColonne</span>
				<span style="font-weight:700;">POUR</span> li_k=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstValeurRecherche..<span style="color: #339933;">Occurrence</span> 
&nbsp;
					<span style="font-weight:700;">SI</span> pb_rechercheIdentique <span style="font-weight:700;">ALORS</span>
						<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span>li_i,li_j<span class="br0">&#93;</span> = pt_LstValeurRecherche<span class="br0">&#91;</span>li_k<span class="br0">&#93;</span> <span style="font-weight:700;">ALORS</span>
							<span style="font-weight:700;">RENVOYER</span> li_i
						<span style="font-weight:700;">FIN</span>
					<span style="font-weight:700;">SINON</span>
						<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">Cha&icirc;neCommencePar</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#91;</span>li_i,li_j<span class="br0">&#93;</span>,pt_LstValeurRecherche<span class="br0">&#91;</span>li_k<span class="br0">&#93;</span>,<span style="color: #339933;">ccNormal</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
							<span style="font-weight:700;">RENVOYER</span> li_i
						<span style="font-weight:700;">FIN</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span> 
		<span style="color: #808080;">//-----&gt;D&eacute;claration de variables</span>
		ls_nomTable <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
&nbsp;
		ls_nomTable=pc_champ..<span style="color: #339933;">NomComplet</span>
		ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
		<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
			<span style="font-weight:700;">SI</span> pi_indiceDepart&gt;<span style="color: #cc66cc;">0</span> <span style="font-weight:700;">ALORS</span>
				li_indiceDepart=pi_indiceDepart
			<span style="font-weight:700;">SINON</span>
				li_indiceDepart=<span style="color: #cc66cc;">1</span>
			<span style="font-weight:700;">FIN</span>
&nbsp;
			<span style="font-weight:700;">POUR</span> li_i=li_indiceDepart <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ls_nomTable<span class="br0">&#41;</span>
				<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstValeurRecherche..<span style="color: #339933;">Occurrence</span> 
					<span style="font-weight:700;">SI</span> pb_rechercheIdentique <span style="font-weight:700;">ALORS</span>
						<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> = pt_LstValeurRecherche<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span> <span style="font-weight:700;">ALORS</span>
							<span style="font-weight:700;">RENVOYER</span> li_i
						<span style="font-weight:700;">FIN</span>
					<span style="font-weight:700;">SINON</span>
						<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">Cha&icirc;neCommencePar</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,pt_LstValeurRecherche<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>,<span style="color: #339933;">ccNormal</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
							<span style="font-weight:700;">RENVOYER</span> li_i
						<span style="font-weight:700;">FIN</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">SINON</span>
			<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> -<span style="color: #cc66cc;">1</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple : </u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:120px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
li_resRech <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>Col_CodePostal,<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;54&quot;</span>,<span style="color: #FF0000;">&quot;57&quot;</span><span class="br0">&#93;</span>,<span style="color: #339933;">Faux</span><span class="br0">&#41;</span>
<span style="font-weight:700;">TANTQUE</span> li_resRech&lt;&gt;-<span style="color: #cc66cc;">1</span>
	<span style="color: #0000ff;">Trace</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Ligne : &quot;</span>+li_resRech<span class="br0">&#41;</span>
	li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>Col_CodePostal,<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;54&quot;</span>,<span style="color: #FF0000;">&quot;57&quot;</span><span class="br0">&#93;</span>,<span style="color: #339933;">Faux</span>,li_resRech+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<b><font size="3"><div style="margin-left:40px">Rechercher un couple de valeurs</div></font></b><br />
<br />
Cette fonction permet de rechercher un couple de valeurs dans un couple de colonnes<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Effectue une recherche d'un couple de valeurs dans des colonnes.</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableCherche (&lt;pc_champ&gt; est champ, &lt;pt_LstValeurRecherche&gt; est tableau [, &lt;pb_rechercheIdentique&gt; est bool&eacute;en [, &lt;pi_indiceDepart&gt; est entier]])</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pt_LstColonne (tableau) : Liste des colonnes.</span>
<span style="color: #808080;">//	pt_LstValeurRecherche (tableau) : Liste des couples de valeurs recherch&eacute;es.</span>
<span style="color: #808080;">// 	pb_rechercheIdentique (bool&eacute;en - valeur par d&eacute;faut=1) : Vrai recherche &agrave; l'identique. Faux recherche g&eacute;n&eacute;rique, dans ce cas, tous les &eacute;l&eacute;ments commen&ccedil;ant par &lt;&Eacute;l&eacute;ment recherch&eacute;&gt; sont retourn&eacute;s.</span>
<span style="color: #808080;">// 	pi_indiceDepart (entier - valeur par d&eacute;faut=1) : Num&eacute;ro de la ligne de d&eacute;part de la recherche dans la table.</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	entier : Indice de l'&eacute;l&eacute;ment trouv&eacute;, -1 si aucun &eacute;l&eacute;ment ne correspond &agrave; la recherche.</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">//TableCherche([Col_codePostal,col_Ville],[]],faux,1).</span>
<span style="color: #808080;">//</span>
&nbsp;
<span style="font-weight:700;">PROCEDURE</span> <span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>pt_LstColonne <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #0080ff;">Champ</span>,pt_LstValeurRecherche <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;">dynamique</span>,pb_rechercheIdentique <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>=<span style="color: #339933;">Vrai</span>,pi_indiceDepart <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>=<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_ligneOK <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
li_indiceDepart, li_nbColonne <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
ls_nomTable <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
<span style="color: #808080;">//lo_ChampTemp est un champ</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
li_nbColonne=<span style="color: #cc66cc;">1</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Test si le tableau en contient que des colonnes</span>
<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableauOccurrence</span><span class="br0">&#40;</span>pt_LstColonne<span class="br0">&#41;</span>
&nbsp;
	ls_nomTable=pt_LstColonne<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>..<span style="color: #339933;">NomComplet</span>
	ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
	<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> &lt;&gt; <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pt_LstColonne<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">FIN</span>	
&nbsp;
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">TableauOccurrence</span><span class="br0">&#40;</span>pt_LstColonne<span class="br0">&#41;</span> = <span style="color: #0000ff;">TableauInfo</span><span class="br0">&#40;</span>pt_LstValeurRecherche,<span style="color: #339933;">tiDimension</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
	<span style="font-weight:700;">SI</span> pi_indiceDepart&gt;<span style="color: #cc66cc;">0</span> <span style="font-weight:700;">ALORS</span>
		li_indiceDepart=pi_indiceDepart
	<span style="font-weight:700;">SINON</span>
		li_indiceDepart=<span style="color: #cc66cc;">1</span>
	<span style="font-weight:700;">FIN</span>
&nbsp;
	<span style="font-weight:700;">POUR</span> li_i=li_indiceDepart <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ls_nomTable<span class="br0">&#41;</span>
		<span style="font-weight:700;">POUR</span> li_k=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableauInfo</span><span class="br0">&#40;</span>pt_LstValeurRecherche,<span style="color: #339933;">tiNombreLignes</span><span class="br0">&#41;</span>
			lb_ligneOK=<span style="color: #339933;">Vrai</span>
			<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableauOccurrence</span><span class="br0">&#40;</span>pt_LstColonne<span class="br0">&#41;</span>
				lo_ChampTemp <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>&lt;-pt_LstColonne<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>
&nbsp;
				<span style="font-weight:700;">SI</span> pb_rechercheIdentique <span style="font-weight:700;">ALORS</span>
					<span style="font-weight:700;">SI</span> lo_ChampTemp<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;&gt; pt_LstValeurRecherche<span class="br0">&#91;</span>li_k,li_j<span class="br0">&#93;</span> <span style="font-weight:700;">ALORS</span>
						lb_ligneOK=<span style="color: #339933;">Faux</span>
						<span style="font-weight:700;">SORTIR</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">SINON</span>
					<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">Cha&icirc;neCommencePar</span><span class="br0">&#40;</span>lo_ChampTemp<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,pt_LstValeurRecherche<span class="br0">&#91;</span>li_k,li_j<span class="br0">&#93;</span>,<span style="color: #339933;">ccNormal</span><span class="br0">&#41;</span>=<span style="color: #339933;">Faux</span> <span style="font-weight:700;">ALORS</span>
						lb_ligneOK=<span style="color: #339933;">Faux</span>
						<span style="font-weight:700;">SORTIR</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
&nbsp;
			<span style="font-weight:700;">SI</span> lb_ligneOK <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">SORTIR</span>
			<span style="font-weight:700;">FIN</span>
&nbsp;
		<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">SI</span> lb_ligneOK <span style="font-weight:700;">ALORS</span>
			<span style="font-weight:700;">RENVOYER</span> li_i
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #FF0000;">&quot;La dimension du tableau pass&eacute; en param&egrave;tre 1 est diff&eacute;rente de la dimension du tableau pass&eacute; en param&egrave;tre 2&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> -<span style="color: #cc66cc;">1</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple :</u> <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:192px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
lt_lstColonne <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #cc66cc;">2</span> <span style="color: #0080ff;">Champ</span>
lt_lstColonne<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span>&lt;-Col_CodePostal
lt_lstColonne<span class="br0">&#91;</span><span style="color: #cc66cc;">2</span><span class="br0">&#93;</span>&lt;-Col_TelPro
&nbsp;
lt_lstValeurs <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #cc66cc;">0</span> <span style="color: #0080ff;"><span style="font-weight:700;">par</span></span> <span style="color: #cc66cc;">2</span> <span style="color: #0080ff;">Variant</span>
lt_lstValeurs= <span class="br0">&#91;</span><span class="br0">&#91;</span><span style="color: #FF0000;">&quot;57&quot;</span>,<span style="color: #FF0000;">&quot;06&quot;</span><span class="br0">&#93;</span>,<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;54&quot;</span>,<span style="color: #FF0000;">&quot;06&quot;</span><span class="br0">&#93;</span><span class="br0">&#93;</span>
&nbsp;
li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>lt_lstColonne,lt_lstValeurs,<span style="color: #339933;">Faux</span><span class="br0">&#41;</span>
<span style="font-weight:700;">TANTQUE</span> li_resRech&lt;&gt;-<span style="color: #cc66cc;">1</span>
	<span style="color: #0000ff;">Trace</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Ligne : &quot;</span>+li_resRech<span class="br0">&#41;</span>
	li_resRech=<span style="color: #0000ff;">TableCherche</span><span class="br0">&#40;</span>lt_lstColonne,lt_lstValeurs,<span style="color: #339933;">Faux</span>,li_resRech+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="4"><b>Les exceptions</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p189576d1444162093/applications/developpement-2d-3d-jeux/api-graphiques/opengl/glreadpixels/practicetest.jpg/" border="0" alt="Nom : practiceTest.jpg
Affichages : 4203
Taille : 8,9 Ko"  style="float: CONFIG" /></div><br />
Comme vous avez pu le constater en lisant le code source des fonctions, celles-ci déclenchent des exceptions en cas de problème. Trois types d'exceptions sont gérées : <br />
<br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Code</td>
<td class="cms_table_grid_td">Message</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">1</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'existe pas</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">2</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'est pas de type table ou colonne</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">3</td>
<td class="cms_table_grid_td">Les dimensions des tableaux passés en paramètre sont différentes.</td>
</tr>
</table></div>
<br />
Pour plus d'informations sur la gestion des exceptions, consulter l'aide en ligne : <a href="http://doc.pcsoft.fr/?3034001" target="_blank">Mécanisme des exceptions générales</a>. <br />
<br />
<font size="4"><b>Conclusion</b></font><br />
<hr /><br />
<br />
Ces fonctions augmentent la possibiltié de recherche dans un champ Table. A voir, si PC-Soft intégrera ces propositions dans une future version de son EDI.<br />
<br />
Bon dev à tous  :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b789/windev-fonctions-recherche-champ-table/</guid>
		</item>
		<item>
			<title><![CDATA[WinDev : fonctions de sélection/désélection d'une colonne de type interrupteur V2]]></title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b780/windev-fonctions-selection-deselection-d-colonne-type-interrupteur-v2/</link>
			<pubDate>Mon, 28 Sep 2015 11:20:47 GMT</pubDate>
			<description>Nouvelles fonctions pour...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Nouvelles fonctions pour améliorer la gestion de sélection/désélection d'une colonne de type interrupteur dans un champ Table V2</font></font> <br />
<br />
<font size="4"><b>Contexte technique</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p188958d1443439066/environnements-developpement/delphi/bases-donnees/probleme-rafraichissement-d-bdgrid/contextetechnique.jpg/" border="0" alt="Nom : contexteTechnique.jpg
Affichages : 1654
Taille : 27,5 Ko"  style="float: CONFIG" /></div><br />
Dans le premier billet <a href="http://www.developpez.net/forums/blogs/25867-dsr57/b694/windev-fonctions-selection-deselection-colonne-type-interrupteur/" target="_blank">WinDev : fonctions de sélection/désélection d'une colonne de type interrupteur</a>, je mettais à disposition une collection de procédures facilitant la gestion d'une colonne de type interrupteur en proposant un ensemble de possibilité pour gérer la sélection/désélection. Ces fonctions : <br />
<ul><li style="">TableSelectionne</li><li style="">TableSelectionneTout</li><li style="">TableDeSelectionne</li><li style="">TableDeSelectionneTout</li></ul><br />
prenaient en premier paramètre le nom du champ sous forme de chaine de caractère. Depuis WinDev 19, un nouveau type de variable est disponible : <a href="http://doc.pcsoft.fr/fr-FR/?1000020967" target="_blank">Champ</a>. <br />
Je met à disposition une nouvelle version de ces fonctions avec ce type de variable.<br />
<br />
<b>Version de WinDev : 19 et supérieures</b><br />
<br />
<br />
<font size="4"><b>Les fonctions</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p188959d1443439097/environnements-developpement/delphi/bases-donnees/probleme-rafraichissement-d-bdgrid/photo_programmation_web.png/" border="0" alt="Nom : photo_programmation_web.png
Affichages : 722
Taille : 172,3 Ko"  style="float: CONFIG" /></div><br />
<font size="3"><b><div style="margin-left:40px">TableSelectionne</div></b></font><br />
Cette fonction permet de sélectionner plusieurs cases d'une colonnes de type interrupteur en passant les indices en paramètres.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : &lt;indiquez ici ce que fait la proc&eacute;dure&gt;</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableDeSelectionne (&lt;pc_champ&gt; est champ, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom de la colonne ou nom de la table</span>
<span style="color: #808080;">//	pt_LstIndice (tableau) : Liste des indices des lignhe s&agrave; s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	bool&eacute;en : Vrai si les indices ont &eacute;t&eacute; s&eacute;lectionn&eacute;</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableSelectionne(Col_select,[1,5,10])</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> TableDeSelectionne<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
ls_MessageErreur,ls_nomTable  <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_tableOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
&nbsp;
		ls_nomTable=pc_champ..<span style="color: #339933;">NomComplet</span>
		ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
		<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
			<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
			li_tableOccurrence=<span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
			<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
				<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
					pc_champ<span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
				<span style="font-weight:700;">SINON</span>
					<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,pc_champ..<span style="color: #339933;">NomComplet</span>,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">SINON</span>
			<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		lb_retour=<span style="color: #339933;">Vrai</span>
	<span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
		li_tableOccurrence=pc_champ..<span style="color: #339933;">Occurrence</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pc_champ..<span style="color: #339933;">NombreColonne</span>
			<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
					<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
						pc_champ<span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>,li_i<span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
					<span style="font-weight:700;">SINON</span>
						<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,pc_champ..<span style="color: #339933;">NomComplet</span>,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
				lb_retour=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">SORTIR</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<font size="3"><b><div style="margin-left:40px">TableSelectionneTout</div></b></font><br />
Cette fonction permet de sélectionner toutes les cases d'une colonne de type interrupteur.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Selectionne toutes lignes de la colonne de type interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableSelectionneTout (&lt;pc_champ&gt; est champ)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom de la table ou nom de la colonne</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	bool&eacute;en : Vrai si toutes les lignes ont &eacute;t&eacute; s&eacute;lectionn&eacute;es</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableSelectionneTout(Col_Select)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> TableSelectionneTout<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typColonne <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
			pc_champ<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">1</span>
		<span style="font-weight:700;">FIN</span>	
		lb_retour=<span style="color: #339933;">Vrai</span>
	<span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pc_champ..<span style="color: #339933;">NombreColonne</span>
			<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span>  <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
					pc_champ<span class="br0">&#91;</span>li_j,li_i<span class="br0">&#93;</span>=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">FIN</span>
				lb_retour=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">SORTIR</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<font size="3"><b><div style="margin-left:40px">TableDeselectionne</div></b></font><br />
Cette fonction permet de désélectionner toutes les cases d'une colonne de type interrupteur.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : D&eacute;s&eacute;lectionne les options des lignes pass&eacute;es en patam&egrave;tres</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableDeSelectionne (&lt;pc_champ&gt; est champ, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        pc_champ (champ) : nom de la colonne de type interrupteur ou de la table</span>
<span style="color: #808080;">//        pt_LstIndice (tableau) : Liste des indices des lignes &agrave; d&eacute;s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         bool&eacute;en :  vrai si toutes les indices pass&eacute; en param&egrave;tres ont &eacute;t&eacute; trait&eacute; avec succ&egrave;s</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableDeSelectionne(Col_Export,[1,5,10])</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> TableDeSelectionne<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
ls_MessageErreur,ls_nomTable  <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_tableOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
&nbsp;
		ls_nomTable=pc_champ..<span style="color: #339933;">NomComplet</span>
		ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
		<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
			<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
			li_tableOccurrence=<span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
			<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
				<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
					pc_champ<span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
				<span style="font-weight:700;">SINON</span>
					<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,pc_champ..<span style="color: #339933;">NomComplet</span>,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">SINON</span>
			<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		lb_retour=<span style="color: #339933;">Vrai</span>
	<span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
		li_tableOccurrence=pc_champ..<span style="color: #339933;">Occurrence</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pc_champ..<span style="color: #339933;">NombreColonne</span>
			<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
					<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
						pc_champ<span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>,li_i<span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
					<span style="font-weight:700;">SINON</span>
						<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,pc_champ..<span style="color: #339933;">NomComplet</span>,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
				lb_retour=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">SORTIR</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<font size="3"><b><div style="margin-left:40px">TableDeselectionneTout</div></b></font><br />
Cette fonction permet de désélectionner toutes les cases d'une colonne de type interrupteur.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : d&eacute;s&eacute;lectionne toutes les options d'une colonne de type interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableDeselectionneTout (&lt;pcs_champ&gt; est champ)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        pc_champ (champ) : nom de la colonne ou nom de la table</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         bool&eacute;en : vrai si toutes les options de la colonne interrupteur ont &eacute;t&eacute; d&eacute;s&eacute;lectionn&eacute;es</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableDeselectionneTout(Col_Export)</span>
<span style="color: #808080;">//       </span>
<span style="font-weight:700;">PROCEDURE</span> TableDeselectionneTout<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typColonne <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
			pc_champ<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">0</span>
		<span style="font-weight:700;">FIN</span>	
		lb_retour=<span style="color: #339933;">Vrai</span>
	<span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pc_champ..<span style="color: #339933;">NombreColonne</span>
			<span style="font-weight:700;">SI</span> pc_champ<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span>  <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
					pc_champ<span class="br0">&#91;</span>li_j,li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">0</span>
				<span style="font-weight:700;">FIN</span>
				lb_retour=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">SORTIR</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<font size="4"><b>Exceptions</b></font><br />
<hr /><br />
Pour plus de renseignements sur la gestion des exceptions , voir le billet initial <a href="http://www.developpez.net/forums/blogs/25867-dsr57/b694/windev-fonctions-selection-deselection-colonne-type-interrupteur/" target="_blank">WinDev : fonctions de sélection/désélection d'une colonne de type interrupteur</a><br />
<br />
<font size="4"><b>Conclusion</b></font><br />
<hr /><br />
Par ce billet, je viens de mettre à disposition les fonctions pour améliorer la gestion par programmation du champ Interrupteur avec le type de variable Champ. N'hésitez pas à me faire part de vos retours pour améliorer, compléter la liste de ces fonctions.<br />
A voir, si PC-Soft intégrera ces propositions dans une future version de son EDI. :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b780/windev-fonctions-selection-deselection-d-colonne-type-interrupteur-v2/</guid>
		</item>
		<item>
			<title>WinDev : fonctions de sélection/désélection des champs interrupteurs V2</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b772/windev-fonctions-selection-deselection-champs-interrupteurs-v2/</link>
			<pubDate>Tue, 22 Sep 2015 11:44:23 GMT</pubDate>
			<description>Nouvelles fonctions pour...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Nouvelles fonctions pour améliorer la gestion de sélection/désélection d'un champ Interrupteur par programmation  V2</font></font> <br />
<br />
<font size="4"><b>Contexte technique</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p188565d1442922086/general-developpement/algorithme-mathematiques/algorithmes-structures-donnees/extraction-mots-cles/contextetechnique.jpg/" border="0" alt="Nom : contexteTechnique.jpg
Affichages : 2041
Taille : 27,5 Ko"  style="float: CONFIG" /></div><br />
Dans le premier billet <a href="http://www.developpez.net/forums/blogs/25867-dsr57/b585/windev-fonctions-selection-deselection-champs-interrupteurs/" target="_blank">WinDev : fonctions de sélection/désélection des champs interrupteurs</a>, je mettais à disposition une collection de procédures facilitant la gestion d'un champ de type interrupteur en proposant un ensemble de possibilité pour gérer la sélection/désélection. Ces fonctions : <br />
<ul><li style="">InterrupteurSelectionne</li><li style="">InterrupteurSelectionneTout</li><li style="">InterrupteurDeselectionne</li><li style="">InterrupteurDeselectionneTout</li></ul><br />
prenaient en premier paramètre le nom du champ sous forme de chaine de caractère. Depuis WinDev 19, un nouveau type de variable est disponible : <a href="http://doc.pcsoft.fr/fr-FR/?1000020967" target="_blank">Champ</a>. <br />
Je met à disposition une nouvelle version de ces fonctions avec ce type de variable.<br />
<br />
<b>Version de WinDev : 19 et supérieures</b><br />
<br />
<font size="4"><b>Les fonctions</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p188566d1442922116/general-developpement/algorithme-mathematiques/algorithmes-structures-donnees/extraction-mots-cles/c0a2b08f317e98ce65d506d9c5c934f2_large.jpeg/" border="0" alt="Nom : c0a2b08f317e98ce65d506d9c5c934f2_large.jpeg
Affichages : 867
Taille : 9,1 Ko"  style="float: CONFIG" /></div><br />
<font size="3"><b><div style="margin-left:40px">InterrupteurSelectionne</div></b></font><br />
<br />
Cette fonction permet de sélectionner plusieurs options d'un champ interrupteur en passant les indices en paramètres<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
/ R&eacute;sum&eacute; : <span style="color: #339933;">Selectionne</span> les indices pass&eacute;s en param&egrave;tres
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurSelectionne (&lt;pc_champ&gt; est champ, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom du champ de type interrupteur</span>
<span style="color: #808080;">//	pt_LstIndice (tableau) : Liste des indices &agrave; s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurSelectionne(Int_ListeEtat,[1,3,5])</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurSelectionne<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
ls_MessageErreur <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_interrupteurOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">Nom</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
		<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
		li_interrupteurOccurrence=pc_champ..<span style="color: #339933;">Occurrence</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
			<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_interrupteurOccurrence <span style="font-weight:700;">ALORS</span>
				pc_champ<span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Vrai</span>
			<span style="font-weight:700;">SINON</span>
				<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,pc_champ..<span style="color: #339933;">NomComplet</span>,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_interrupteurOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurSelectionne<span class="br0">&#40;</span>Int_LstOptions,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">7</span><span class="br0">&#93;</span><span class="br0">&#41;</span></pre>
</div><br />
<br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurSelectionneTout</b></font></div><br />
Cette fonction sélectionne toutes les options du champ interrupteur passé en paramètre<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : S&eacute;lectionne toutes les options d'un champ de type interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurSelectionneTout (&lt;pc_champ&gt; est champ)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom du champ de type interrupteur</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurSelectionneTout(Int_LstOptions)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurSelectionneTout<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span><span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">Nom</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> InterrupteurOccurrence<span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
			pc_champ<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">1</span>
		<span style="font-weight:700;">FIN</span>	
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurSelectionneTout<span class="br0">&#40;</span>Int_LstOPtions<span class="br0">&#41;</span></pre>
</div><br />
<b><div style="margin-left:40px"><font size="3">InterrupteurDeselectionne</font></div></b><br />
<br />
Cette fonction permet de désélectionner plusieurs options d'un champ interrupteur en passant les indices en paramètres<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : D&eacute;selectionne les interrupteurs des lignes pass&eacute;es en param&egrave;tres</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurDeselectionne (&lt;pc_champ&gt; est champ, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom du champ de type interrupteur</span>
<span style="color: #808080;">//	pt_LstIndice (tableau) : Liste des indices &agrave; s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurSelectionneTout(Int_option)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurDeselectionne<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
ls_MessageErreur <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_interrupteurOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
		<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
		li_interrupteurOccurrence=pc_champ..<span style="color: #339933;">Occurrence</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
			<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_interrupteurOccurrence <span style="font-weight:700;">ALORS</span>
				pc_champ<span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
			<span style="font-weight:700;">SINON</span>
				<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,pc_champ..<span style="color: #339933;">NomComplet</span>,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_interrupteurOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurDeselectionne(Int_LstOPtions,[1,3,7])</pre>
</div><font size="3"><b><div style="margin-left:40px">InterrupteurDeselectionneTout</div></b></font><br />
<br />
Cette fonction désélectionne toutes les options du champ interrupteur passé en paramètre<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : D&eacute;selectionne toutes les option d'un interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurDeselectionneTout (&lt;pc_champ&gt; est champ)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	pc_champ (champ) : Nom du champ de type interrupteur</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurDeselectionneTout(Int_option)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurDeselectionneTout<span class="br0">&#40;</span>pc_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">Champ</span><span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>pc_champ..<span style="color: #339933;">NomComplet</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> pc_champ..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> InterrupteurOccurrence<span class="br0">&#40;</span>pc_champ<span class="br0">&#41;</span>
			pc_champ<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">0</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+pc_champ..<span style="color: #339933;">NomComplet</span>+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="4"><b>Exceptions</b></font><br />
<hr /><br />
<br />
Pour plus de renseignements sur la gestion des exceptions , voir le billet initial <a href="http://www.developpez.net/forums/blogs/25867-dsr57/b585/windev-fonctions-selection-deselection-champs-interrupteurs/" target="_blank">WinDev : fonctions de sélection/désélection des champs interrupteurs</a><br />
<br />
<font size="4"><b>Conclusion</b></font><br />
<hr /><br />
<br />
Par ce billet, je viens de mettre à disposition les fonctions pour améliorer la gestion par programmation du champ Interrupteur avec le type de variable Champ. N'hésitez pas à me faire part de vos retours pour améliorer, compléter la liste de ces fonctions.<br />
A voir, si PC-Soft intégrera ces propositions dans une future version de son EDI. :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b772/windev-fonctions-selection-deselection-champs-interrupteurs-v2/</guid>
		</item>
		<item>
			<title>WinDev : Ligne survolée sur un champ table</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b733/windev-ligne-survolee-champ-table/</link>
			<pubDate>Wed, 09 Sep 2015 20:04:34 GMT</pubDate>
			<description>Une fonction pour récupérer...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Une fonction pour récupérer la ligne survolée d'un champ Table</font></font><br />
<br />
Dans ce billet je propose une petite fonction qui permet de récupérer la ligne survolée d'un champ Table.<br />
<br />
<font size="4"><b>Contexte technique</b></font><br />
<hr /><br />
En effectuant une recherche sur Google, j'ai plus m'apercevoir qu'un certains nombre de développeurs cherchaient comment récupérer l'indice de la ligne survolée. <br />
WinDev permet récupérer cet indice mais le WLangage ne possède pas de fonction native et intuitive, c'est donc pour cette raison que j'ai créé une nouvelle fonction. <br />
<br />
<b>Version : 20 et antérieures</b><br />
<br />
<b><font size="4">Nouvelle fonction</font></b><br />
<hr /><br />
Nom de la fonction : <b>TableLigneSurvol</b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : retourne l'indice de la ligne survol&eacute;e dans un champ table</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableLigneSurvol (&lt;ps_Champ&gt; est cha&icirc;ne)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_Champ (cha&icirc;ne ANSI) : Nom du champ table</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         entier : indice de la ligne survol&eacute;e. -1 si pas de ligne survol&eacute;e</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableLigneSurvol(Tab_ListeClient..nom)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> TableLigneSurvol<span class="br0">&#40;</span>ps_Champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span> : <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_Champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_Champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">RENVOYER</span> <span style="color: #0000ff;">TableInfoXY</span><span class="br0">&#40;</span>ps_Champ, <span style="color: #339933;">tiNumLigne</span>, <span style="color: #0000ff;">SourisPosX</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span style="color: #0000ff;">SourisPosY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_Champ+<span style="color: #FF0000;">&quot;' n'est pas de type table&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_Champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> -<span style="color: #cc66cc;">1</span></pre></td></tr></table></pre>
</div><br />
<b><font size="4">Les exceptions</font></b><br />
<hr /><br />
Comme vous avez pu le constater en lisant le code source de la fonction, celle-ci déclenche des exceptions en cas de problème. Deux types d'exceptions sont gérées : <br />
<br />
<div class="cms_table"><table width="500" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Code</td>
<td class="cms_table_grid_td">Message</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">1</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'existe pas</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">2</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'est pas de type table</td>
</tr>
</table></div>
<br />
<u>Exemple d'utilisation avec la gestion des exceptions :</u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">
QUAND EXCEPTION DANS 
	TableLigneSurvol(Tab_LstClient..nom)
FAIRE
	//Gestion des exceptions
FIN</pre></td></tr></table></pre>
</div><font size="4"><b>Conclusion</b></font><br />
<hr /><br />
Cette fonction permet de faciliter la programmation et rendre plus lisible le code de récupération la ligne survolée d'un champ Table.<br />
<br />
<br />
Bon dev à tous :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b733/windev-ligne-survolee-champ-table/</guid>
		</item>
		<item>
			<title><![CDATA[WinDev : fonctions de sélection/désélection d'une colonne de type interrupteur]]></title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b694/windev-fonctions-selection-deselection-d-colonne-type-interrupteur/</link>
			<pubDate>Tue, 25 Aug 2015 10:37:26 GMT</pubDate>
			<description>Nouvelles fonctions pour...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Nouvelles fonctions pour améliorer la programmation de la sélection/désélection d'une colonne de type interrupteur dans un champ Table </font></font><br />
<br />
<b><font size="4">Contexte technique et fonctionnel</font></b><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p186278d1440498490/c-cpp/c/rechercher-chaine-caracteres-chaine/contextetechnique.jpg/" border="0" alt="Nom : contexteTechnique.jpg
Affichages : 2607
Taille : 27,5 Ko"  style="float: CONFIG" /></div><br />
Lors de mes développements, j'ai du manipuler le champ table, celui-ci peut être manipuler par programmation avec les fonctions proposés par WinDev : <br />
<ul><li style=""><a href="http://doc.pcsoft.fr/?3074017&amp;name=tableajoute_fonction" target="_blank">TableAjoute</a></li><li style=""><a href="http://doc.pcsoft.fr/?3074006&amp;name=tableajouteligne_fonction" target="_blank">TableAjouteLigne</a></li><li style=""><a href="http://doc.pcsoft.fr/?3074021&amp;name=tableoccurrence_fonction" target="_blank">TableOccurrence</a></li><li style=""><a href="http://doc.pcsoft.fr/?3074020&amp;name=tableselect_fonction" target="_blank">TableSelect</a></li><li style=""><a href="http://doc.pcsoft.fr/?3074009" target="_blank">Listes complètes des fonctions de gestion des champs Table</a></li></ul><br />
<br />
L'ensemble de ces fonctions permettent un certains nombre d'actions mais ne couvraient pas l'ensemble de mes besoins. notamment dans les étapes : <br />
<ul><li style="">importation d'enregistrements ;</li><li style="">exportation d'enregistrements ;</li><li style="">impression de plusieurs enregistrements.</li></ul><br />
Dans ces étapes., j'ai pris l'habitude d'afficher une fenêtre récapitulative listant dans un champ table les informations qui vont être taitées, cela permet à l'utilisateur :<br />
<ul><li style="">effectuer une vérification ;</li><li style="">effectuer une sélection pour ne pas traiter l'ensemble.</li></ul><br />
L'utilisateur a les possibiltés suivantes :<br />
<ul><li style="">Sélectionner tout ;</li><li style="">Désélectionner tout ;</li><li style="">Effectuer une sélection plus restritive.</li></ul><br />
Dans certain cas, je devais pré-sélectionner des lignes de la table avec des indices connues à l'ouverture de la fenêtre. L'ensemble de ces actions me demandait de mettre en place soit une boucle de parcours soit une liste d'affectation. J'ai donc créé de nouvelles fonctions et j'ai décidé de les partager pour permettre : <br />
<ul><li style="">à la communauté de les utiliser ;</li><li style="">une évolution de celles-ci avec les éventuels retour.</li></ul><br />
<br />
<b>Version de WinDev : 20 et antérieures</b><br />
<font size="4"><br />
<br />
<br />
<b>Les fonctions</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p186279d1440498525/c-cpp/c/rechercher-chaine-caracteres-chaine/practicetest.jpg/" border="0" alt="Nom : practiceTest.jpg
Affichages : 1597
Taille : 8,9 Ko"  style="float: CONFIG" /></div><br />
Le nom des fonctions a été créé en conservant la même syntaxe que celles proposées par PC-Soft<br />
<br />
<div style="margin-left:40px"><b><font size="3">TableSelectionne</font></b></div><br />
Cette fonction permet de sélectionner plusieurs cases d'une colonnes de type interrupteur en passant les indices en paramètres<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : Active les options des lignes pass&eacute;es en param&egrave;tres</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableSelectionne (&lt;ps_champ&gt; est cha&icirc;ne, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	ps_champ (cha&icirc;ne ANSI) : Nom de la colonne de type interrupteur</span>
<span style="color: #808080;">//	pt_LstIndice (tableau) : Liste des indices &agrave; s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	bool&eacute;en : vrai si toutes les indices pass&eacute; en param&egrave;tres ont &eacute;t&eacute; trait&eacute; avec succ&egrave;s</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableSelectionne(Colonne3..nom,[1,5,8,20])</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> TableSelectionne<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
ls_MessageErreur,ls_nomTable  <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_tableOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
&nbsp;
		ls_nomTable=<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">NomComplet</span>
		ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
		<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
			<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
			li_tableOccurrence=<span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
			<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
				<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
					<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">SINON</span>
					<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,ps_champ,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
				<span style="font-weight:700;">FIN</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">SINON</span>
			<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		lb_retour=<span style="color: #339933;">Vrai</span>
	<span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
		li_tableOccurrence=<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
		<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">NombreColonne</span>
			<span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
				<span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
					<span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
						<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>,li_i<span class="br0">&#93;</span>=<span style="color: #339933;">Vrai</span>
					<span style="font-weight:700;">SINON</span>
						<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,ps_champ,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
					<span style="font-weight:700;">FIN</span>
				<span style="font-weight:700;">FIN</span>
				lb_retour=<span style="color: #339933;">Vrai</span>
				<span style="font-weight:700;">SORTIR</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">SINON</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:60px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
TableSelectionne<span class="br0">&#40;</span>Col_Select..<span style="color: #339933;">nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">8</span>,<span style="color: #cc66cc;">20</span><span class="br0">&#93;</span><span class="br0">&#41;</span></pre></td></tr></table></pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>TableSelectionneTout</b></font></div><br />
Cette fonction permet de sélectionner toutes les cases d'une colonne de type interrupteur.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : S&eacute;lectionne toutes les cases d'une colonne interrupteur.</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableSelectionneTout (&lt;ps_champ&gt; est cha&icirc;ne)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : Nom de la colonne ou nom de la table</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         bool&eacute;en :  Vrai si toutes les lignes ont &eacute;t&eacute; s&eacute;lectionn&eacute;es</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// TableSelectionneTout(Col_activer..nom)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">//        ps_nomColonne (cha&icirc;ne ANSI - valeur par d&eacute;faut=&quot;&quot;) : &lt;indiquez ici le r&ocirc;le de ps_nomColonne&gt;</span>
<span style="font-weight:700;">PROCEDURE</span> TableSelectionneTout<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typColonne <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>
                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">1</span>
                <span style="font-weight:700;">FIN</span>        
                lb_retour=<span style="color: #339933;">Vrai</span>
        <span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">NombreColonne</span>
                        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                                <span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span>  <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>
                                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>li_j,li_i<span class="br0">&#93;</span>=<span style="color: #339933;">Vrai</span>
                                <span style="font-weight:700;">FIN</span>
                                lb_retour=<span style="color: #339933;">Vrai</span>
                                <span style="font-weight:700;">SORTIR</span>
                        <span style="font-weight:700;">FIN</span>
                <span style="font-weight:700;">FIN</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u> <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">TableSelectionneTout<span class="br0">&#40;</span>Col_Select..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
Cette fonction peut prendre en paramètre le nom d'un champ table, la fonction sélectionnera toutes les cases de la première colonne de type interrupteur<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">TableSelectionneTout<span class="br0">&#40;</span>Tab_ListeClientAExporter..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
<b><div style="margin-left:40px"><font size="3">TableDeselectionne</font></div></b><br />
<br />
Cette fonction permet de désélectionner plusieurs cases d'une colonne de type interrupteur en passant les indices en paramètres.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : D&eacute;s&eacute;lectionne les options des lignes pass&eacute;es en patam&egrave;tres</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableDeSelectionne (&lt;ps_champ&gt; est cha&icirc;ne, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : niom de la colonne de type interrupteur</span>
<span style="color: #808080;">//        pt_LstIndice (tableau) : Liste des indices des lignes &agrave; d&eacute;s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         bool&eacute;en :  vrai si toutes les indices pass&eacute; en param&egrave;tres ont &eacute;t&eacute; trait&eacute; avec succ&egrave;s</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// Indiquez ici un exemple d'utilisation.</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> TableDeSelectionne<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
ls_MessageErreur,ls_nomTable  <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_tableOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
&nbsp;
                ls_nomTable=<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">NomComplet</span>
                ls_nomTable=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_nomTable,<span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;.&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
                <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
                        <span style="color: #808080;">//-----&gt;Initialisation des variables</span>
                        li_tableOccurrence=<span class="br0">&#123;</span>ls_nomTable,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
                        <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
                                <span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
                                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
                                <span style="font-weight:700;">SINON</span>
                                        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,ps_champ,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
                                <span style="font-weight:700;">FIN</span>
                        <span style="font-weight:700;">FIN</span>
                <span style="font-weight:700;">SINON</span>
                        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
                <span style="font-weight:700;">FIN</span>
&nbsp;
                lb_retour=<span style="color: #339933;">Vrai</span>
        <span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
                li_tableOccurrence=<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">NombreColonne</span>
                        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                                <span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
                                        <span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span> &lt;= li_tableOccurrence <span style="font-weight:700;">ALORS</span>
                                                <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_j<span class="br0">&#93;</span>,li_i<span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
                                        <span style="font-weight:700;">SINON</span>
                                                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,ps_champ,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_tableOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
                                        <span style="font-weight:700;">FIN</span>
                                <span style="font-weight:700;">FIN</span>
                                lb_retour=<span style="color: #339933;">Vrai</span>
                                <span style="font-weight:700;">SORTIR</span>
                        <span style="font-weight:700;">FIN</span>
                <span style="font-weight:700;">FIN</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<font size="3"><b><div style="margin-left:40px">TableDeselectionneTout</div></b></font><br />
<br />
Cette fonction permet de désélectionner toutes les cases d'une colonne de type interrupteur.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : d&eacute;s&eacute;lectionne toutes les options d'une colonne de type interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//[ &lt;R&eacute;sultat&gt; = ] TableDeselectionneTout (&lt;ps_champ&gt; est cha&icirc;ne)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : nom de la colonne ou nom de la table</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         bool&eacute;en : vrai si toutes les options de la colonne interrupteur ont &eacute;t&eacute; d&eacute;s&eacute;lectionn&eacute;es</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// Indiquez ici un exemple d'utilisation.</span>
<span style="color: #808080;">// TableDeselectionneTout(Col_Export..nom)</span>
<span style="color: #808080;">//       </span>
<span style="font-weight:700;">PROCEDURE</span> TableDeselectionneTout<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
lb_retour <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">bool&eacute;en</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
lb_retour=<span style="color: #339933;">Faux</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typColonne <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>
                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">0</span>
                <span style="font-weight:700;">FIN</span>        
                lb_retour=<span style="color: #339933;">Vrai</span>
        <span style="font-weight:700;">SINON</span> <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = <span style="color: #339933;">typTable</span> <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">NombreColonne</span>
                        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,li_i<span class="br0">&#93;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                                <span style="font-weight:700;">POUR</span> li_j=<span style="color: #cc66cc;">1</span>  <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableOccurrence</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>
                                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>li_j,li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">0</span>
                                <span style="font-weight:700;">FIN</span>
                                lb_retour=<span style="color: #339933;">Vrai</span>
                                <span style="font-weight:700;">SORTIR</span>
                        <span style="font-weight:700;">FIN</span>
                <span style="font-weight:700;">FIN</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type table ou colonne&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> lb_retour</pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u> <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:60px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
TableDeselectionneTout<span class="br0">&#40;</span>Col_Select..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre></td></tr></table></pre>
</div><br />
Cette fonction peut prendre en paramètre le nom d'un champ table, la fonction sélectionnera toutes les cases de la première colonne de type interrupteur<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">TableSelectionneTout<span class="br0">&#40;</span>Tab_ListeClientAExporter..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
<font size="4"><b>Les exceptions</b></font><br />
<hr /><br />
<br />
Comme vous avez pu le constater en lisant le code source des fonctions, celles-ci déclenchent des exceptions en cas de problème. Trois types d'exceptions sont gérées : <br />
<br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Code</td>
<td class="cms_table_grid_td">Message</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">1</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'existe pas</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">2</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'est pas de type table ou colonne</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">3</td>
<td class="cms_table_grid_td">Vous avez appelé l'opérateur [] sur le champ %%Champ%%.&lt;br&gt;<br />
L'indice spécifié [%Indice%%] est invalide.&lt;br&gt;<br />
Les valeurs valides sont comprises entre 1 et %%Occurrence%% (inclus).</td>
</tr>
</table></div>
<br />
Exemple d'utilisation avec la gestion des exceptions :<br />
<br />
<font size="3"><b><div style="margin-left:40px">TableSelectionne</div></b></font><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	TableSelectionne<span class="br0">&#40;</span>Col_SelectClient..<span style="color: #339933;">Nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">20</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="3"><b><div style="margin-left:40px">TableSelectionneTout</div></b></font><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Windev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	TableSelectionneTout<span class="br0">&#40;</span>Col_SelectClient..<span style="color: #339933;">Nom</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<b><font size="3"><div style="margin-left:40px">TableDeselectionne</div></font></b><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	TableDeSelectionne<span class="br0">&#40;</span>Col_SelectClient..<span style="color: #339933;">Nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">20</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="3"><b><div style="margin-left:40px">TableDeselectionneTout</div></b></font><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	TableDeSelectionneTout<span class="br0">&#40;</span>Col_SelectClient..<span style="color: #339933;">Nom</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="4"><b>Conclusion</b></font><br />
<hr /><br />
<br />
Ces fonctions permettent de faciliter la gestion d'une colonne de type interrupteur dans un champ table en proposant un ensemble de possibilité pour gérer la sélection/désélection. N'hésitez pas à me faire part de vos retours pour améliorer, compléter la liste de ces fonctions.<br />
A voir, si PC-Soft intégrera ces propositions dans une future version de son EDI.<br />
<br />
Bon dev à tous  :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b694/windev-fonctions-selection-deselection-d-colonne-type-interrupteur/</guid>
		</item>
		<item>
			<title>WinDev : HsupprimeTout qui supprime tout</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b646/windev-hsupprimetout-supprime/</link>
			<pubDate>Wed, 05 Aug 2015 11:08:03 GMT</pubDate>
			<description>Surcharge de la fonction...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font color="#808080"><font size="4">Surcharge de la fonction HSupprimeTout avec prise en charge des contraintes d'intégrité référentielle</font></font><br />
<br />
<b><font size="4">Contexte Technique</font></b><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p184705d1438768606/autres-langages/autres-langages/corba/client-c-corba/contextetechnique.jpg/" border="0" alt="Nom : contexteTechnique.jpg
Affichages : 11238
Taille : 27,5 Ko"  style="float: CONFIG" /></div><br />
Dans un premier billet <a href="http://www.developpez.net/forums/blogs/25867-dsr57/b543/windev-hsupprimetout-contraintes-dintegrite-referentielle-cascade/" target="_blank">WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade</a>, nous constations avec la confirmation du support technique la non prise en charge les contraintes d'intégrité référentielle définies dans l'analyse par la fonction <font color="#0000FF">HsupprimteTout </font>. <br />
<br />
Dans le but de palier à ce manque, ce bogue, cet oublie (chacun le qualifiera comme il le souhaite), j'ai développé une fonction qui prend en charge les contraintes d'intégrité. <br />
<br />
<b>Version de WinDev : 20 et antérieures</b><br />
Programmation : surcharge, exceptions. <br />
<br />
<font size="4"><b>Jeu d'essai</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p184706d1438768649/autres-langages/autres-langages/corba/client-c-corba/practicetest.jpg/" border="0" alt="Nom : practiceTest.jpg
Affichages : 5654
Taille : 8,9 Ko"  style="float: CONFIG" /></div><br />
Avant de mettre le code de la fonction développée, je met à disposition le jeu d'essai qui m'a permis de faire les tests. <br />
<br />
<b><div style="margin-left:40px"><font size="3">Commande </font></div></b><br />
<br />
Nom du fichier : commande.FIC<br />
<br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Clé</td>
<td class="cms_table_grid_td">Nom</td>
<td class="cms_table_grid_td">Libellé</td>
<td class="cms_table_grid_td">Type</td>
<td class="cms_table_grid_td">Taille</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">X</td>
<td class="cms_table_grid_td">ID</td>
<td class="cms_table_grid_td">Identifiant de la commande</td>
<td class="cms_table_grid_td">Id. automatique</td>
<td class="cms_table_grid_td">4</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">Date</td>
<td class="cms_table_grid_td">Date de la commande</td>
<td class="cms_table_grid_td">Date</td>
<td class="cms_table_grid_td">8</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">Client</td>
<td class="cms_table_grid_td">Nom du client</td>
<td class="cms_table_grid_td">Texte</td>
<td class="cms_table_grid_td">50</td>
</tr>
</table></div>
<br />
<div style="margin-left:40px"><font size="3"><b>DetailCommande</b></font></div><br />
Nom du fichier : DetailCommande.FIC<br />
<br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Clé</td>
<td class="cms_table_grid_td">Nom</td>
<td class="cms_table_grid_td">Libellé</td>
<td class="cms_table_grid_td">Type</td>
<td class="cms_table_grid_td">Taille</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">X</td>
<td class="cms_table_grid_td">ID</td>
<td class="cms_table_grid_td">Identifiant du détail de la commande</td>
<td class="cms_table_grid_td">Id. automatique</td>
<td class="cms_table_grid_td">4</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">IDCommande</td>
<td class="cms_table_grid_td">Identifiant de la commande</td>
<td class="cms_table_grid_td">Numérique</td>
<td class="cms_table_grid_td">4</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td"></td>
<td class="cms_table_grid_td">IdArticle</td>
<td class="cms_table_grid_td">Identifiant de l'article</td>
<td class="cms_table_grid_td">Numérique</td>
<td class="cms_table_grid_td">4</td>
</tr>
</table></div>
<br />
<font color="#0000FF"><b>Une relation entre les deux table est créée, cell-ci varie selon de vos contextes technique et focntionnel</b></font><br />
<br />
<div style="margin-left:40px"><font size="3"><b>Script d'initialisation</b></font></div><br />
Ci-dessous le script d'initialisation des tables<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">HCr&eacute;ationSiInexistant</span><span class="br0">&#40;</span>Commande<span class="br0">&#41;</span>
<span style="color: #0000ff;">HCr&eacute;ationSiInexistant</span><span class="br0">&#40;</span>CommandeDetail<span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">WL</span>.<span style="color: #339933;">HSupprimeTout</span><span class="br0">&#40;</span>Commande<span class="br0">&#41;</span>
<span style="font-weight:700;">WL</span>.<span style="color: #339933;">HSupprimeTout</span><span class="br0">&#40;</span>CommandeDetail<span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span>  <span style="color: #cc66cc;">10</span> 
	Commande.<span style="color: #339933;">Date</span>=<span style="color: #0000ff;">DateDuJour</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
	Commande.<span style="color: #339933;">Numero</span>=<span style="color: #0000ff;">Num&eacute;riqueVersCha&icirc;ne</span><span class="br0">&#40;</span>li_i,<span style="color: #FF0000;">&quot;010d&quot;</span><span class="br0">&#41;</span>
	Commande.<span style="color: #339933;">Client</span>=<span style="color: #FF0000;">&quot;ClientTest_&quot;</span>+li_i
&nbsp;
	<span style="color: #0000ff;">HAjoute</span><span class="br0">&#40;</span>Commande<span class="br0">&#41;</span>
&nbsp;
	<span style="font-weight:700;">POUR</span> li_j=li_i <span style="font-weight:700;">_A_</span> li_i+<span style="color: #cc66cc;">3</span> 
		CommandeDetail.<span style="color: #339933;">IDCommande</span>=Commande.<span style="color: #339933;">ID</span>
		CommandeDetail.<span style="color: #339933;">IdArticle</span>=li_j
		<span style="color: #0000ff;">HAjoute</span><span class="br0">&#40;</span>CommandeDetail<span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p184526d1438601184/autres-langages/autres-langages/corba/client-c-corba/titre.png/" border="0" alt="Nom : Sans titre.png
Affichages : 6031
Taille : 11,7 Ko"  style="float: CONFIG" /><br />
<font size="1"><i>Contenu de la table commande initialisée avec le script</i></font><br />
<br />
<img src="https://www.developpez.net/forums/attachments/p184527d1438601287/autres-langages/autres-langages/corba/client-c-corba/titre.png/" border="0" alt="Nom : Sans titre.png
Affichages : 5984
Taille : 16,1 Ko"  style="float: CONFIG" /><br />
<font size="1"><i>Contenu de la table détail commande initialisée avec le script</i></font></div><br />
<b><font size="4">La nouvelle fonction</font></b><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p184715d1438772300/autres-langages/autres-langages/corba/client-c-corba/photo_programmation_web.png/" border="0" alt="Nom : photo_programmation_web.png
Affichages : 6779
Taille : 172,3 Ko"  style="float: CONFIG" /></div><br />
Le nom de la fonctions a été créé en conservant la même syntaxe que celles proposées par PC-Soft <br />
Nom : HSupprimeTout<br />
Cette nouvelle fonction surcharge l'existante, WinDev affichera des informations a chaque appel de celle-ci. <br />
<br />
<u>Exemple d'information affichée :</u> <br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Windev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:60px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">Info</span> : <span style="color: #339933;">La</span> proc&eacute;dure '<span style="color: #0000ff;">HSupprimeTout</span>' surcharge la <span style="font-weight:700;">fonction</span> du WLangage <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> m&ecirc;me nom.
<span style="color: #339933;">Fen_TestPROCEDURE</span>.<span style="color: #339933;">HSupprimeTout</span>, Proc&eacute;dure <span style="font-weight:700;">locale</span>, <span style="font-weight:700;">ligne</span> <span style="color: #cc66cc;">13</span>, colonne <span style="color: #cc66cc;">11</span></pre></td></tr></table></pre>
</div><br />
La fonction gère les contraintes d'intégrité : <br />
<ul><li style="">interdire la supression qui a au moins un enregistrement</li><li style="">supprimer l'enregistrement et tous ces détails</li><li style="">supprimer l'enregistrement et affecter une valeur par défaut aux détails</li></ul><br />
et la gestion des cardinalités minimums<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// R&eacute;sum&eacute; : Supprime tout le contenu d'un fichier en prenant en compte les contraintes d'int&eacute;grit&eacute;</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//HsupprimeTout(ps_nomFichier est une chaine)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	ps_nomFichier : Nom du fichier de donn&eacute;es</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	bool&eacute;en : vrai si le contenu du fichier a &eacute;t&eacute; supprimer.</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// HsupprimeTout(Commande..Nom)</span>
<span style="color: #808080;">//</span>
&nbsp;
<span style="font-weight:700;">PROCEDURE</span> HsupprimeTout<span class="br0">&#40;</span>ps_nomFichier <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
ls_LstLiaison,ls_nomLiaison,ls_FichierClePrimaire, ls_clePrimaire, ls_fichierCleEtrangere, ls_CleEtrangere, ls_regleSupression, ls_cardinaliteFichierPrimaire, ls_cardinaliteFichierSecondaire <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
ls_LstValeurLiees,ls_nomFichierParametre, ls_requete, ls_nomReq  <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
ls_MessageException1, ls_MessageException2, ls_MessageException3, ls_MessageException4 <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
lt_BufferRequete <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> <span style="color: #0080ff;"><span style="font-weight:700;">de</span></span> <span style="color: #0080ff;">cha&icirc;ne</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables Message Exception</span>
ls_MessageException1=<span class="br0">&#91;</span>
<span style="color: #FF0000;">La  source de donn&eacute;es &lt;%1&gt; n'est pas initialis&eacute;e.</span>
<span style="color: #FF0000;">&nbsp;    - S'il s'agit d'un fichier de donn&eacute;es, le fichier n'a pas &eacute;t&eacute; trouv&eacute; dans l'analyse ou n'a pas &eacute;t&eacute; d&eacute;crit avec les fonctions HD&eacute;clare / HD&eacute;clareExterne.</span>
<span style="color: #FF0000;">&nbsp;    - S'il s'agit d'une requ&ecirc;te ou d'une vue, l'ex&eacute;cution a peut-&ecirc;tre &eacute;chou&eacute;. </span>
<span style="color: #FF0000;">Pour r&eacute;cup&eacute;rer l'erreur correspondante, testez le r&eacute;sultat des fonctions HEx&eacute;cuteRequ&ecirc;te / HEx&eacute;cuteRequ&ecirc;teSQL / HCr&eacute;eVue.</span>
<span class="br0">&#93;</span>
ls_MessageException2=<span style="color: #FF0000;">&quot;Le champ '%1' n'est pas de type Fichier de donn&eacute;es&quot;</span>
ls_MessageException3=<span class="br0">&#91;</span>
<span style="color: #FF0000;">	Erreur d'int&eacute;grit&eacute;.</span>
<span style="color: #FF0000;">	L'application de la fonction aurait entra&icirc;n&eacute; le non-respect de la contrainte d'int&eacute;grit&eacute; r&eacute;f&eacute;rentielle 'restrict' entre les rubriques &lt;%1.%2&gt; (cl&eacute; primaire) ET &lt;%3.%4&gt; (cl&eacute; &eacute;trang&egrave;re).</span>
<span class="br0">&#93;</span>
ls_MessageException4=<span class="br0">&#91;</span>
<span style="color: #FF0000;">Erreur d'int&eacute;grit&eacute;.</span>
<span style="color: #FF0000;">Les cardinalit&eacute;s c&ocirc;t&eacute; cl&eacute; primaire (%1) entre les rubriques &lt;%2.%3&gt; et &lt;%4.%5&gt; ne sont pas respect&eacute;es.</span>
<span class="br0">&#93;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_nomFichierParametre=ps_nomFichier
&nbsp;
<span style="color: #808080;">//-----&gt;Test si la variable pass&eacute; en param&egrave;tre existe en tantque fichier de donn&eacute;es</span>
<span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span>
	<span style="color: #0000ff;">HLitPremier</span><span class="br0">&#40;</span>ls_nomFichierParametre<span class="br0">&#41;</span>	
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageException1,ls_nomFichierParametre<span class="br0">&#41;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Test du type du pam&egrave;tre</span>
<span style="font-weight:700;">SI</span> <span style="font-weight:700;">PAS</span> <span class="br0">&#40;</span><span class="br0">&#123;</span>ls_nomFichierParametre<span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> <span style="font-weight:700;">_DANS_</span> <span class="br0">&#40;</span><span style="color: #339933;">hFichierAS400</span>, <span style="color: #339933;">hFichierAutre</span>, <span style="color: #339933;">hFichierClientServeur</span>, <span style="color: #339933;">hFichierHF5</span>, <span style="color: #339933;">hFichierMySQL</span>, <span style="color: #339933;">hFichierNormal</span>, <span style="color: #339933;">hFichierOLEDB</span>, <span style="color: #339933;">hFichierOracle</span>, <span style="color: #339933;">hFichierOracleLite</span>, <span style="color: #339933;">hFichierPostgreSQL</span>, <span style="color: #339933;">hFichierProgress</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageException2,ls_nomFichierParametre<span class="br0">&#41;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Rcp des liaisons li&eacute;s au fichier pass&eacute; en param&egrave;tre</span>
ls_LstLiaison=<span style="color: #0000ff;">HListeLiaison</span><span class="br0">&#40;</span>ls_nomFichierParametre,<span style="color: #339933;">hLstD&eacute;tail</span><span class="br0">&#41;</span> 
&nbsp;
<span style="color: #808080;">//-----&gt;Boucle sur toutes les liaisons</span>
<span style="font-weight:700;">POUR</span> <span style="font-weight:700;">TOUTE</span> CHA&Icirc;NE ls_liaison <span style="font-weight:700;">DE</span> ls_LstLiaison <span style="font-weight:700;">SEPAREE</span> <span style="font-weight:700;">PAR</span> <span style="color: #339933;">RC</span>
&nbsp;
	<span style="color: #808080;">//-----&gt;R&eacute;cup&eacute;ration des caract&eacute;ristiques de la liaison</span>
	ls_nomLiaison=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">1</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_FichierClePrimaire=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">2</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_clePrimaire=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">3</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_cardinaliteFichierPrimaire=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">4</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_fichierCleEtrangere=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">5</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_CleEtrangere=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">6</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_cardinaliteFichierSecondaire=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">7</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
	ls_regleSupression=<span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_liaison,<span style="color: #cc66cc;">9</span>,<span style="color: #339933;">TAB</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span>
&nbsp;
	<span style="font-weight:700;">SI</span> ls_FichierClePrimaire = ls_nomFichierParametre <span style="font-weight:700;">ALORS</span>
&nbsp;
		<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">Val</span><span class="br0">&#40;</span><span style="color: #0000ff;">ExtraitCha&icirc;ne</span><span class="br0">&#40;</span>ls_cardinaliteFichierSecondaire,<span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;,&quot;</span>,<span style="color: #339933;">DepuisD&eacute;but</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &gt; <span style="color: #cc66cc;">0</span>  <span style="font-weight:700;">ALORS</span>
			<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageException4,ls_cardinaliteFichierSecondaire,ls_fichierCleEtrangere,ls_CleEtrangere,ls_FichierClePrimaire,ls_clePrimaire<span class="br0">&#41;</span><span class="br0">&#41;</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
		ls_LstValeurLiees=<span style="color: #FF0000;">&quot;&quot;</span>
&nbsp;
		<span style="color: #808080;">//-----&gt;Req : recherche des valeurs &agrave; supprimer dans le fichier source</span>
		ls_requete=<span style="color: #FF0000;">&quot;SELECT DISTINCT  &quot;</span>+ls_clePrimaire+<span style="color: #FF0000;">&quot; FROM &quot;</span>+ls_FichierClePrimaire			
		ls_nomReq=<span style="color: #FF0000;">&quot;ReqSelectValeurASupprimer&quot;</span>
&nbsp;
		<span style="color: #808080;">//-----&gt;Req : Ex&eacute;cution et parcours de la requete</span>
		<span style="font-weight:700;">SI</span> <span style="font-weight:700;">PAS</span> <span style="color: #0000ff;">HEx&eacute;cuteRequ&ecirc;teSQL</span><span class="br0">&#40;</span>ls_nomReq,ls_requete<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
			<span style="color: #0000ff;">HFerme</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span>
			<span style="font-weight:700;">RENVOYER</span> <span style="color: #339933;">Faux</span>
		<span style="font-weight:700;">SINON</span>
			<span style="color: #0000ff;">HLitPremier</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span> 
			<span style="font-weight:700;">TANTQUE</span> <span style="font-weight:700;">PAS</span> <span style="color: #0000ff;">HEnDehors</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span> 
				ls_LstValeurLiees+=<span style="color: #0000ff;">HR&eacute;cup&egrave;reRubrique</span><span class="br0">&#40;</span>ls_nomReq,<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>+<span style="color: #FF0000;">&quot;','&quot;</span>
				<span style="color: #0000ff;">HLitSuivant</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span>
			<span style="font-weight:700;">FIN</span>
			<span style="color: #0000ff;">HLib&egrave;reRequ&ecirc;te</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span>
			<span style="font-weight:700;">SI</span> ls_LstValeurLiees &lt;&gt; <span style="color: #FF0000;">&quot;&quot;</span> <span style="font-weight:700;">ALORS</span>
				ls_LstValeurLiees=<span style="color: #FF0000;">&quot;'&quot;</span>+<span style="color: #0000ff;">Tronque</span><span class="br0">&#40;</span>ls_LstValeurLiees,<span style="color: #cc66cc;">3</span>,<span style="color: #339933;">nombreDeCaract&egrave;resASupprimer</span><span class="br0">&#41;</span>+<span style="color: #FF0000;">&quot;'&quot;</span>
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
&nbsp;
		<span style="color: #808080;">//-----&gt;Test si des valeurs sont &agrave; suppimer</span>
		<span style="font-weight:700;">SI</span> ls_LstValeurLiees&lt;&gt;<span style="color: #FF0000;">&quot;&quot;</span> <span style="font-weight:700;">ALORS</span>
&nbsp;
			<span style="color: #808080;">//-----&gt;Test selon la regle de suppression</span>
			<span style="font-weight:700;">SELON</span> ls_regleSupression
&nbsp;
				<span style="font-weight:700;">CAS</span> <span style="color: #339933;">hInt&eacute;grit&eacute;Interdite</span>
					<span style="color: #808080;">//----&gt;Req : Test si des enregistrements sont reli&eacute;s au fichier source par le svaleurs &agrave; supprimer</span>
					ls_requete=<span style="color: #FF0000;">&quot;SELECT COUNT(*) FROM &quot;</span>+ls_fichierCleEtrangere+<span style="color: #FF0000;">&quot; WHERE &quot;</span>+ls_CleEtrangere+<span style="color: #FF0000;">&quot; IN (&quot;</span>+ls_LstValeurLiees+<span style="color: #FF0000;">&quot;)&quot;</span>
					ls_nomReq=<span style="color: #FF0000;">&quot;reqUpdateDetail&quot;</span>
&nbsp;
					<span style="color: #808080;">//-----&gt;Req : Ex&eacute;cution et parcours</span>
					<span style="font-weight:700;">SI</span> <span style="font-weight:700;">PAS</span> <span style="color: #0000ff;">HEx&eacute;cuteRequ&ecirc;teSQL</span><span class="br0">&#40;</span>ls_nomReq,ls_requete<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
						<span style="color: #0000ff;">HFerme</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span>
						<span style="font-weight:700;">RENVOYER</span> <span style="color: #339933;">Faux</span>
					<span style="font-weight:700;">SINON</span>
						<span style="color: #0000ff;">HLitPremier</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span> 
						<span style="color: #808080;">//-----&gt;Test si des enregistrements sont reli&eacute;s : on ne fait rien</span>
						<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">HR&eacute;cup&egrave;reRubrique</span><span class="br0">&#40;</span>ls_nomReq,<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span> &lt;&gt; <span style="color: #cc66cc;">0</span> <span style="font-weight:700;">ALORS</span>
							<span style="color: #0000ff;">HLib&egrave;reRequ&ecirc;te</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span>
							<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageException3,ls_FichierClePrimaire,ls_clePrimaire,ls_fichierCleEtrangere,ls_CleEtrangere<span class="br0">&#41;</span><span class="br0">&#41;</span>
						<span style="font-weight:700;">FIN</span>
						<span style="color: #0000ff;">HLib&egrave;reRequ&ecirc;te</span><span class="br0">&#40;</span>ls_nomReq<span class="br0">&#41;</span>
					<span style="font-weight:700;">FIN</span>
&nbsp;
				<span style="font-weight:700;">CAS</span> <span style="color: #339933;">hInt&eacute;grit&eacute;Cascade</span>
					<span style="color: #808080;">//-----&gt;Req : Ajout dans le buffer la requ&ecirc;te de suppression des enregistrements reli&eacute;s au fichier source par le svaleurs &agrave; supprimer</span>
					<span style="color: #0000ff;">TableauAjoute</span><span class="br0">&#40;</span>lt_BufferRequete,<span style="color: #FF0000;">&quot;DELETE FROM  &quot;</span>+ls_fichierCleEtrangere+<span style="color: #FF0000;">&quot; WHERE &quot;</span>+ls_CleEtrangere+<span style="color: #FF0000;">&quot; IN (&quot;</span>+ls_LstValeurLiees+<span style="color: #FF0000;">&quot;)&quot;</span><span class="br0">&#41;</span>
&nbsp;
				<span style="font-weight:700;">CAS</span> <span style="color: #339933;">hInt&eacute;grit&eacute;ValeurD&eacute;faut</span>
					<span style="color: #808080;">//-----&gt;Req : Ajout dans le buffer la requ&ecirc;te de maj des enregistrements par la valeur par d&eacute;faut reli&eacute;s au fichier source par le svaleurs &agrave; supprimer</span>
					<span style="color: #0000ff;">TableauAjoute</span><span class="br0">&#40;</span>lt_BufferRequete,<span style="color: #FF0000;">&quot;UPDATE  &quot;</span>+ls_fichierCleEtrangere+<span style="color: #FF0000;">&quot; SET &quot;</span>+ls_CleEtrangere+<span style="color: #FF0000;">&quot;='&quot;</span>+<span class="br0">&#123;</span>ls_fichierCleEtrangere+<span style="color: #FF0000;">&quot;.&quot;</span>+ls_CleEtrangere,<span style="color: #339933;">indRubrique</span><span class="br0">&#125;</span>..<span style="color: #339933;">ValeurParD&eacute;faut</span>+<span style="color: #FF0000;">&quot;' WHERE &quot;</span>+ls_CleEtrangere+<span style="color: #FF0000;">&quot; IN (&quot;</span>+ls_LstValeurLiees+<span style="color: #FF0000;">&quot;)&quot;</span><span class="br0">&#41;</span>
&nbsp;
				<span style="font-weight:700;">AUTRE</span> <span style="font-weight:700;">CAS</span>
&nbsp;
			<span style="font-weight:700;">FIN</span>
		<span style="font-weight:700;">FIN</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Ex&eacute;cution des requ&ecirc;tes pour mettre en place les contraintes d'int&eacute;grit&eacute;</span>
<span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> <span style="color: #0000ff;">TableauInfo</span><span class="br0">&#40;</span>lt_BufferRequete,<span style="color: #339933;">tiNombreTotal</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">HEx&eacute;cuteRequ&ecirc;teSQL</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Req&quot;</span>+li_i,lt_BufferRequete<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#41;</span> = <span style="color: #339933;">Faux</span> <span style="font-weight:700;">ALORS</span>
		<span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">HErreurInfo</span><span class="br0">&#40;</span><span style="color: #339933;">hErrComplet</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
	<span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">FIN</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="font-weight:700;">WL</span>.<span style="color: #339933;">HSupprimeTout</span><span class="br0">&#40;</span>ps_nomFichier<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
	<span style="font-weight:700;">RENVOYER</span> <span style="color: #339933;">Vrai</span>
<span style="font-weight:700;">SINON</span>
	<span style="font-weight:700;">RENVOYER</span> <span style="color: #339933;">Faux</span>	
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
j'ai effectué différents tests en variant les contraintes d'intégrité avec le code suivant : <br />
<br />
Suppression complète du contenu du fichier commande<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Windev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;"><span style="color: #0000ff;">HSupprimeTout</span><span class="br0">&#40;</span>Commande..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
Suppression complète du contenu du fichier DetailCommande<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Windev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;"><span style="color: #0000ff;">HSupprimeTout</span><span class="br0">&#40;</span>DetailCommande..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
<br />
<b><font size="4">Les exceptions</font></b><br />
<br />
Comme vous avez pu le constater en lisant le code source des fonctions, celles-ci déclenchent des exceptions en cas de problème. Trois types d'exceptions sont gérées : <br />
<br />
<br />
<div class="cms_table"><table width="800" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Code</td>
<td class="cms_table_grid_td">Message</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">1</td>
<td class="cms_table_grid_td">La  source de données &lt;%1&gt; n'est pas initialisée.<br />
     - S'il s'agit d'un fichier de données, le fichier n'a pas été trouvé dans l'analyse ou n'a pas été décrit avec les fonctions HDéclare / HDéclareExterne.<br />
     - S'il s'agit d'une requête ou d'une vue, l'exécution a peut-être échoué. <br />
Pour récupérer l'erreur correspondante, testez le résultat des fonctions HExécuteRequête / HExécuteRequêteSQL / HCréeVue.</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">2</td>
<td class="cms_table_grid_td">Le champ '%1' n'est pas de type fichier de données</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">3</td>
<td class="cms_table_grid_td">Erreur d'intégrité.<br />
Les cardinalités côté clé primaire (%1) entre les rubriques &lt;%2.%3&gt; et &lt;%4.%5&gt; ne sont pas respectées<br />
<br />
ou<br />
<br />
Erreur d'intégrité.<br />
	L'application de la fonction aurait entraîné le non-respect de la contrainte d'intégrité référentielle 'restrict' entre les rubriques &lt;%1.%2&gt; (clé primaire) ET &lt;%3.%4&gt; (clé étrangère)</td>
</tr>
</table></div>
<br />
Exemple de code avec la gestion des exceptions : <br />
<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:96px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	<span style="color: #0000ff;">HSupprimeTout</span><span class="br0">&#40;</span>Commande..<span style="color: #339933;">nom</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="4"><b>Conclusion</b></font><br />
<br />
<br />
<br />
Ce billet propose une surcharge de la fonction <font color="#0000FF">HSupprimeTout</font> pour prendre en compte les contraintes d'intégrité, celle-ci ne gère qu'un seul niveau. Si le fichier de destination est lié lui aussi à des containtes, celles-ci ne sont pas prises en compte, cela pourrait faire office d'une verison 2 ...<br />
<br />
Si vous avez des remarques, des suggestions, des remotées de BUG, ... n'hésitez pas <br />
<br />
Bon dev :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b646/windev-hsupprimetout-supprime/</guid>
		</item>
		<item>
			<title>WinDev :  chaine vide</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b650/windev-chaine-vide/</link>
			<pubDate>Tue, 21 Jul 2015 20:09:33 GMT</pubDate>
			<description>Une fonction pour tester les...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Une fonction pour tester les chaînes vides...</font></font><br />
<br />
Dans ce billet je propose une petite fonction qui permet de déterminer si une chaîne de caractère est vide. <br />
<br />
<b><font size="4">Contexte fonctionnel</font></b><br />
<hr /><br />
<br />
Commençons par une définition. <br />
<br />
<div style="text-align: center;"><div class="cms_table"><table width="500" class="cms_table"><tr valign="top" class="cms_table_tr"><td class="cms_table_td"><img src="https://www.developpez.net/forums/attachments/p183555d1437508415/c-cpp/c/formater-date-cette-facon-ddmmyyyy/definition-web.jpg/" border="0" alt="Nom : definition-web.jpg
Affichages : 1667
Taille : 7,3 Ko"  style="float: CONFIG" /></td>
<td class="cms_table_td"><i>une chaine vide est une chaîne qui contient aucun caractère.</i></td>
</tr>
</table></div>
</div><br />
<br />
Avec cette définition, WinDev nous permet de vérifier  avec la fonction Taille renvoyant 0 et le test d'égalité avec &quot;&quot; renvoyant vrai. <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code Windev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
ls_TestEXPRESS <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span> 
&nbsp;
ls_TestEXPRESS=<span style="color: #FF0000;">&quot;&quot;</span>
&nbsp;
<span style="color: #0000ff;">Taille</span><span class="br0">&#40;</span>ls_TestEXPRESS<span class="br0">&#41;</span>    <span style="color: #808080;">//-----&gt;Retourne 0</span></pre></td></tr></table></pre>
</div><br />
Nous pourrions en rester la-dessus, mais mettons en place ce test dans un contexte utilisateur et une vérification des données saisies. Prenons par exemple le cas d'un formulaire : <br />
<ul><li style="">saisie d'un formulaire d'inscription ;</li><li style="">saisie d'une fiche client ;</li><li style="">saisie d'une fiche article.</li></ul><br />
<br />
A la validation nous vérifions la saisie des informations obligatoires (Nom, prénom, adresse, référence, ....), en mettant en place le test vu plus haut, nous récupérons la valeur des champs renseignés ... Mais si l'utilisateur saisi une suite d'espace, que renvoie notre test ? <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
ls_TestEXPRESS <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span> 
&nbsp;
ls_TestEXPRESS=<span style="color: #FF0000;">&quot;   &quot;</span>
&nbsp;
<span style="color: #0000ff;">Taille</span><span class="br0">&#40;</span>ls_TestEXPRESS<span class="br0">&#41;</span>    <span style="color: #808080;">//-----&gt;Retourne 3</span></pre></td></tr></table></pre>
</div><br />
Nous observons que la définition et le test ne nous permettents pas de détecter les chaines contenant uniquement des espaces, et nous avons en base de données des valeurs inexploitables.<br />
<br />
<b><font size="4">Nouvelle fonction</font></b><br />
<hr /><br />
<br />
Dans un premier temps, nous allons définir ce que l'on entend par chaîne vide dans un contexte de vérification d'informations. <br />
<br />
<div style="text-align: center;"><div class="cms_table"><table width="500" class="cms_table"><tr valign="top" class="cms_table_tr"><td class="cms_table_td"><img src="https://www.developpez.net/forums/attachments/p183555d1437508415/c-cpp/c/formater-date-cette-facon-ddmmyyyy/definition-web.jpg/" border="0" alt="Nom : definition-web.jpg
Affichages : 1667
Taille : 7,3 Ko"  style="float: CONFIG" /></td>
<td class="cms_table_td"><i>Une chaîne vide est une chaîne qui ne contient aucun caractère ou uniquement des caractères espace. </i></td>
</tr>
</table></div>
</div><br />
Pour cela je propose la fonction ChaineVide qui permettra de tester uen chaine selon cette définition.<br />
<br />
Code de la fonction : <br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">// R&eacute;sum&eacute; : V&eacute;rifie si une chaine contient uniquement des caract&egrave;res espaces ou pas de caract&egrave;re</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//ChaineVide ()</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//	ps_chaine &lt;chaine&gt; : chaine &agrave; tester</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">// 	vrai : chaine contenant 0 caract&egrave;re ou uniquement des espaces</span>
<span style="color: #808080;">//  faux : chaine contenant plusieurs caract&egrave;res diff&eacute;rents de espace</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// ChaineVide(ls_nomClient)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> ChaineVide<span class="br0">&#40;</span>ps_chaine <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">RENVOYER</span> <span class="br0">&#40;</span><span style="color: #0000ff;">SansEspace</span><span class="br0">&#40;</span>ps_chaine<span class="br0">&#41;</span>=<span style="color: #FF0000;">&quot;&quot;</span><span class="br0">&#41;</span></pre></td></tr></table></pre>
</div><br />
<br />
<b><font size="4">Test</font></b><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p183558d1437509342/c-cpp/c/formater-date-cette-facon-ddmmyyyy/practicetest.jpg/" border="0" alt="Nom : practiceTest.jpg
Affichages : 507
Taille : 8,9 Ko"  style="float: CONFIG" /></div><br />
Un jeu de tests pour vérifier la fonction<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:192px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
ls_TestEXPRESS1, Ls_TestEXPRESS2, ls_TestEXPRESS3, ls_TestEXPRESS4,sLs_TestEXPRESS5 <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span> 
&nbsp;
ls_TestEXPRESS1=<span style="color: #FF0000;">&quot;&quot;</span>
Ls_TestEXPRESS2=<span style="color: #FF0000;">&quot;  &quot;</span>
ls_TestEXPRESS3=<span style="color: #FF0000;">&quot;  Nom&quot;</span>
ls_TestEXPRESS4=<span style="color: #FF0000;">&quot;  Prenom&quot;</span>
ls_TestEXPRESS4=<span style="color: #FF0000;">&quot;  Adresse       &quot;</span>
&nbsp;
ChaineVide<span class="br0">&#40;</span>ls_TestEXPRESS1<span class="br0">&#41;</span> 
ChaineVide<span class="br0">&#40;</span>Ls_TestEXPRESS2<span class="br0">&#41;</span> 
ChaineVide<span class="br0">&#40;</span>ls_TestEXPRESS3<span class="br0">&#41;</span>
ChaineVide<span class="br0">&#40;</span>ls_TestEXPRESS4<span class="br0">&#41;</span>
ChaineVide<span class="br0">&#40;</span>sLs_TestEXPRESS5<span class="br0">&#41;</span></pre></td></tr></table></pre>
</div><br />
Résultats<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:108px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">
Vrai
Vrai
Faux
Faux
Faux</pre></td></tr></table></pre>
</div><b><font size="4">Contexte technique </font></b><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p183559d1437509597/c-cpp/c/formater-date-cette-facon-ddmmyyyy/contexte.jpg/" border="0" alt="Nom : Contexte.jpg
Affichages : 484
Taille : 7,6 Ko"  style="float: CONFIG" /></div><b>Version de WinDev : 20 et antérieures</b><br />
<br />
<b><font size="4">Conclusion </font></b><br />
<hr /><br />
<br />
<br />
Dans ce billet, nous avons une nouvelle définition d'une chaîne vide plus proche d'un contexte utilisateur. Celle-ci peut être appliqué pour tester les valeurs saisies d'un utilisateur, et aussi pour vérifier les paramètres d'entrée d'une fonction (fonctions internes à un programme, Web-services, API, ...). Cette fonction permet de vérifier qu'une chaîne contient des caractères mais ne permet de vérifier la validité des informations, un client avec pour nom et prénom test passera le test... <br />
<br />
Bon dev à tous :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b650/windev-chaine-vide/</guid>
		</item>
		<item>
			<title>WinDev : le développement par les tests</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b644/windev-developpement-tests/</link>
			<pubDate>Thu, 16 Jul 2015 19:45:07 GMT</pubDate>
			<description>La mise en application du...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">La mise en application du développement par les tests (Test driven development) dans l'EDI WinDev</font></font> <br />
<br />
Le développement de logiciels, la programmation peut s'analyser, s'orienter, se planifier de différentes façon. Nous avons par exemple :<br />
<ul><li style="">les pros programmation objet s'opposant à la programmation procédurale, fonctionnelle ;</li><li style="">les différentes méthodes agiles ;</li><li style="">...</li></ul><br />
<br />
Chaque méthode, type, courant, mode possède ses défenseurs et ses détracteurs. Dans une publication je montre la mise en pratique de la technique de développement piloté par les tests. <br />
<br />
<a href="http://vformet.developpez.com/tutoriels/windev/TDD/" target="_blank">WinDev : Le développement par les tests</a><br />
<br />
Bonne lecture :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b644/windev-developpement-tests/</guid>
		</item>
		<item>
			<title>WinDev : fonctions de  sélection/désélection des champs interrupteurs</title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b585/windev-fonctions-selection-deselection-champs-interrupteurs/</link>
			<pubDate>Thu, 25 Jun 2015 11:31:23 GMT</pubDate>
			<description>Nouvelles fonctions pour...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#808080">Nouvelles fonctions pour améliorer la gestion de sélection/désélection d'un champ Interrupteur par programmation </font></font><br />
<br />
<font size="4"><b>Contexte technique et fonctionnel</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p181482d1435176360/environnements-developpement/delphi/edi/kylix-equivalent-shellexec-clx/contextetechnique.jpg/" border="0" alt="Nom : contexteTechnique.jpg
Affichages : 16915
Taille : 27,5 Ko"  style="float: CONFIG" /></div><br />
Lors de mes développements personnels, j'ai du manipuler le champ interrupteur, celui-ci peut être manipuler par programmation avec les fonctions proposés par WinDev : <br />
<ul><li style=""><a href="http://doc.pcsoft.fr/?1000020595&amp;name=interrupteurajoute_fonction" target="_blank">InterrupteurAjoute</a> ;</li><li style=""><a href="http://doc.pcsoft.fr/?1000020597&amp;name=interrupteurinsere_fonction" target="_blank">InterrupteurInsère</a> ;</li><li style=""><a href="http://doc.pcsoft.fr/?1000021274&amp;name=interrupteuroccurrence_fonction" target="_blank">InterrupteurOccurrence</a> (<b><font color="#FF0000">nouveauté WinDev 20</font></b>) ;</li><li style=""><a href="http://doc.pcsoft.fr/?1000020596&amp;name=interrupteursupprime_fonction" target="_blank">InterrupteurSupprime</a>.</li></ul><br />
<br />
L'ensemble de ces fonctions permettent un certains nombre d'actions mais ne couvraient pas l'ensemble de mes besoins, j'ai donc créé de nouvelles fonctions et j'ai décidé de les partager pour permettre <br />
<ul><li style="">à la communauté de les utiliser ;</li><li style="">une évolution de celles-ci avec les éventuelles retour.</li></ul><br />
<br />
<b>Version de WinDev : 20 et antérieures</b><br />
<br />
<i>Modfication du 22/09/2015 : Une version des fonctions avec le type de variable Champ est disponible dans ce billet <a href="http://www.developpez.net/forums/blogs/25867-dsr57/b772/windev-fonctions-selection-deselection-champs-interrupteurs-v2/" target="_blank">WinDev : fonctions de sélection/désélection des champs interrupteurs V2</a><br />
<b>Version de WinDev : 19 et supérieures</b></i><br />
<br />
<font size="4"><b>Les fonctions</b></font><br />
<hr /><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p181481d1435176255/environnements-developpement/delphi/edi/kylix-equivalent-shellexec-clx/case_a_cocher.jpg/" border="0" alt="Nom : case_a_cocher.jpg
Affichages : 10182
Taille : 14,3 Ko"  style="float: CONFIG" /></div><br />
Le nom des fonctions a été créé en conservant la même syntaxe que celles proposées par PC-Soft <br />
<br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurSelectionne</b></font></div><br />
Cette fonction permet de sélectionner plusieurs options d'un champ interrupteur en passant les indices en paramètres<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// R&eacute;sum&eacute; : &lt;indiquez ici ce que fait la proc&eacute;dure&gt;</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurSelectionne (&lt;ps_champ&gt; est cha&icirc;ne, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : nom du chqmpde type interrupteur</span>
<span style="color: #808080;">//        pt_LstIndice (tableau) : Liste des indices &agrave; s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurSelectionne(Int_options,[1,2,3])</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurSelectionne<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
ls_MessageErreur <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_interrupteurOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                <span style="color: #808080;">//-----&gt;Initialisation des variables</span>
                li_interrupteurOccurrence=<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
                        <span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_interrupteurOccurrence <span style="font-weight:700;">ALORS</span>
                                <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Vrai</span>
                        <span style="font-weight:700;">SINON</span>
                                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,ps_champ,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_interrupteurOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
                        <span style="font-weight:700;">FIN</span>
                <span style="font-weight:700;">FIN</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation :</u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurSelectionne(Int_LstOptions..nom,[1,3,5,7])</pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurSelectionneTout</b></font></div><br />
Cette fonction sélectionne toutes les options du champ interrupteur passé en paramètre<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// R&eacute;sum&eacute; : S&eacute;lectionne toutes les options d'un champ de type interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurSelectionneTout (&lt;ps_champ&gt; est cha&icirc;ne)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : Nom du champ de type interrupteur</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurSelectionneTout(Int_LstOptions..Nom)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurSelectionneTout<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> InterrupteurOccurrence<span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>
                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">1</span>
                <span style="font-weight:700;">FIN</span>        
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation : </u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurSelectionneTout<span class="br0">&#40;</span>Int_LstOPtions..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurDeselectionne</b></font></div><br />
Cette fonction permet de désélectionner plusieurs options d'un champ interrupteur en passant les indices en paramètres<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// R&eacute;sum&eacute; : D&eacute;selectionne les options du champ interrupteur pass&eacute; en param&egrave;tre 1 avec les indices pass&eacute; en param&egrave;tre 2 </span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurDeselectionne (&lt;ps_champ&gt; est cha&icirc;ne, &lt;pt_LstIndice&gt; est tableau)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : nom du champ interrupteur &agrave; manipuler</span>
<span style="color: #808080;">//        pt_LstIndice (tableau) : Liste des indices des options &agrave; d&eacute;s&eacute;lectionner</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurDeselectionne (Int_LstOptions..nom,[1,3,7])</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurDeselectionne<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span>,pt_LstIndice <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">tableau</span> d'<span style="color: #0080ff;">entiers</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Declaration des variables</span>
ls_MessageErreur <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">une</span> <span style="color: #0080ff;">cha&icirc;ne</span>
li_interrupteurOccurrence <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">entier</span>
&nbsp;
<span style="color: #808080;">//-----&gt;Initialisation des variables</span>
ls_MessageErreur=<span style="color: #FF0000;">&quot;Vous avez appel&eacute; l'op&eacute;rateur [] sur le champ %1.&quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;L'indice sp&eacute;cifi&eacute; [%2] est invalide. &quot;</span>+<span style="color: #339933;">RC</span>+...
<span style="color: #FF0000;">&quot;Les valeurs valides sont comprises entre 1 et %3 (inclus).&quot;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                <span style="color: #808080;">//-----&gt;Initialisation des variables</span>
                li_interrupteurOccurrence=<span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Occurrence</span>
&nbsp;
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> pt_LstIndice..<span style="color: #339933;">Occurrence</span>
                        <span style="font-weight:700;">SI</span> pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span> &lt;= li_interrupteurOccurrence <span style="font-weight:700;">ALORS</span>
                                <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span><span class="br0">&#93;</span>=<span style="color: #339933;">Faux</span>
                        <span style="font-weight:700;">SINON</span>
                                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #0000ff;">Cha&icirc;neConstruit</span><span class="br0">&#40;</span>ls_MessageErreur,ps_champ,pt_LstIndice<span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>,li_interrupteurOccurrence<span class="br0">&#41;</span><span class="br0">&#41;</span>
                        <span style="font-weight:700;">FIN</span>
                <span style="font-weight:700;">FIN</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d'utilisation : </u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurDeselectionne<span class="br0">&#40;</span>Int_LstOPtions..<span style="color: #339933;">nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">7</span><span class="br0">&#93;</span><span class="br0">&#41;</span></pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurDeselectionneTout</b></font></div><br />
Cette fonction désélectionne toutes les options du champ interrupteur passé en paramètre<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// R&eacute;sum&eacute; : D&eacute;selectionne toutes les option d'un interrupteur</span>
<span style="color: #808080;">// Syntaxe :</span>
<span style="color: #808080;">//InterrupteurDeselectionneTout (&lt;ps_champ&gt; est cha&icirc;ne)</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Param&egrave;tres :</span>
<span style="color: #808080;">//        ps_champ (cha&icirc;ne ANSI) : Nom du champ de type interrupteur</span>
<span style="color: #808080;">// Valeur de retour :</span>
<span style="color: #808080;">//         Aucune</span>
<span style="color: #808080;">//</span>
<span style="color: #808080;">// Exemple :</span>
<span style="color: #808080;">// InterrupteurDeselectionneTout(Int_option..nom)</span>
<span style="color: #808080;">//</span>
<span style="font-weight:700;">PROCEDURE</span> InterrupteurDeselectionneTout<span class="br0">&#40;</span>ps_champ <span style="color: #0080ff;">est</span> <span style="color: #0080ff;">un</span> <span style="color: #0080ff;">cha&icirc;ne</span><span class="br0">&#41;</span>
&nbsp;
<span style="font-weight:700;">SI</span> <span style="color: #0000ff;">ChampExiste</span><span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span> <span style="font-weight:700;">ALORS</span>
        <span style="font-weight:700;">SI</span> <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span>..<span style="color: #339933;">Type</span> = typInterr <span style="font-weight:700;">ALORS</span>
                <span style="font-weight:700;">POUR</span> li_i=<span style="color: #cc66cc;">1</span> <span style="font-weight:700;">_A_</span> InterrupteurOccurrence<span class="br0">&#40;</span>ps_champ<span class="br0">&#41;</span>
                        <span class="br0">&#123;</span>ps_champ,<span style="color: #339933;">indChamp</span><span class="br0">&#125;</span><span class="br0">&#91;</span>li_i<span class="br0">&#93;</span>=<span style="color: #cc66cc;">0</span>
                <span style="font-weight:700;">FIN</span>
        <span style="font-weight:700;">SINON</span>
                <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'est pas de type interrupteur&quot;</span><span class="br0">&#41;</span>
        <span style="font-weight:700;">FIN</span>
<span style="font-weight:700;">SINON</span>
        <span style="color: #0000ff;">ExceptionD&eacute;clenche</span><span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #FF0000;">&quot;Le champ '&quot;</span>+ps_champ+<span style="color: #FF0000;">&quot;' n'existe pas&quot;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<u>Exemple d’utilisation : </u><br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">InterrupteurDeselectionneTout<span class="br0">&#40;</span>Int_LstOPtions..<span style="color: #339933;">nom</span><span class="br0">&#41;</span></pre>
</div><br />
<font size="4"><b>Les exceptions</b></font><br />
<hr /><br />
<br />
Comme vous avez pu le constater en lisant le code source des fonctions, celles-ci déclenchent des exceptions en cas de problème. Trois types d'exceptions sont gérées : <br />
<br />
<div class="cms_table"><table width="500" class="cms_table_grid"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Code</td>
<td class="cms_table_grid_td">Message</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">1</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'existe pas</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">2</td>
<td class="cms_table_grid_td">Le champ '%%Champ%%' n'est pas de type interrupteur</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">3</td>
<td class="cms_table_grid_td">Vous avez appelé l'opérateur [] sur le champ %%Champ%%.&lt;br&gt;<br />
&quot;L'indice spécifié [%Indice%%] est invalide. &quot;+RC+...<br />
&quot;Les valeurs valides sont comprises entre 1 et %%Occurrence%% (inclus).</td>
</tr>
</table></div>
<br />
<u>Exemple d'utilisation avec la gestion des exceptions :</u><br />
<br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurSelectionne</b></font></div><br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:96px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	InterrupteurSelectionne<span class="br0">&#40;</span>Int_LstOptions..<span style="color: #339933;">Nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">20</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurSelectionneTout</b></font></div><br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:96px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	InterrupteurSelectionneTout<span class="br0">&#40;</span>Int_LstOptions..<span style="color: #339933;">Nom</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurDeselectionne</b></font></div><br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:96px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	InterrupteurDeSelectionne<span class="br0">&#40;</span>Int_LstOptions..<span style="color: #339933;">Nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">20</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<div style="margin-left:40px"><font size="3"><b>InterrupteurDeselectionneTout</b></font></div><br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code WinDev :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:96px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0"><span style="font-weight:700;">QUAND</span> <span style="font-weight:700;">EXCEPTION</span> <span style="font-weight:700;">DANS</span> 
	InterrupteurDeselectionneTout<span class="br0">&#40;</span>Int_LstOptions..<span style="color: #339933;">Nom</span>,<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">20</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span style="font-weight:700;">FAIRE</span>
	<span style="color: #808080;">//Gestion des exceptions</span>
<span style="font-weight:700;">FIN</span></pre></td></tr></table></pre>
</div><br />
<font size="4"><b>Conclusion</b></font><br />
<hr /><br />
<br />
Par ce billet, je viens de mettre à disposition de la communauté des fonctions pour améliorer la gestion par programmation du champ Interrupteur. N'hésitez pas à me faire part de vos retours pour améliorer, compléter la liste de ces fonctions. <br />
A voir, si PC-Soft intégrera ces propositions dans une future version de son EDI.<br />
<br />
Bon dev à tous :ccool:</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b585/windev-fonctions-selection-deselection-champs-interrupteurs/</guid>
		</item>
		<item>
			<title><![CDATA[WinDev : HsupprimeTout et les contraintes d'intégrité référentielle en cascade]]></title>
			<link>https://www.developpez.net/forums/blogs/25867-dsr57/b543/windev-hsupprimetout-contraintes-d-integrite-referentielle-cascade/</link>
			<pubDate>Thu, 11 Jun 2015 19:42:20 GMT</pubDate>
			<description>Ce billet traite de la...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore"><font size="4"><font color="#696969">Ce billet traite de la fonction HSupprimeTout et les contraintes d'intégrité dans l'EDI WinDev</font></font><br />
<br />
<br />
<b><font size="4">Définition</font></b><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p180395d1434096212/c-cpp/outils-c-cpp/cppbuilder/timage/definition-web.jpg/" border="0" alt="Nom : definition-web.jpg
Affichages : 2023
Taille : 11,6 Ko"  style="float: CONFIG" /></div><br />
Les contraintes d'intégrité référentielle en cascade définissent les actions exécutées par un SGBD lorsqu'un utilisateur tente de supprimer ou de mettre à jour une clé vers laquelle pointent des clés étrangères existantes.<br />
<br />
<b><font size="4">Contexte technique</font></b><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p180396d1434096232/c-cpp/outils-c-cpp/cppbuilder/timage/contexte.jpg/" border="0" alt="Nom : Contexte.jpg
Affichages : 2019
Taille : 7,6 Ko"  style="float: CONFIG" /></div><br />
<u>WinDev :</u> 19, 20<br />
<u>BDD :</u> HF classic et HF SQL<br />
<br />
Une table commande avec les colonnes suivantes <br />
<br />
<div class="cms_table"><table width="500" class="cms_table_grid" align="center"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Nom</td>
<td class="cms_table_grid_td">Description</td>
<td class="cms_table_grid_td">Type</td>
<td class="cms_table_grid_td">Taille</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">ID</td>
<td class="cms_table_grid_td">Identifiant</td>
<td class="cms_table_grid_td">Id. automatique</td>
<td class="cms_table_grid_td">8</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Date</td>
<td class="cms_table_grid_td">Date de la commande</td>
<td class="cms_table_grid_td">Date</td>
<td class="cms_table_grid_td">8</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Numero</td>
<td class="cms_table_grid_td">Numéro interne de la commande</td>
<td class="cms_table_grid_td">Texte</td>
<td class="cms_table_grid_td">10</td>
</tr>
</table></div>
<br />
Une table DetailCommande avec les colonnes suivantes : <br />
<br />
<div class="cms_table"><table width="500" class="cms_table_grid" align="center"><tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Nom</td>
<td class="cms_table_grid_td">Description</td>
<td class="cms_table_grid_td">Type</td>
<td class="cms_table_grid_td">Taille</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">ID</td>
<td class="cms_table_grid_td">Identifiant</td>
<td class="cms_table_grid_td">Id. automatique</td>
<td class="cms_table_grid_td">8</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">IDCommande</td>
<td class="cms_table_grid_td">Identifiant de la commande</td>
<td class="cms_table_grid_td">Numerique</td>
<td class="cms_table_grid_td">8</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Ligne</td>
<td class="cms_table_grid_td">Numéro de la ligne de la commande</td>
<td class="cms_table_grid_td">Numérique</td>
<td class="cms_table_grid_td">4</td>
</tr>
<tr valign="top" class="cms_table_grid_tr"><td class="cms_table_grid_td">Article</td>
<td class="cms_table_grid_td">Id de l'article</td>
<td class="cms_table_grid_td">Numerique</td>
<td class="cms_table_grid_td">4</td>
</tr>
</table></div>
<br />
<u>cardinalités :</u> 0,n --- 1,1 <br />
<u>contrainte d'intégrité pour suppression :</u> &quot;<font color="#0000FF">Supprimer le commande et tous ses DetailCommande</font>&quot;.<br />
<br />
<br />
<b><font size="4">Suppression du contenu </font></b><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p180371d1434051385/c-cpp/outils-c-cpp/cppbuilder/timage/supprimer.jpg/" border="0" alt="Nom : Supprimer.jpg
Affichages : 4405
Taille : 8,5 Ko"  style="float: CONFIG" /></div><br />
<br />
Afin de tester le respect de la contrainte d'intégrite, nous allons supprimer l'ensemble du conte de la table Commande. WinDev met à notre disposition deux fonctions Hyperfile : <br />
<ul><li style=""><font color="#0000FF">HSupprime</font></li><li style=""><font color="#0000FF">HSupprimeTout</font></li></ul><br />
<br />
<b><div style="margin-left:40px"><font size="3">Suppression via HSupprime</font></div></b><br />
<br />
WinDev permet de supprimer un enregistrement avec la fonction HSupprime, pour supprimer l'ensemble des enregistrements nous mettons en place une boucle qui parcours le fichier. <br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:84px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">
POUR TOUT EXPRESS_Commande 
	HSupprime(EXPRESS_Commande)
FIN</pre></td></tr></table></pre>
</div>Nous constatons que le fichier CommandeDetail est vide. <br />
<br />
<b><div style="margin-left:40px"><font size="3">Suppression via HSupprimeTout</font></div></b><br />
<br />
WinDev permet de supprimer l'ensemble du contenu d'un fichier avec la fonction <font color="#0000FF">HsupprimeTout</font>, mettons en pratique cette fonction<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:36px;">HSupprimeTout(EXPRESS_Commande)</pre>
</div>Comparé au code précédent, nous avons un code plus concis, plus clair et qui se comprend très rapidement. Cette fonction à que des avantages ... mais nous n'avons pas vérifié le contenu du fichier CommandeDetail. Surprise, celui-ci contient tous les enregistrements, la fonction <font color="#0000FF">HSupprimeTout </font>ne prend pas en compte la contrainte d'intégrité définie. J'ai effectué une requête au support technique qui m'a confirmé la non prise en charge, voici lleur réponse : <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				Bonjour Monsieur xxxxxx, <br />
<br />
Merci pour ces éléments. En fait HSupprimeTout ne réalise pas une suppression classique, à la manière de hSupprime. Cette commande est plutôt une version rapide de hCreation(), car notamment, elle réinitialise les identifiants automatiques.<br />
<br />
Cette commande n'active pas le contrôle d'intégrité.<br />
<br />
Je suis sincèrement désolé de la gêne occasionnée et je vous remercie de votre coopération. <br />
<br />
L'équipe du Support Technique Gratuit reste à votre disposition.
			
		</div>
	</div>
</div><br />
<b><font size="4">Conclusion</font></b><br />
<br />
Avec cette exemple et la confirmation de PC-Soft, nous avons constaté la non prise charge les contraintes d'intégrité par la fonction HSupprimeTout, cette constatation ne rend pas la fonction inutilisable. Il est possible de l'utiliser mais dans le cas d'utilisation de contraintes d'intégrité, vous devrez gérer celle-ci manuellement. A voir si Pc-Soft améliorera cette fonction dans la version 21<br />
<br />
Affaire à suivre</blockquote>

]]></content:encoded>
			<dc:creator>dsr57</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/25867-dsr57/b543/windev-hsupprimetout-contraintes-d-integrite-referentielle-cascade/</guid>
		</item>
	</channel>
</rss>
