<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[فروم تخصصی - پشتیبانی CPSD - توابع داخلی اکسس]]></title>
		<link>http://cpsd.ir/forum/</link>
		<description><![CDATA[فروم تخصصی - پشتیبانی CPSD - http://cpsd.ir/forum]]></description>
		<pubDate>Thu, 23 Apr 2026 16:57:32 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[نحوه چاپ موارد مورد نظر از یک جدول برای پرینت]]></title>
			<link>http://cpsd.ir/forum/showthread.php?tid=405</link>
			<pubDate>Wed, 01 Mar 2017 22:39:26 +0330</pubDate>
			<guid isPermaLink="false">http://cpsd.ir/forum/showthread.php?tid=405</guid>
			<description><![CDATA[سلام. در فایل ارسالی میخوام جدول پایینی که به صورت دستی وارد شده،<br />
با توجه به جدول بالایی به صورت اتوماتیک پر بشه.<br />
<br />
اگر ممکنه در اینکار کمکم کنید. ممنون<br />
<br />
<a href="http://uploadboy.me/dzk69ncu29h7/Book.xlsx.html" target="_blank">http://uploadboy.me/dzk69ncu29h7/Book.xlsx.html</a>]]></description>
			<content:encoded><![CDATA[سلام. در فایل ارسالی میخوام جدول پایینی که به صورت دستی وارد شده،<br />
با توجه به جدول بالایی به صورت اتوماتیک پر بشه.<br />
<br />
اگر ممکنه در اینکار کمکم کنید. ممنون<br />
<br />
<a href="http://uploadboy.me/dzk69ncu29h7/Book.xlsx.html" target="_blank">http://uploadboy.me/dzk69ncu29h7/Book.xlsx.html</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[تابع IIf]]></title>
			<link>http://cpsd.ir/forum/showthread.php?tid=74</link>
			<pubDate>Fri, 01 Jul 2011 12:06:31 +0430</pubDate>
			<guid isPermaLink="false">http://cpsd.ir/forum/showthread.php?tid=74</guid>
			<description><![CDATA[با سلام<br />
<br />
<div style="text-align: justify;">نگاهی با هم به <span style="font-weight: bold;">تابع IIf </span>داشته باشیم<br />
<br />
تابع IIf مخفف عبارت <span style="font-weight: bold;">Immediate If</span> و یا همون If فوری هستش , شاید بشه گفت علت این نام گذاری , سهولت کاربرد اون در شروط ساده هستش<br />
<br />
تابع IIf در دسته توابعی قرار میگیره که به شما در پیاده سازی <span style="font-weight: bold;">ساختار تصمیم گیری </span>کمک میکنند<br />
<br />
در واقع تابع IIf معادل ساختارهای شرطی If Then Else و If Then Elseif هستش<br />
<br />
ساختار تصمیم گیری در واقع این سناریو رو پوشش میده که شما خروجی رو مقید به یک تصمیم خاص میکنید , فرضا <span style="font-weight: bold;">اگر</span> عدد ورودی کاربر زوج بود آنگاه برنامه اقدام به نمایش یک پیغام کنه و ...<br />
<br />
پس تا این مرحله متوجه شدیم که دستور IIf در مواقعی که در جمله سئوالی ما کلمه "<span style="font-weight: bold;">اگر</span>" وجود داشته باشه کاربرد داره ( If در زبان انگلیسی به معنای اگر هستش )<br />
<br />
شکل کلی دستور بدین صورته :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf(expr, truepart, falsepart)</code></div></div>
</div>
<br />
<div style="text-align: justify;">بیایم این عبارت رو در قالب یک جمله مطرح کنیم<br />
<br />
سئوال : <span style="font-weight: bold;">اگر</span> نمره ورودی <span style="font-weight: bold;">بالاتر از 10</span> بود عبارت Pass و در غیر اینصورت عبارت Fail بر روی خروجی صادر شود<br />
<br />
اگر نمره ورودی بالاتر از 10 بود در واقع همون Expr هستش<br />
<br />
جمله ای که بلافاصله بعد از شرط اولیه اومده موید Truepart هستش و جمله انتهایی هم مولفه بخش Falsepart<br />
<br />
پس در بخش Truepart ما باید نتیجه ای رو درج کنیم که با شرط منطبق بوده و در قسمت Falsepart به صورت معکوس<br />
<br />
جمله فوق در داخل دستور IIf با در نظر گرفتن این فرض که Entery همون عدد ورودی هستش به صورت زیر نوشته میشه :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf((Entery &gt; 10), "Pass", "Fail")</code></div></div>
</div>
<br />
<div style="text-align: justify;">نکته ای در خصوص دستور IIf حائز اهمیته این مورده که متاسفانه دستور IIf اقدام به اجرای هر دو بخش Truepart و Falsepart میکنه و در نهایت یکی از این دو رو بر روی خروجی ارسال خواهد کرد , همین امر منجر میشه که سرعت اجرای این تابع به نسبت <span style="font-weight: bold;">پایین</span> بوده و در رویه های تکراری تا حد امکان باید از به کارگیری اون خودداری کرد<br />
<br />
دستور IIf در واقع گونه آماده شده دستورات If در محیط VBA هستش که شما رو بی نیاز از برنامه نویسی میکنه<br />
<br />
مثال فوق در صورتی که بخواید در داخل دستورات VBA به کمک دستور If درج بشه به صورت زیر خواهد بود :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function EvaluateGrade(Entery As Long) As String<br />
<br />
If Entery &gt; 10 Then<br />
&nbsp;&nbsp;EvaluateGrade = "Pass"<br />
Else<br />
&nbsp;&nbsp;EvaluateGrade = "Fail"<br />
End If<br />
<br />
End Function</code></div></div>
</div>
<br />
<div style="text-align: justify;">و همین دستور در صورتی که بخواید در داخل محیط VBA با استفاده از دستور IIf درج کنید بدین گونه خواهد شد :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function EvaluateGrade(Entery As Long) As String<br />
<br />
EvaluateGrade = IIf((Entery &gt; 10), "Pass", "Fail")<br />
<br />
End Function</code></div></div>
</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">نکته :</span> شاید در ذهنتون این شبه ایجاد بشه که بارها یکی از عوامل موثر در سرعت اجرا <span style="font-weight: bold;">تعداد خطوط برنامه نویسی</span> عنوان شده , پس با توجه به اینکه دستور دوم تنها شامل یک خط هستش ( دستور IIf ) , چگونه سرعت اجرای اون کمتر از حالتی هست که تعداد خطوط 5 خط شده ( دستور If ) ؟!<br />
<br />
در پاسخ باید به این نکته اشاره کرد که تعداد خطوط یکی از عوامل بوده ولیکن هر یک از خطوط وزن اجرایی خاص خودشون رو دارند , در دستور If تنها بخشی که همیشه اجرا میشه اون بخشی هست که مشتمل بر شرط هستش و مابقی خطوط تنها در صورتی اجرا خواهند شد که شرط لازم حاصل بشه<br />
ضمن اینکه در دستور If بر خلاف دستور IIf تنها اون بخشی اجرا میشه که انطباق کاملی با شرط ورودی داره , همین امر افزایش سرعت دستور If رو بر دستور IIf توجیح میکنه<br />
<br />
یکی از <span style="font-weight: bold;">محدودیتهای تابع IIf </span>تعداد شروط تو در توی اونه , تابع IIf قادر به اجرای <span style="font-weight: bold;">7 لایه</span> تو در توی شرطی هستش و در صورتی که ساختار تصمیم گیری شما بیشتر از 7 لایه باشه , شما ناگزیر به استفاده از دستور If هستید<br />
گو اینکه محدودیت 7 لایه میشه گفت تقریبا یک محدودیت دست نیافتنی هستش چرا که در بسیاری موارد شما حداکثر در همون لایه سوم و یا چهارم متوقف خواهید شد و این محدودیت یک محدودیت تئوریکه تا یک محدودیت عملیاتی<br />
<br />
جهت اینکه با لایه شرطی تو در تو هم آشنایی نسبی پیدا کنید مثال فوق رو اندکی بسط میدیم<br />
<br />
در همون مثال اگر نمره ورودی بالاتر از 15 بود عبارت Excellent به جای Pass درج بشه<br />
<br />
در ابتدا این بخش رو تحلیل میکنیم<br />
<br />
نمره ای که بالاتر از 15 باشه پس بالاتر از 10 هم خواهد بود , همین امر کمک میکنه که تشخیص بدیم دستور IIf دوم رو باید در داخل بخش Truepart دستور IIf اول بنویسیم<br />
<br />
به دستور زیر و تغییراتی که نسبت به دستور اولیه پیدا کرده توجه کنید :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf((Entery &gt; 10), IIf((Entery &gt; 15), "Excellent", "Pass"), "Fail")</code></div></div>
</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">تذکر : </span>در هنگام استفاده از تابع IIf دقت لازم رو به خرج بدید , متاسفانه این تابع پتانسیل بالایی در برگردوندن خطا داره<br />
 به یک مثال نگاهی بندازیم :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf(EnteryA &lt;&gt; 0, EnteryB / EnteryA, 0)</code></div></div>
</div>
<br />
<div style="text-align: justify;">در مثال فوق قصدمون اینه که اگر عدد ورودی EnteryA مساوی با صفر نبود محاسبه ای که انجام میشه EnteryB/EnteryA باشه و در صورتی که عدد ورودی EnteryA برابر با صفر باشه خروجی هم صفر در نظر گرفته بشه<br />
در تئوری مشکلی منطقی در دستور وجود نداره ! ولیکن چرا یک مشکل اساسی وجود داره !<br />
امیدوارم فراموش نکرده باشید که دستور IIf هر دو بخش Truepart و Falsepart رو اجرا میکنه و در نهایت یکی از این دو رو با توجه به شرط اولیه بر روی خروجی ارسال میکنه<br />
در واقع IIf ابتدا محاسبات رو انجام میده و سپس شرط رو بررسی میکنه !!!<br />
اگر عدد ورودی صفر باشه در این حالت برنامه با صدور خطای تقسیم بر صفر مواجه میشه !</div>
<br />
<div style="text-align: justify;">در مجموع همونطوری که در توضیح <a href="http://www.cpsd.ir/forum/showthread.php?tid=66" target="_blank">تابع Switch</a> عنوان شد بهتره تا جایی که امکان داره از تابع IIf استفاده به عمل نیارید</div>
<br />
موفق باشید]]></description>
			<content:encoded><![CDATA[با سلام<br />
<br />
<div style="text-align: justify;">نگاهی با هم به <span style="font-weight: bold;">تابع IIf </span>داشته باشیم<br />
<br />
تابع IIf مخفف عبارت <span style="font-weight: bold;">Immediate If</span> و یا همون If فوری هستش , شاید بشه گفت علت این نام گذاری , سهولت کاربرد اون در شروط ساده هستش<br />
<br />
تابع IIf در دسته توابعی قرار میگیره که به شما در پیاده سازی <span style="font-weight: bold;">ساختار تصمیم گیری </span>کمک میکنند<br />
<br />
در واقع تابع IIf معادل ساختارهای شرطی If Then Else و If Then Elseif هستش<br />
<br />
ساختار تصمیم گیری در واقع این سناریو رو پوشش میده که شما خروجی رو مقید به یک تصمیم خاص میکنید , فرضا <span style="font-weight: bold;">اگر</span> عدد ورودی کاربر زوج بود آنگاه برنامه اقدام به نمایش یک پیغام کنه و ...<br />
<br />
پس تا این مرحله متوجه شدیم که دستور IIf در مواقعی که در جمله سئوالی ما کلمه "<span style="font-weight: bold;">اگر</span>" وجود داشته باشه کاربرد داره ( If در زبان انگلیسی به معنای اگر هستش )<br />
<br />
شکل کلی دستور بدین صورته :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf(expr, truepart, falsepart)</code></div></div>
</div>
<br />
<div style="text-align: justify;">بیایم این عبارت رو در قالب یک جمله مطرح کنیم<br />
<br />
سئوال : <span style="font-weight: bold;">اگر</span> نمره ورودی <span style="font-weight: bold;">بالاتر از 10</span> بود عبارت Pass و در غیر اینصورت عبارت Fail بر روی خروجی صادر شود<br />
<br />
اگر نمره ورودی بالاتر از 10 بود در واقع همون Expr هستش<br />
<br />
جمله ای که بلافاصله بعد از شرط اولیه اومده موید Truepart هستش و جمله انتهایی هم مولفه بخش Falsepart<br />
<br />
پس در بخش Truepart ما باید نتیجه ای رو درج کنیم که با شرط منطبق بوده و در قسمت Falsepart به صورت معکوس<br />
<br />
جمله فوق در داخل دستور IIf با در نظر گرفتن این فرض که Entery همون عدد ورودی هستش به صورت زیر نوشته میشه :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf((Entery &gt; 10), "Pass", "Fail")</code></div></div>
</div>
<br />
<div style="text-align: justify;">نکته ای در خصوص دستور IIf حائز اهمیته این مورده که متاسفانه دستور IIf اقدام به اجرای هر دو بخش Truepart و Falsepart میکنه و در نهایت یکی از این دو رو بر روی خروجی ارسال خواهد کرد , همین امر منجر میشه که سرعت اجرای این تابع به نسبت <span style="font-weight: bold;">پایین</span> بوده و در رویه های تکراری تا حد امکان باید از به کارگیری اون خودداری کرد<br />
<br />
دستور IIf در واقع گونه آماده شده دستورات If در محیط VBA هستش که شما رو بی نیاز از برنامه نویسی میکنه<br />
<br />
مثال فوق در صورتی که بخواید در داخل دستورات VBA به کمک دستور If درج بشه به صورت زیر خواهد بود :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function EvaluateGrade(Entery As Long) As String<br />
<br />
If Entery &gt; 10 Then<br />
&nbsp;&nbsp;EvaluateGrade = "Pass"<br />
Else<br />
&nbsp;&nbsp;EvaluateGrade = "Fail"<br />
End If<br />
<br />
End Function</code></div></div>
</div>
<br />
<div style="text-align: justify;">و همین دستور در صورتی که بخواید در داخل محیط VBA با استفاده از دستور IIf درج کنید بدین گونه خواهد شد :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function EvaluateGrade(Entery As Long) As String<br />
<br />
EvaluateGrade = IIf((Entery &gt; 10), "Pass", "Fail")<br />
<br />
End Function</code></div></div>
</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">نکته :</span> شاید در ذهنتون این شبه ایجاد بشه که بارها یکی از عوامل موثر در سرعت اجرا <span style="font-weight: bold;">تعداد خطوط برنامه نویسی</span> عنوان شده , پس با توجه به اینکه دستور دوم تنها شامل یک خط هستش ( دستور IIf ) , چگونه سرعت اجرای اون کمتر از حالتی هست که تعداد خطوط 5 خط شده ( دستور If ) ؟!<br />
<br />
در پاسخ باید به این نکته اشاره کرد که تعداد خطوط یکی از عوامل بوده ولیکن هر یک از خطوط وزن اجرایی خاص خودشون رو دارند , در دستور If تنها بخشی که همیشه اجرا میشه اون بخشی هست که مشتمل بر شرط هستش و مابقی خطوط تنها در صورتی اجرا خواهند شد که شرط لازم حاصل بشه<br />
ضمن اینکه در دستور If بر خلاف دستور IIf تنها اون بخشی اجرا میشه که انطباق کاملی با شرط ورودی داره , همین امر افزایش سرعت دستور If رو بر دستور IIf توجیح میکنه<br />
<br />
یکی از <span style="font-weight: bold;">محدودیتهای تابع IIf </span>تعداد شروط تو در توی اونه , تابع IIf قادر به اجرای <span style="font-weight: bold;">7 لایه</span> تو در توی شرطی هستش و در صورتی که ساختار تصمیم گیری شما بیشتر از 7 لایه باشه , شما ناگزیر به استفاده از دستور If هستید<br />
گو اینکه محدودیت 7 لایه میشه گفت تقریبا یک محدودیت دست نیافتنی هستش چرا که در بسیاری موارد شما حداکثر در همون لایه سوم و یا چهارم متوقف خواهید شد و این محدودیت یک محدودیت تئوریکه تا یک محدودیت عملیاتی<br />
<br />
جهت اینکه با لایه شرطی تو در تو هم آشنایی نسبی پیدا کنید مثال فوق رو اندکی بسط میدیم<br />
<br />
در همون مثال اگر نمره ورودی بالاتر از 15 بود عبارت Excellent به جای Pass درج بشه<br />
<br />
در ابتدا این بخش رو تحلیل میکنیم<br />
<br />
نمره ای که بالاتر از 15 باشه پس بالاتر از 10 هم خواهد بود , همین امر کمک میکنه که تشخیص بدیم دستور IIf دوم رو باید در داخل بخش Truepart دستور IIf اول بنویسیم<br />
<br />
به دستور زیر و تغییراتی که نسبت به دستور اولیه پیدا کرده توجه کنید :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf((Entery &gt; 10), IIf((Entery &gt; 15), "Excellent", "Pass"), "Fail")</code></div></div>
</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">تذکر : </span>در هنگام استفاده از تابع IIf دقت لازم رو به خرج بدید , متاسفانه این تابع پتانسیل بالایی در برگردوندن خطا داره<br />
 به یک مثال نگاهی بندازیم :</div>
<br />
<div style="text-align: left;"><div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf(EnteryA &lt;&gt; 0, EnteryB / EnteryA, 0)</code></div></div>
</div>
<br />
<div style="text-align: justify;">در مثال فوق قصدمون اینه که اگر عدد ورودی EnteryA مساوی با صفر نبود محاسبه ای که انجام میشه EnteryB/EnteryA باشه و در صورتی که عدد ورودی EnteryA برابر با صفر باشه خروجی هم صفر در نظر گرفته بشه<br />
در تئوری مشکلی منطقی در دستور وجود نداره ! ولیکن چرا یک مشکل اساسی وجود داره !<br />
امیدوارم فراموش نکرده باشید که دستور IIf هر دو بخش Truepart و Falsepart رو اجرا میکنه و در نهایت یکی از این دو رو با توجه به شرط اولیه بر روی خروجی ارسال میکنه<br />
در واقع IIf ابتدا محاسبات رو انجام میده و سپس شرط رو بررسی میکنه !!!<br />
اگر عدد ورودی صفر باشه در این حالت برنامه با صدور خطای تقسیم بر صفر مواجه میشه !</div>
<br />
<div style="text-align: justify;">در مجموع همونطوری که در توضیح <a href="http://www.cpsd.ir/forum/showthread.php?tid=66" target="_blank">تابع Switch</a> عنوان شد بهتره تا جایی که امکان داره از تابع IIf استفاده به عمل نیارید</div>
<br />
موفق باشید]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[تابع LCase و UCase]]></title>
			<link>http://cpsd.ir/forum/showthread.php?tid=67</link>
			<pubDate>Wed, 18 May 2011 23:32:52 +0430</pubDate>
			<guid isPermaLink="false">http://cpsd.ir/forum/showthread.php?tid=67</guid>
			<description><![CDATA[با سلام<br />
<br />
<div style="text-align: justify;">در این بخش به بررسی دو تابع <span style="font-weight: bold;">LCase</span> و <span style="font-weight: bold;">UCase</span> پرداخته و نگاهی به نحوه کاربرد آنها خواهیم داشت<br />
<br />
تابع LCase مخفف عبارت Lower Case و یا حروف کوچک میباشد , همانگونه که از نام آن پیداست , قادر میباشد اقدام به تبدیل حروف تشکیل دهنده عبارت ورودی به حروف کوچک معادل همان عبارت نماید .</div>
<br />
شکل کلی دستور به صورت ذیل میباشد :<br />
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>LCase(string)</code></div></div>
<br />
<div style="text-align: justify;">متغیر ورودی مورد پذیرش از نوع رشته و یا همان String بوده و خروجی تابع نیز به صورت String خواهد بود<br />
<br />
به مثالهای زیر توجه نمایید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Lcase("www.CPSD.ir")=www.cpsd.ir<br />
Lcase("wWw.CPsd.iR")=www.cpsd.ir</code></div></div>
<br />
<div style="text-align: justify;">همانگونه که ملاحظه می کنید , خروجی تابع بدون توجه به بزرگ و کوچک بودن حروف متشکله متن ورودی , تنها ترکیبی از <span style="font-weight: bold;">حروف کوچک</span> خواهد بود</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">توضیح :</span> عملیات تبدیل تنها در خصوص کاراکترهایی صورت خواهد گرفت که معادل کوچک و بزرگ آنها وجود داشته باشد , به طور مثال در صورتی که متن ورودی شامل عدد نیز باشد , بخش عددی به همان صورت اولیه بر روی خروجی ارسال خواهد شد , به مثال زیر توجه کنید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Lcase("www.123CPSD.ir")=www.123cpsd.ir</code></div></div>
<br />
در خصوص تابع UCase نیز به همین مقدار بسنده میکنیم که UCase مخفف Upper Case و یا همان حروف بزرگ می باشد و تنها تفاوت آن با تابع LCase در این نکته است که این تابع اقدام به ارسال متن بر روی خروجی به صورت ترکیبی از حروف بزرگ خواهد نمود<br />
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Ucase("www.123CPSD.ir")=WWW.123CPSD.IR</code></div></div>
<br />
<span style="font-weight: bold;">تذکر : </span>این تابع تاثیری بر روی متون فارسی ندارد<br />
<br />
<div style="text-align: justify;">در تصویر زیر میتوانید با نمای کلی نحوه کاربرد این دو تابع در داخل یک پرس و جو نیز آشنا شوید</div>
<br />
<img src="http://www.cpsd.ir/MyResource/images/training/lucase.png" border="0" alt="[تصویر:  lucase.png]" /><br />
<br />
خدانگهدار]]></description>
			<content:encoded><![CDATA[با سلام<br />
<br />
<div style="text-align: justify;">در این بخش به بررسی دو تابع <span style="font-weight: bold;">LCase</span> و <span style="font-weight: bold;">UCase</span> پرداخته و نگاهی به نحوه کاربرد آنها خواهیم داشت<br />
<br />
تابع LCase مخفف عبارت Lower Case و یا حروف کوچک میباشد , همانگونه که از نام آن پیداست , قادر میباشد اقدام به تبدیل حروف تشکیل دهنده عبارت ورودی به حروف کوچک معادل همان عبارت نماید .</div>
<br />
شکل کلی دستور به صورت ذیل میباشد :<br />
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>LCase(string)</code></div></div>
<br />
<div style="text-align: justify;">متغیر ورودی مورد پذیرش از نوع رشته و یا همان String بوده و خروجی تابع نیز به صورت String خواهد بود<br />
<br />
به مثالهای زیر توجه نمایید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Lcase("www.CPSD.ir")=www.cpsd.ir<br />
Lcase("wWw.CPsd.iR")=www.cpsd.ir</code></div></div>
<br />
<div style="text-align: justify;">همانگونه که ملاحظه می کنید , خروجی تابع بدون توجه به بزرگ و کوچک بودن حروف متشکله متن ورودی , تنها ترکیبی از <span style="font-weight: bold;">حروف کوچک</span> خواهد بود</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">توضیح :</span> عملیات تبدیل تنها در خصوص کاراکترهایی صورت خواهد گرفت که معادل کوچک و بزرگ آنها وجود داشته باشد , به طور مثال در صورتی که متن ورودی شامل عدد نیز باشد , بخش عددی به همان صورت اولیه بر روی خروجی ارسال خواهد شد , به مثال زیر توجه کنید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Lcase("www.123CPSD.ir")=www.123cpsd.ir</code></div></div>
<br />
در خصوص تابع UCase نیز به همین مقدار بسنده میکنیم که UCase مخفف Upper Case و یا همان حروف بزرگ می باشد و تنها تفاوت آن با تابع LCase در این نکته است که این تابع اقدام به ارسال متن بر روی خروجی به صورت ترکیبی از حروف بزرگ خواهد نمود<br />
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Ucase("www.123CPSD.ir")=WWW.123CPSD.IR</code></div></div>
<br />
<span style="font-weight: bold;">تذکر : </span>این تابع تاثیری بر روی متون فارسی ندارد<br />
<br />
<div style="text-align: justify;">در تصویر زیر میتوانید با نمای کلی نحوه کاربرد این دو تابع در داخل یک پرس و جو نیز آشنا شوید</div>
<br />
<img src="http://www.cpsd.ir/MyResource/images/training/lucase.png" border="0" alt="[تصویر:  lucase.png]" /><br />
<br />
خدانگهدار]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[تابع Switch]]></title>
			<link>http://cpsd.ir/forum/showthread.php?tid=66</link>
			<pubDate>Wed, 18 May 2011 23:00:43 +0430</pubDate>
			<guid isPermaLink="false">http://cpsd.ir/forum/showthread.php?tid=66</guid>
			<description><![CDATA[ضمن سلام<br />
<br />
<div style="text-align: justify;">در این قسمت به بررسی یکی از توابعی می پردازیم که متاسفانه در اکثر موارد جایگاهی مناسب در حل مشکلات پیدا نکرده , که این می تواند تا حدودی ناشی از عدم اطلاع از کاربرد این تابع داشته باشد<br />
<br />
قبل از شروع نگاهی کوتاه به دو <span style="font-weight: bold;">ساختار تصمیم گیری</span> می اندازیم<br />
<br />
ساختارهای تصمیم گیری به آن قسمت از الگوریتمها اطلاق میشود که , برنامه با توجه به <span style="font-weight: bold;">شرایط و قوانین </span>برقرار شده , قادر به <span style="font-weight: bold;">ارسال خروجی مناسب</span> میباشد<br />
<br />
دو الگوی بسیار کاربردی در این زمینه دستور IF و Select Case میباشند</div>
<br />
<div style="text-align: justify;">این دو الگو قادر هستند ضمن بررسی و پذیرش شروطی که توسط برنامه نویس اعمال میشوند , اقدام به <span style="font-weight: bold;">تغییر روال اجرایی و محاسباتی </span>برنامه نموده و با توجه به محقق شدن / نشدن شرط , <span style="font-weight: bold;">خروجیهای متفاوت </span>را به نمایش گذارند</div>
<br />
<div style="text-align: justify;">معادل دستور IF در بخش توابع داخلی اکسس با تابع IIF سنجیده میشود ( در حال حاضر قصد بررسی این تابع را نداریم )<br />
<br />
ولیکن این سئوال مطرح میشود که آیا معادل دستور Select Case نیز در بخش توابع داخلی اکسس وجود دارد ؟<br />
<br />
در پاسخ باید گفت : بله</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">تابع Switch</span> قادر است این الگوریتم را با درصد انطباقی بسیار بالا و به سادگی شبیه سازی نماید<br />
<br />
<span style="font-weight: bold;">حال چرا استفاده از این تابع توصیه میشود ؟</span><br />
<br />
تابع Switch <span style="font-weight: bold;">بر خلاف </span>تابع IIF ( که <span style="font-weight: bold;">متاسفانه</span> اکثراً از سوی کاربران همین تابع نیز مورد استفاده قرار میگیرد ) , تنها اقدام به بررسی شروط در حالتی مینماید که مقدار برگشتی TRUE باشد<br />
<br />
به شکل کلی دستور IIF نگاهی بیندازیم :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf(expr, truepart, falsepart)</code></div></div>
<br />
<div style="text-align: justify;">expr در واقع بخشی بوده که شما اقدام به درج شرط می نمایید , در صورتی که شرط محقق شود ( TRUE باشد ) بخش truepart و در صورتی که شرط ناصحیح باشد , بخش falsepart اجرا میشود<br />
<br />
نکته ای که مبهم میباشد این است که چرا حتی در صورت صحیح بودن عبارت اولیه , بخش دوم و یا همان falsepart نیز مورد بررسی قرار میگیرد !<br />
<br />
یکی از دلال کند بودن تابع IIF <span style="font-weight: bold;">بررسی دوباره شرط</span> میباشد , امری که منجر به <span style="font-weight: bold;">کندی مشهود</span> این تابع میگردد .<br />
<br />
در مقابل این رویه , تابع Switch با ساختار زیر قرار دارد :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Switch(expr1, value1 [, expr2, value2 ] … [, exprn, valuen ] )</code></div></div>
<br />
<div style="text-align: justify;">در این حالت ورودی از سمت <span style="font-weight: bold;">چپ به راست</span> مورد بررسی قرار گرفته و در صورت تطابق شرط / expr , مقدار معادل ( Value ) بر روی خروجی بازگردانده میشود<br />
<br />
تنها امری که میتواند باعث شود تابع Switch اقدام به بررسی کلیه عبارتها نماید , عدم تطابق هیچ یک از عبارتها با شروط مورد نظر میباشد<br />
<br />
به بیانی دیگر تابع Switch به محض برخورد با اولین عبارتی که مقدار TRUE را باز گرداند معادل آن را در بخش Value بر روی خروجی صادر خواهد نمود<br />
<br />
مزایای تابع Switch بر تابع IIf میتواند در موارد زیر خلاصه گردد :<br />
<br />
<span style="color: #006400;">- ساختار نوشتاری بسیار واضح تر و منطقی تر<br />
- محدودیت هفت لایه داخلی که بر روی تابع IIf سایه انداخته است , در این تابع وجود ندارد<br />
- سرعت بالاتر در هنگام اجرا</span><br />
<br />
به مثال زیر توجه نمایید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Switch(Left([CustomerID],1)="A","A Level",Left([CustomerID],1)="B","B Level",Left([CustomerID],1)&lt;&gt;"A" Or Left([CustomerID],1)&lt;&gt;"B","C Level")</code></div></div>
<br />
<div style="text-align: justify;">در مثال فوق , تابع اقدام به جداسازی اولیه حرف سمت چپ فیلد CustomerID می نماید , در صورتی که برابر با A باشد , مقدار A Level , در صورتی که برابر با B باشد مقدار B Level و در صورتی که برابر با هیچ یک از این دو نباشد مقدار C Level را بر روی خروجی ارسال مینماید<br />
<br />
استفاده ار این تابع در بسیاری موارد به جایگزینی تابع IIf توصیه میشود<br />
<br />
IIf مخفف immediate if و یا همان if فوری میباشد , ولی متاسفانه تنها در نوشتار اولیه رنگ و بویی از فوریت برده است و نه در اجرا !<br />
<br />
موفق باشید</div>]]></description>
			<content:encoded><![CDATA[ضمن سلام<br />
<br />
<div style="text-align: justify;">در این قسمت به بررسی یکی از توابعی می پردازیم که متاسفانه در اکثر موارد جایگاهی مناسب در حل مشکلات پیدا نکرده , که این می تواند تا حدودی ناشی از عدم اطلاع از کاربرد این تابع داشته باشد<br />
<br />
قبل از شروع نگاهی کوتاه به دو <span style="font-weight: bold;">ساختار تصمیم گیری</span> می اندازیم<br />
<br />
ساختارهای تصمیم گیری به آن قسمت از الگوریتمها اطلاق میشود که , برنامه با توجه به <span style="font-weight: bold;">شرایط و قوانین </span>برقرار شده , قادر به <span style="font-weight: bold;">ارسال خروجی مناسب</span> میباشد<br />
<br />
دو الگوی بسیار کاربردی در این زمینه دستور IF و Select Case میباشند</div>
<br />
<div style="text-align: justify;">این دو الگو قادر هستند ضمن بررسی و پذیرش شروطی که توسط برنامه نویس اعمال میشوند , اقدام به <span style="font-weight: bold;">تغییر روال اجرایی و محاسباتی </span>برنامه نموده و با توجه به محقق شدن / نشدن شرط , <span style="font-weight: bold;">خروجیهای متفاوت </span>را به نمایش گذارند</div>
<br />
<div style="text-align: justify;">معادل دستور IF در بخش توابع داخلی اکسس با تابع IIF سنجیده میشود ( در حال حاضر قصد بررسی این تابع را نداریم )<br />
<br />
ولیکن این سئوال مطرح میشود که آیا معادل دستور Select Case نیز در بخش توابع داخلی اکسس وجود دارد ؟<br />
<br />
در پاسخ باید گفت : بله</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;">تابع Switch</span> قادر است این الگوریتم را با درصد انطباقی بسیار بالا و به سادگی شبیه سازی نماید<br />
<br />
<span style="font-weight: bold;">حال چرا استفاده از این تابع توصیه میشود ؟</span><br />
<br />
تابع Switch <span style="font-weight: bold;">بر خلاف </span>تابع IIF ( که <span style="font-weight: bold;">متاسفانه</span> اکثراً از سوی کاربران همین تابع نیز مورد استفاده قرار میگیرد ) , تنها اقدام به بررسی شروط در حالتی مینماید که مقدار برگشتی TRUE باشد<br />
<br />
به شکل کلی دستور IIF نگاهی بیندازیم :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>IIf(expr, truepart, falsepart)</code></div></div>
<br />
<div style="text-align: justify;">expr در واقع بخشی بوده که شما اقدام به درج شرط می نمایید , در صورتی که شرط محقق شود ( TRUE باشد ) بخش truepart و در صورتی که شرط ناصحیح باشد , بخش falsepart اجرا میشود<br />
<br />
نکته ای که مبهم میباشد این است که چرا حتی در صورت صحیح بودن عبارت اولیه , بخش دوم و یا همان falsepart نیز مورد بررسی قرار میگیرد !<br />
<br />
یکی از دلال کند بودن تابع IIF <span style="font-weight: bold;">بررسی دوباره شرط</span> میباشد , امری که منجر به <span style="font-weight: bold;">کندی مشهود</span> این تابع میگردد .<br />
<br />
در مقابل این رویه , تابع Switch با ساختار زیر قرار دارد :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Switch(expr1, value1 [, expr2, value2 ] … [, exprn, valuen ] )</code></div></div>
<br />
<div style="text-align: justify;">در این حالت ورودی از سمت <span style="font-weight: bold;">چپ به راست</span> مورد بررسی قرار گرفته و در صورت تطابق شرط / expr , مقدار معادل ( Value ) بر روی خروجی بازگردانده میشود<br />
<br />
تنها امری که میتواند باعث شود تابع Switch اقدام به بررسی کلیه عبارتها نماید , عدم تطابق هیچ یک از عبارتها با شروط مورد نظر میباشد<br />
<br />
به بیانی دیگر تابع Switch به محض برخورد با اولین عبارتی که مقدار TRUE را باز گرداند معادل آن را در بخش Value بر روی خروجی صادر خواهد نمود<br />
<br />
مزایای تابع Switch بر تابع IIf میتواند در موارد زیر خلاصه گردد :<br />
<br />
<span style="color: #006400;">- ساختار نوشتاری بسیار واضح تر و منطقی تر<br />
- محدودیت هفت لایه داخلی که بر روی تابع IIf سایه انداخته است , در این تابع وجود ندارد<br />
- سرعت بالاتر در هنگام اجرا</span><br />
<br />
به مثال زیر توجه نمایید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Switch(Left([CustomerID],1)="A","A Level",Left([CustomerID],1)="B","B Level",Left([CustomerID],1)&lt;&gt;"A" Or Left([CustomerID],1)&lt;&gt;"B","C Level")</code></div></div>
<br />
<div style="text-align: justify;">در مثال فوق , تابع اقدام به جداسازی اولیه حرف سمت چپ فیلد CustomerID می نماید , در صورتی که برابر با A باشد , مقدار A Level , در صورتی که برابر با B باشد مقدار B Level و در صورتی که برابر با هیچ یک از این دو نباشد مقدار C Level را بر روی خروجی ارسال مینماید<br />
<br />
استفاده ار این تابع در بسیاری موارد به جایگزینی تابع IIf توصیه میشود<br />
<br />
IIf مخفف immediate if و یا همان if فوری میباشد , ولی متاسفانه تنها در نوشتار اولیه رنگ و بویی از فوریت برده است و نه در اجرا !<br />
<br />
موفق باشید</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[تابع Left]]></title>
			<link>http://cpsd.ir/forum/showthread.php?tid=65</link>
			<pubDate>Wed, 18 May 2011 22:58:58 +0430</pubDate>
			<guid isPermaLink="false">http://cpsd.ir/forum/showthread.php?tid=65</guid>
			<description><![CDATA[ضمن سلام<br />
<br />
<div style="text-align: justify;">در این بخش یکی از توابع داخلی اکسس رو به صورت نمونه انتخاب کرده و سعی میشه اقدام به استفاده از اون در قالبهای مختلف کنیم<br />
<br />
تابعی که در ابتدا به معرفی اون میپردازم <span style="font-weight: bold;">تابع Left </span>هستش که به دلیل <span style="font-weight: bold;">سادگی</span> , میتونه جهت <span style="font-weight: bold;">آغاز کار</span> نمونه ای مناسب به شمار بیاد<br />
<br />
شکل کلی تابع Left  بدین صورت هستش</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left ( String,Length)</code></div></div>
<br />
<div style="text-align: justify;">این تابع دو<span style="font-weight: bold;"> آرگومان ورودی</span> داره که هر دوی اونها , <span style="font-weight: bold;">الزامی</span> هستند . <br />
<br />
<span style="font-weight: bold;">آرگومان اول</span> که در اینجا با نام String مشخص شده , در واقع از شما میخواد که اقدام به مشخص نمودن رشته ای کنید که قصد دارید تعداد مشخصی از کاراکترهای اون رو جداسازی کنید<br />
<br />
<span style="font-weight: bold;">آرگومان دوم</span> و یا همون Length در واقع نمایانگر تعداد کاراکترهایی خواهد بود که شما میخواهید از داخل رشته و از <span style="font-weight: bold;">سمت چپ</span> اون جدا سازی بشن , برخلاف تصور این عدد میتونه پذیرای <span style="font-weight: bold;">عدد اعشاری </span>هم باشه ! به طور مثال از اکسس بخواید 5.4 کاراکتر رو از سمت چپ جدا کنه !<br />
<br />
ولیکن اکسس در این حالت<span style="font-weight: bold;"> ابتدا این عدد رو گرد کرده </span>و بر مبنای اون خروجی رو صادر خواهد کرد ( 5.4 رو 5 و 5.6 رو 6 در نظر خواهد گرفت )<br />
<br />
<span style="font-weight: bold;"><span style="color: #FF0000;">تذکر :</span> </span>عدم درج هر یک از آرگومانهای مورد نیاز منجر به صدور خطا میشه<br />
<br />
این تابع اقدام به جدا سازی تعداد مشخصی از کاراکترهای یک رشته ( متن ) از سمت چپ میکنه , به طور مثال :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",6)=Sample</code></div></div>
<br />
<div style="text-align: justify;">در این مثال 6 کاراکتر از سمت چپ و در مثال زیر :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",2)=Sa</code></div></div>
<br />
<div style="text-align: justify;">دو کاراکتر سمت چپ مورد <span style="font-weight: bold;">جدا سازی</span> واقع میشن و به عنوان <span style="font-weight: bold;">خروجی</span> از سوی تابع صادر شدند</div>
<br />
<div style="text-align: justify;">در دو مثال فوق "ُSample Data" در حکم <span style="font-weight: bold;">آرگومان اول و یا همون String</span> و عددهای 2 و 5 هم در هر یکی از این دو تابع نقش<span style="font-weight: bold;"> آرگومان Length ( طول )</span> رو به عهده دارند</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;"><span style="color: #FF0000;">تذکر : </span></span>تعیین طول در محدوده منفی منجر به صدور خطا خواهد شد<br />
<br />
از همین جا میشه در ذهنتون برخی کاربردهای عملی این تابع رو تداعی کنید , به طور مثال شما میخواید گزارشی داشته باشید از اسامی افراد به تفکیک حرف اول نام ( و یا نام خانوادگی ) اونها , به همون صورتی که شما در دفترچه های تلفن ملاحظه می کنید و یا مواردی دیگه که تفکیک بخشی از یک متن میتونه مد نظر قرار بگیره</div>
<br />
<div style="text-align: justify;">ذکر دو نکته در خصوص آرگومان Length  الزامی هستش , این آرگومان از نوع عددی Long بوده , در صورتی که عدد مد نظر شما <span style="font-weight: bold;">صفر</span> انتخاب بشه خروجی <span style="font-weight: bold;">رشته ای با طول صفر </span>هستش و در صورتی که عدد تعیین شده <span style="font-weight: bold;">از طول واقعی رشته ورودی بیشتر </span>باشه , <span style="font-weight: bold;">کل متن ورودی بدون در نظر گرفتن آرگومان طول</span> , بر روی خروجی ارسال خواهد شد , به مثالهای زیر توجه کنید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",0)=""</code></div></div>
<br />
<div style="text-align: justify;">رشته ای به طول صفر بر روی خروجی ارسال شد , علامتهای "" تنها به جهت مشاهده شما درج شدند وگرنه این علامتها بر روی خروجی نیستند و در داخل اکسس تنها به جهت تعیین نوع داده ورودی متن مورد استفاده قرار میگیرند .</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",20)= Sample Data</code></div></div>
<br />
<div style="text-align: justify;">و در اینجا با توجه به اینکه طول کل رشته 11 کاراکتر هستش ولی آرگومان ورودی 20 تعیین شده , خروجی تنها همون 11 کاراکتر موجود در رشته هستش یعنی Sample Data<br />
<br />
حال اجازه بدید در قدم بعدی اندکی به سمت <span style="font-weight: bold;">سفارشی سازی</span> بریم , چرا که هدف تنها استفاده از این توابع در<span style="font-weight: bold;"> ساده ترین حالت</span> اونها نیست , مثالی که ادامه میاد تنها یک ذهنیت کلی به شما میده و در حال حاضر اصراری در کاربردی بودن اون وجود نداره<br />
<br />
صورت مساله بدین گونه مطرح میشه که : در دو فیلد ( ورودی ) مجزا قصد داریم دو حرف ابتدایی اونها ( در واقع Left ) رو با هم ترکیب و بر روی خروجی به نمایش بذاریم ( دو حرف ابتدایی ورودی اول به همراه دو حرف ابتدایی ورودی دوم)</div>
<br />
<div style="text-align: justify;">قصد داریم این امر رو توسط برنامه نویسی به انجام برسونیم و در واقع با استفاده از تابع Left میخوایم یک <span style="font-weight: bold;">تابع داخلی و سفارشی</span> ایجاد کنیم<br />
<br />
تابع رو در همین ابتدا مینویسم و بعد به تشریح اون میپردازم :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function MyFirstFunction(FirstEntery As String, SecondEntery As String) As String<br />
&nbsp;&nbsp;MyFirstFunction = Left(FirstEntery, 2) &amp; " - " &amp; Left(SecondEntery, 2)<br />
End Function</code></div></div>
<br />
<div style="text-align: justify;">نام تابع رو MyFirstFunction در نظر گرفتم چرا که شاید شما در حال برداشتن اولین قدم در زمینه نوشتن توابع داخلی در اکسس باشید<br />
<br />
FirstEntery و SecondEntery در واقع<span style="font-weight: bold;"> آرگومانهای ورودی</span> و مد نظر شما هستند که به نوعی پذیرای همون<span style="font-weight: bold;"> دو رشته ورودی</span> خواهند بود<br />
<br />
نوع اونها String تعیین شده FirstEntery As String و SecondEntery As String <br />
<br />
چرا که مقدار ورودی این دو متغیر به عنوان مقادیر ورودی تابع Left مورد استفاده قرار خواهند گرفت (Left(FirstEntery, 2  و (Left(SecondEntery, 2 <br />
و همونطوری که فراموش نکردید پارامتر ورودی اولیه در داخل اون از نوع رشته هستش<br />
<br />
خروجی تابع هم از نوع String و یا همون رشته در نظر گرفته شده چرا که تابع دو مقدار رشته ای رو گرفته و پس از ترکیب این دو اونها رو بر روی خروجی ارسال خواهد کرد , پس در حالت استاندارد <span style="font-weight: bold;">ترکیب دو رشته در نهایت از نظر نوع String خواهد بود</span><br />
<br />
حال اجازه بدید همین تابع رو اندکی پیچیده تر کنیم , با اعمال تغییری دیگه این امکان رو میدیم که طول مد نظر تحت کنترل باشه و تنها مقدار ثابت 2 رو در بر نداشته باشه</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function MySecondFunction(FirstEntery As String, SecondEntery As String, SpecificLength As Long) As String<br />
&nbsp;&nbsp;MySecondFunction = Left(FirstEntery, SpecificLength) &amp; " - " &amp; Left(SecondEntery, SpecificLength)<br />
End Function</code></div></div>
<br />
<div style="text-align: justify;">حتما دقت کردید , وظیفه تعیین طول رشته رو به متغیر SpecificLength محول کردیم , نوع اون رو هم از نوع Long  قرار دادیم چرا که SpecificLength به آرگومان Length  در داخل تابع Left پاس داده خواهد شد<br />
<br />
<span style="font-weight: bold;">توضیح تکمیلی : </span>در خصوص نوع آرگومان SpecificLength میتونید نوع داده رو به طور مثال Integer و یا Byte هم در نظر بگیرید , چرا که <span style="font-weight: bold;">نوع داده های Integer و Byte به نوعی زیر مجموعه نوع داده Long هستند </span>  و تنها تفاوت در <span style="font-weight: bold;">محدوده عددی مورد پذیرش</span> هستش<br />
<br />
ذکر یک <span style="font-weight: bold;">نکته</span> نهایی هم اینکه : قرار دادن آرگومان اولیه ( String ) در داخل دو علامت " در صورتی که ورودی از نوع متن بوده باشه <span style="font-weight: bold;">الزامی</span> هستش , به طور مثال استفاده از این تابع به صورت زیر منجر به <span style="font-weight: bold;">صدور خطا</span> میشه</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left(Sample Data,6)</code></div></div>
<br />
<div style="text-align: justify;">البته ذکر یک نکته هم میتونه مفید باشه , در خصوص اعداد این امر <span style="font-weight: bold;">مستثنی</span> هستش به طور نمونه :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left(1234567890,6)=123456</code></div></div>
<br />
<div style="text-align: justify;">منجر به صدور خطا نخواهد شد , در این حالت اکسس به طور <span style="font-weight: bold;">خودکار</span> عدد رو به صورت متن در نظر گرفته و خروجی رو به درستی صادر خواهد کرد , به بیانی دیگر استفاده از تابع به صورت فوق هیچ تفاوتی با حالت کاربردی زیر نخواهد داشت :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("1234567890",6)=123456</code></div></div>
<div style="text-align: justify;">
تصور میکنم مطلب طولانی شد , ترجیح میدم , ادامه مبحث رو در زمانی دیگه داشته باشیم</div>
<br />
پس تا اون زمان خدا نگهدار]]></description>
			<content:encoded><![CDATA[ضمن سلام<br />
<br />
<div style="text-align: justify;">در این بخش یکی از توابع داخلی اکسس رو به صورت نمونه انتخاب کرده و سعی میشه اقدام به استفاده از اون در قالبهای مختلف کنیم<br />
<br />
تابعی که در ابتدا به معرفی اون میپردازم <span style="font-weight: bold;">تابع Left </span>هستش که به دلیل <span style="font-weight: bold;">سادگی</span> , میتونه جهت <span style="font-weight: bold;">آغاز کار</span> نمونه ای مناسب به شمار بیاد<br />
<br />
شکل کلی تابع Left  بدین صورت هستش</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left ( String,Length)</code></div></div>
<br />
<div style="text-align: justify;">این تابع دو<span style="font-weight: bold;"> آرگومان ورودی</span> داره که هر دوی اونها , <span style="font-weight: bold;">الزامی</span> هستند . <br />
<br />
<span style="font-weight: bold;">آرگومان اول</span> که در اینجا با نام String مشخص شده , در واقع از شما میخواد که اقدام به مشخص نمودن رشته ای کنید که قصد دارید تعداد مشخصی از کاراکترهای اون رو جداسازی کنید<br />
<br />
<span style="font-weight: bold;">آرگومان دوم</span> و یا همون Length در واقع نمایانگر تعداد کاراکترهایی خواهد بود که شما میخواهید از داخل رشته و از <span style="font-weight: bold;">سمت چپ</span> اون جدا سازی بشن , برخلاف تصور این عدد میتونه پذیرای <span style="font-weight: bold;">عدد اعشاری </span>هم باشه ! به طور مثال از اکسس بخواید 5.4 کاراکتر رو از سمت چپ جدا کنه !<br />
<br />
ولیکن اکسس در این حالت<span style="font-weight: bold;"> ابتدا این عدد رو گرد کرده </span>و بر مبنای اون خروجی رو صادر خواهد کرد ( 5.4 رو 5 و 5.6 رو 6 در نظر خواهد گرفت )<br />
<br />
<span style="font-weight: bold;"><span style="color: #FF0000;">تذکر :</span> </span>عدم درج هر یک از آرگومانهای مورد نیاز منجر به صدور خطا میشه<br />
<br />
این تابع اقدام به جدا سازی تعداد مشخصی از کاراکترهای یک رشته ( متن ) از سمت چپ میکنه , به طور مثال :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",6)=Sample</code></div></div>
<br />
<div style="text-align: justify;">در این مثال 6 کاراکتر از سمت چپ و در مثال زیر :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",2)=Sa</code></div></div>
<br />
<div style="text-align: justify;">دو کاراکتر سمت چپ مورد <span style="font-weight: bold;">جدا سازی</span> واقع میشن و به عنوان <span style="font-weight: bold;">خروجی</span> از سوی تابع صادر شدند</div>
<br />
<div style="text-align: justify;">در دو مثال فوق "ُSample Data" در حکم <span style="font-weight: bold;">آرگومان اول و یا همون String</span> و عددهای 2 و 5 هم در هر یکی از این دو تابع نقش<span style="font-weight: bold;"> آرگومان Length ( طول )</span> رو به عهده دارند</div>
<br />
<div style="text-align: justify;"><span style="font-weight: bold;"><span style="color: #FF0000;">تذکر : </span></span>تعیین طول در محدوده منفی منجر به صدور خطا خواهد شد<br />
<br />
از همین جا میشه در ذهنتون برخی کاربردهای عملی این تابع رو تداعی کنید , به طور مثال شما میخواید گزارشی داشته باشید از اسامی افراد به تفکیک حرف اول نام ( و یا نام خانوادگی ) اونها , به همون صورتی که شما در دفترچه های تلفن ملاحظه می کنید و یا مواردی دیگه که تفکیک بخشی از یک متن میتونه مد نظر قرار بگیره</div>
<br />
<div style="text-align: justify;">ذکر دو نکته در خصوص آرگومان Length  الزامی هستش , این آرگومان از نوع عددی Long بوده , در صورتی که عدد مد نظر شما <span style="font-weight: bold;">صفر</span> انتخاب بشه خروجی <span style="font-weight: bold;">رشته ای با طول صفر </span>هستش و در صورتی که عدد تعیین شده <span style="font-weight: bold;">از طول واقعی رشته ورودی بیشتر </span>باشه , <span style="font-weight: bold;">کل متن ورودی بدون در نظر گرفتن آرگومان طول</span> , بر روی خروجی ارسال خواهد شد , به مثالهای زیر توجه کنید :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",0)=""</code></div></div>
<br />
<div style="text-align: justify;">رشته ای به طول صفر بر روی خروجی ارسال شد , علامتهای "" تنها به جهت مشاهده شما درج شدند وگرنه این علامتها بر روی خروجی نیستند و در داخل اکسس تنها به جهت تعیین نوع داده ورودی متن مورد استفاده قرار میگیرند .</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("Sample Data",20)= Sample Data</code></div></div>
<br />
<div style="text-align: justify;">و در اینجا با توجه به اینکه طول کل رشته 11 کاراکتر هستش ولی آرگومان ورودی 20 تعیین شده , خروجی تنها همون 11 کاراکتر موجود در رشته هستش یعنی Sample Data<br />
<br />
حال اجازه بدید در قدم بعدی اندکی به سمت <span style="font-weight: bold;">سفارشی سازی</span> بریم , چرا که هدف تنها استفاده از این توابع در<span style="font-weight: bold;"> ساده ترین حالت</span> اونها نیست , مثالی که ادامه میاد تنها یک ذهنیت کلی به شما میده و در حال حاضر اصراری در کاربردی بودن اون وجود نداره<br />
<br />
صورت مساله بدین گونه مطرح میشه که : در دو فیلد ( ورودی ) مجزا قصد داریم دو حرف ابتدایی اونها ( در واقع Left ) رو با هم ترکیب و بر روی خروجی به نمایش بذاریم ( دو حرف ابتدایی ورودی اول به همراه دو حرف ابتدایی ورودی دوم)</div>
<br />
<div style="text-align: justify;">قصد داریم این امر رو توسط برنامه نویسی به انجام برسونیم و در واقع با استفاده از تابع Left میخوایم یک <span style="font-weight: bold;">تابع داخلی و سفارشی</span> ایجاد کنیم<br />
<br />
تابع رو در همین ابتدا مینویسم و بعد به تشریح اون میپردازم :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function MyFirstFunction(FirstEntery As String, SecondEntery As String) As String<br />
&nbsp;&nbsp;MyFirstFunction = Left(FirstEntery, 2) &amp; " - " &amp; Left(SecondEntery, 2)<br />
End Function</code></div></div>
<br />
<div style="text-align: justify;">نام تابع رو MyFirstFunction در نظر گرفتم چرا که شاید شما در حال برداشتن اولین قدم در زمینه نوشتن توابع داخلی در اکسس باشید<br />
<br />
FirstEntery و SecondEntery در واقع<span style="font-weight: bold;"> آرگومانهای ورودی</span> و مد نظر شما هستند که به نوعی پذیرای همون<span style="font-weight: bold;"> دو رشته ورودی</span> خواهند بود<br />
<br />
نوع اونها String تعیین شده FirstEntery As String و SecondEntery As String <br />
<br />
چرا که مقدار ورودی این دو متغیر به عنوان مقادیر ورودی تابع Left مورد استفاده قرار خواهند گرفت (Left(FirstEntery, 2  و (Left(SecondEntery, 2 <br />
و همونطوری که فراموش نکردید پارامتر ورودی اولیه در داخل اون از نوع رشته هستش<br />
<br />
خروجی تابع هم از نوع String و یا همون رشته در نظر گرفته شده چرا که تابع دو مقدار رشته ای رو گرفته و پس از ترکیب این دو اونها رو بر روی خروجی ارسال خواهد کرد , پس در حالت استاندارد <span style="font-weight: bold;">ترکیب دو رشته در نهایت از نظر نوع String خواهد بود</span><br />
<br />
حال اجازه بدید همین تابع رو اندکی پیچیده تر کنیم , با اعمال تغییری دیگه این امکان رو میدیم که طول مد نظر تحت کنترل باشه و تنها مقدار ثابت 2 رو در بر نداشته باشه</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Function MySecondFunction(FirstEntery As String, SecondEntery As String, SpecificLength As Long) As String<br />
&nbsp;&nbsp;MySecondFunction = Left(FirstEntery, SpecificLength) &amp; " - " &amp; Left(SecondEntery, SpecificLength)<br />
End Function</code></div></div>
<br />
<div style="text-align: justify;">حتما دقت کردید , وظیفه تعیین طول رشته رو به متغیر SpecificLength محول کردیم , نوع اون رو هم از نوع Long  قرار دادیم چرا که SpecificLength به آرگومان Length  در داخل تابع Left پاس داده خواهد شد<br />
<br />
<span style="font-weight: bold;">توضیح تکمیلی : </span>در خصوص نوع آرگومان SpecificLength میتونید نوع داده رو به طور مثال Integer و یا Byte هم در نظر بگیرید , چرا که <span style="font-weight: bold;">نوع داده های Integer و Byte به نوعی زیر مجموعه نوع داده Long هستند </span>  و تنها تفاوت در <span style="font-weight: bold;">محدوده عددی مورد پذیرش</span> هستش<br />
<br />
ذکر یک <span style="font-weight: bold;">نکته</span> نهایی هم اینکه : قرار دادن آرگومان اولیه ( String ) در داخل دو علامت " در صورتی که ورودی از نوع متن بوده باشه <span style="font-weight: bold;">الزامی</span> هستش , به طور مثال استفاده از این تابع به صورت زیر منجر به <span style="font-weight: bold;">صدور خطا</span> میشه</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left(Sample Data,6)</code></div></div>
<br />
<div style="text-align: justify;">البته ذکر یک نکته هم میتونه مفید باشه , در خصوص اعداد این امر <span style="font-weight: bold;">مستثنی</span> هستش به طور نمونه :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left(1234567890,6)=123456</code></div></div>
<br />
<div style="text-align: justify;">منجر به صدور خطا نخواهد شد , در این حالت اکسس به طور <span style="font-weight: bold;">خودکار</span> عدد رو به صورت متن در نظر گرفته و خروجی رو به درستی صادر خواهد کرد , به بیانی دیگر استفاده از تابع به صورت فوق هیچ تفاوتی با حالت کاربردی زیر نخواهد داشت :</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left("1234567890",6)=123456</code></div></div>
<div style="text-align: justify;">
تصور میکنم مطلب طولانی شد , ترجیح میدم , ادامه مبحث رو در زمانی دیگه داشته باشیم</div>
<br />
پس تا اون زمان خدا نگهدار]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[بررسی توابع داخلی اکسس - مقدمه]]></title>
			<link>http://cpsd.ir/forum/showthread.php?tid=54</link>
			<pubDate>Mon, 28 Mar 2011 22:43:56 +0430</pubDate>
			<guid isPermaLink="false">http://cpsd.ir/forum/showthread.php?tid=54</guid>
			<description><![CDATA[ضمن سلام<br />
<br />
<div style="text-align: justify;">یکی از مواردی که بسیار دیده شده , <span style="font-weight: bold;">عدم اطلاع و شناخت</span> کاربران از توابع داخلی اکسس هستش<br />
<br />
به طور خلاصه <span style="font-weight: bold;">توابع داخلی</span> به اون دسته از دستوراتی گفته میشه , که شما بدون نیاز به کد نویسی و تنها با تعیین آرگومانهای درخواستی این توابع , قادر هستید که از این قطعه کدهای از پیش نوشته شده استفاده کنید<br />
<br />
در واقع توابع داخلی اکسس تا حدود زیادی میتونند شما رو از <span style="font-weight: bold;">دردسرهای خاص برنامه نویسی</span> دور کنند<br />
<br />
اجازه بدید در ابتدا شما رو با چند <span style="font-weight: bold;">مفهوم اولیه </span>آشنا کنم چرا که در ادامه مبحث به دفعات به این مفاهیم رجوع خواهیم داشت<br />
<br />
سعی خواهد شد این مفاهیم به ساده ترین شکل ممکن و تا حد امکان به صورت غیر فنی توضیح داده بشه تا در آینده به تدریج با مفاهیم فنی اونها بیشتر و بهتر آشنا بشید<br />
<br />
شما در برنامه نویسی با دو واژه آشنا خواهید شد , Function و Sub , تفاوت این دو , میشه گفت در حالت کلی تنها در یک چیزه , Function قادر به دریافت ورودی و ارسال یک خروجی هستش ولیکن Sub از این قاعده مستثنی هستش<br />
<br />
به مثال زیر نگاه میکنیم و در اون تابع Left رو مورد بررسی قرار میدیم , شکل کلی تابع Left بدین صورت هستش</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left(string, length)</code></div></div>
<br />
<div style="text-align: justify;">در این حالت :<br />
<br />
Left نام تابع و String و Length <span style="font-weight: bold;">آرگومانهای درخواستی </span>این تابع هستند , میشه آرگومان رو در واقع به نوعی در حکم <span style="font-weight: bold;">تنظیمات</span> یک تابع هم در نظر گرفت<br />
هر تابع نوع <span style="font-weight: bold;">خروجی</span> خاصی رو هم میتونه پس از انجام عملیات صادر کنه , به طور مثال نوع خروجی تابع Left از نوع String یا همون رشته هستش<br />
<br />
<span style="font-weight: bold;">توضیح :</span> بسیاری از توابع داخلی اکسس نوع خروجی اونها Variant هستش , نوع داده Varinat متغیر بوده و در واقع <span style="font-weight: bold;">اکسس در نهایت تصمیم میگیره </span>که نوع داده خروجی چه چیزی هستش<br />
<br />
در برنامه نویسی توصیه میشه که نوع داده تا حد امکان به <span style="font-weight: bold;">صراحت</span> معرفی بشه و جهت جلوگیری از<span style="font-weight: bold;"> بروز خطاهای احتمالی</span> در تشخیص نوع داده , نوع اون <span style="font-weight: bold;">توسط خود برنامه نویس</span> تعیین بشه<br />
<br />
نکته آخر در خصوص آرگومانها هم , مربوط به این بخش میشه که در برخی توابع , بعضی از آرگومانها<span style="font-weight: bold;"> الزامی بوده </span>و در واقع شما باید اون رو حتماً تعیین کنید و برخی آرگومانهای دیگه به صورت <span style="font-weight: bold;">اختیاری</span> و یا Optional هستند , در آرگومانهای Optional اکسس مقداری رو به صورت <span style="font-weight: bold;">پیش فرض</span> در نظر داره , شما اگر مایل باشید میتونید اون رو تغییر بدید و اگر مقدار پیش گزیده جوابگوی شما بود , میتونید همون مقدار رو بپذیرید<br />
<br />
به طور مثال در تابع Mid آرگومان Length به صورت اختیاری بوده و شما در وارد کردن اون مختار خواهید بود<br />
<br />
در حال حاضر <span style="font-weight: bold;">نیازی به درک کامل هیچ یک از مفاهیم فوق ندارید</span> بلکه فقط در مراحل بعدی میتونید ار اون به عنوان یک رفرنس استفاده کنید<br />
<br />
<span style="font-weight: bold;">پی نوشت : </span><span style="color: #4682B4;">متاسفانه مشاهده شد , برخی کاربران کم لطفی میکنند و مطالب رو عیناً بدون کوچکترین تغییری ! در دیگر سایتها درج میکنند , بدون اینکه به منبع اونها اشاره ای داشته باشند , امیدوارم اون از دسته از کاربران , اندکی در این خصوص تامل بیشتری داشته باشند</span><br />
<br />
موفق باشید</div>]]></description>
			<content:encoded><![CDATA[ضمن سلام<br />
<br />
<div style="text-align: justify;">یکی از مواردی که بسیار دیده شده , <span style="font-weight: bold;">عدم اطلاع و شناخت</span> کاربران از توابع داخلی اکسس هستش<br />
<br />
به طور خلاصه <span style="font-weight: bold;">توابع داخلی</span> به اون دسته از دستوراتی گفته میشه , که شما بدون نیاز به کد نویسی و تنها با تعیین آرگومانهای درخواستی این توابع , قادر هستید که از این قطعه کدهای از پیش نوشته شده استفاده کنید<br />
<br />
در واقع توابع داخلی اکسس تا حدود زیادی میتونند شما رو از <span style="font-weight: bold;">دردسرهای خاص برنامه نویسی</span> دور کنند<br />
<br />
اجازه بدید در ابتدا شما رو با چند <span style="font-weight: bold;">مفهوم اولیه </span>آشنا کنم چرا که در ادامه مبحث به دفعات به این مفاهیم رجوع خواهیم داشت<br />
<br />
سعی خواهد شد این مفاهیم به ساده ترین شکل ممکن و تا حد امکان به صورت غیر فنی توضیح داده بشه تا در آینده به تدریج با مفاهیم فنی اونها بیشتر و بهتر آشنا بشید<br />
<br />
شما در برنامه نویسی با دو واژه آشنا خواهید شد , Function و Sub , تفاوت این دو , میشه گفت در حالت کلی تنها در یک چیزه , Function قادر به دریافت ورودی و ارسال یک خروجی هستش ولیکن Sub از این قاعده مستثنی هستش<br />
<br />
به مثال زیر نگاه میکنیم و در اون تابع Left رو مورد بررسی قرار میدیم , شکل کلی تابع Left بدین صورت هستش</div>
<br />
<div class="codeblock">
<div class="title">کد: <br />
</div><div class="body" dir="ltr"><code>Left(string, length)</code></div></div>
<br />
<div style="text-align: justify;">در این حالت :<br />
<br />
Left نام تابع و String و Length <span style="font-weight: bold;">آرگومانهای درخواستی </span>این تابع هستند , میشه آرگومان رو در واقع به نوعی در حکم <span style="font-weight: bold;">تنظیمات</span> یک تابع هم در نظر گرفت<br />
هر تابع نوع <span style="font-weight: bold;">خروجی</span> خاصی رو هم میتونه پس از انجام عملیات صادر کنه , به طور مثال نوع خروجی تابع Left از نوع String یا همون رشته هستش<br />
<br />
<span style="font-weight: bold;">توضیح :</span> بسیاری از توابع داخلی اکسس نوع خروجی اونها Variant هستش , نوع داده Varinat متغیر بوده و در واقع <span style="font-weight: bold;">اکسس در نهایت تصمیم میگیره </span>که نوع داده خروجی چه چیزی هستش<br />
<br />
در برنامه نویسی توصیه میشه که نوع داده تا حد امکان به <span style="font-weight: bold;">صراحت</span> معرفی بشه و جهت جلوگیری از<span style="font-weight: bold;"> بروز خطاهای احتمالی</span> در تشخیص نوع داده , نوع اون <span style="font-weight: bold;">توسط خود برنامه نویس</span> تعیین بشه<br />
<br />
نکته آخر در خصوص آرگومانها هم , مربوط به این بخش میشه که در برخی توابع , بعضی از آرگومانها<span style="font-weight: bold;"> الزامی بوده </span>و در واقع شما باید اون رو حتماً تعیین کنید و برخی آرگومانهای دیگه به صورت <span style="font-weight: bold;">اختیاری</span> و یا Optional هستند , در آرگومانهای Optional اکسس مقداری رو به صورت <span style="font-weight: bold;">پیش فرض</span> در نظر داره , شما اگر مایل باشید میتونید اون رو تغییر بدید و اگر مقدار پیش گزیده جوابگوی شما بود , میتونید همون مقدار رو بپذیرید<br />
<br />
به طور مثال در تابع Mid آرگومان Length به صورت اختیاری بوده و شما در وارد کردن اون مختار خواهید بود<br />
<br />
در حال حاضر <span style="font-weight: bold;">نیازی به درک کامل هیچ یک از مفاهیم فوق ندارید</span> بلکه فقط در مراحل بعدی میتونید ار اون به عنوان یک رفرنس استفاده کنید<br />
<br />
<span style="font-weight: bold;">پی نوشت : </span><span style="color: #4682B4;">متاسفانه مشاهده شد , برخی کاربران کم لطفی میکنند و مطالب رو عیناً بدون کوچکترین تغییری ! در دیگر سایتها درج میکنند , بدون اینکه به منبع اونها اشاره ای داشته باشند , امیدوارم اون از دسته از کاربران , اندکی در این خصوص تامل بیشتری داشته باشند</span><br />
<br />
موفق باشید</div>]]></content:encoded>
		</item>
	</channel>
</rss>