فروم تخصصی - پشتیبانی CPSD
تابع Left - نسخه‌ی قابل چاپ

+- فروم تخصصی - پشتیبانی CPSD (http://cpsd.ir/forum)
+-- انجمن: آموزش (/forumdisplay.php?fid=9)
+--- انجمن: عمومی (/forumdisplay.php?fid=21)
+---- انجمن: توابع داخلی اکسس (/forumdisplay.php?fid=30)
+---- موضوع: تابع Left (/showthread.php?tid=65)



تابع Left - CPSD Admin - ۲۸ ارديبهشت ۱۳۹۰ ۰۹:۵۸ عصر

ضمن سلام

در این بخش یکی از توابع داخلی اکسس رو به صورت نمونه انتخاب کرده و سعی میشه اقدام به استفاده از اون در قالبهای مختلف کنیم

تابعی که در ابتدا به معرفی اون میپردازم تابع Left هستش که به دلیل سادگی , میتونه جهت آغاز کار نمونه ای مناسب به شمار بیاد

شکل کلی تابع Left بدین صورت هستش

کد:
Left ( String,Length)

این تابع دو آرگومان ورودی داره که هر دوی اونها , الزامی هستند .

آرگومان اول که در اینجا با نام String مشخص شده , در واقع از شما میخواد که اقدام به مشخص نمودن رشته ای کنید که قصد دارید تعداد مشخصی از کاراکترهای اون رو جداسازی کنید

آرگومان دوم و یا همون Length در واقع نمایانگر تعداد کاراکترهایی خواهد بود که شما میخواهید از داخل رشته و از سمت چپ اون جدا سازی بشن , برخلاف تصور این عدد میتونه پذیرای عدد اعشاری هم باشه ! به طور مثال از اکسس بخواید 5.4 کاراکتر رو از سمت چپ جدا کنه !

ولیکن اکسس در این حالت ابتدا این عدد رو گرد کرده و بر مبنای اون خروجی رو صادر خواهد کرد ( 5.4 رو 5 و 5.6 رو 6 در نظر خواهد گرفت )

تذکر : عدم درج هر یک از آرگومانهای مورد نیاز منجر به صدور خطا میشه

این تابع اقدام به جدا سازی تعداد مشخصی از کاراکترهای یک رشته ( متن ) از سمت چپ میکنه , به طور مثال :

کد:
Left("Sample Data",6)=Sample

در این مثال 6 کاراکتر از سمت چپ و در مثال زیر :

کد:
Left("Sample Data",2)=Sa

دو کاراکتر سمت چپ مورد جدا سازی واقع میشن و به عنوان خروجی از سوی تابع صادر شدند

در دو مثال فوق "ُSample Data" در حکم آرگومان اول و یا همون String و عددهای 2 و 5 هم در هر یکی از این دو تابع نقش آرگومان Length ( طول ) رو به عهده دارند

تذکر : تعیین طول در محدوده منفی منجر به صدور خطا خواهد شد

از همین جا میشه در ذهنتون برخی کاربردهای عملی این تابع رو تداعی کنید , به طور مثال شما میخواید گزارشی داشته باشید از اسامی افراد به تفکیک حرف اول نام ( و یا نام خانوادگی ) اونها , به همون صورتی که شما در دفترچه های تلفن ملاحظه می کنید و یا مواردی دیگه که تفکیک بخشی از یک متن میتونه مد نظر قرار بگیره

ذکر دو نکته در خصوص آرگومان Length الزامی هستش , این آرگومان از نوع عددی Long بوده , در صورتی که عدد مد نظر شما صفر انتخاب بشه خروجی رشته ای با طول صفر هستش و در صورتی که عدد تعیین شده از طول واقعی رشته ورودی بیشتر باشه , کل متن ورودی بدون در نظر گرفتن آرگومان طول , بر روی خروجی ارسال خواهد شد , به مثالهای زیر توجه کنید :

کد:
Left("Sample Data",0)=""

رشته ای به طول صفر بر روی خروجی ارسال شد , علامتهای "" تنها به جهت مشاهده شما درج شدند وگرنه این علامتها بر روی خروجی نیستند و در داخل اکسس تنها به جهت تعیین نوع داده ورودی متن مورد استفاده قرار میگیرند .

کد:
Left("Sample Data",20)= Sample Data

و در اینجا با توجه به اینکه طول کل رشته 11 کاراکتر هستش ولی آرگومان ورودی 20 تعیین شده , خروجی تنها همون 11 کاراکتر موجود در رشته هستش یعنی Sample Data

حال اجازه بدید در قدم بعدی اندکی به سمت سفارشی سازی بریم , چرا که هدف تنها استفاده از این توابع در ساده ترین حالت اونها نیست , مثالی که ادامه میاد تنها یک ذهنیت کلی به شما میده و در حال حاضر اصراری در کاربردی بودن اون وجود نداره

صورت مساله بدین گونه مطرح میشه که : در دو فیلد ( ورودی ) مجزا قصد داریم دو حرف ابتدایی اونها ( در واقع Left ) رو با هم ترکیب و بر روی خروجی به نمایش بذاریم ( دو حرف ابتدایی ورودی اول به همراه دو حرف ابتدایی ورودی دوم)

قصد داریم این امر رو توسط برنامه نویسی به انجام برسونیم و در واقع با استفاده از تابع Left میخوایم یک تابع داخلی و سفارشی ایجاد کنیم

تابع رو در همین ابتدا مینویسم و بعد به تشریح اون میپردازم :

کد:
Function MyFirstFunction(FirstEntery As String, SecondEntery As String) As String
  MyFirstFunction = Left(FirstEntery, 2) & " - " & Left(SecondEntery, 2)
End Function

نام تابع رو MyFirstFunction در نظر گرفتم چرا که شاید شما در حال برداشتن اولین قدم در زمینه نوشتن توابع داخلی در اکسس باشید

FirstEntery و SecondEntery در واقع آرگومانهای ورودی و مد نظر شما هستند که به نوعی پذیرای همون دو رشته ورودی خواهند بود

نوع اونها String تعیین شده FirstEntery As String و SecondEntery As String

چرا که مقدار ورودی این دو متغیر به عنوان مقادیر ورودی تابع Left مورد استفاده قرار خواهند گرفت (Left(FirstEntery, 2 و (Left(SecondEntery, 2
و همونطوری که فراموش نکردید پارامتر ورودی اولیه در داخل اون از نوع رشته هستش

خروجی تابع هم از نوع String و یا همون رشته در نظر گرفته شده چرا که تابع دو مقدار رشته ای رو گرفته و پس از ترکیب این دو اونها رو بر روی خروجی ارسال خواهد کرد , پس در حالت استاندارد ترکیب دو رشته در نهایت از نظر نوع String خواهد بود

حال اجازه بدید همین تابع رو اندکی پیچیده تر کنیم , با اعمال تغییری دیگه این امکان رو میدیم که طول مد نظر تحت کنترل باشه و تنها مقدار ثابت 2 رو در بر نداشته باشه

کد:
Function MySecondFunction(FirstEntery As String, SecondEntery As String, SpecificLength As Long) As String
  MySecondFunction = Left(FirstEntery, SpecificLength) & " - " & Left(SecondEntery, SpecificLength)
End Function

حتما دقت کردید , وظیفه تعیین طول رشته رو به متغیر SpecificLength محول کردیم , نوع اون رو هم از نوع Long قرار دادیم چرا که SpecificLength به آرگومان Length در داخل تابع Left پاس داده خواهد شد

توضیح تکمیلی : در خصوص نوع آرگومان SpecificLength میتونید نوع داده رو به طور مثال Integer و یا Byte هم در نظر بگیرید , چرا که نوع داده های Integer و Byte به نوعی زیر مجموعه نوع داده Long هستند و تنها تفاوت در محدوده عددی مورد پذیرش هستش

ذکر یک نکته نهایی هم اینکه : قرار دادن آرگومان اولیه ( String ) در داخل دو علامت " در صورتی که ورودی از نوع متن بوده باشه الزامی هستش , به طور مثال استفاده از این تابع به صورت زیر منجر به صدور خطا میشه

کد:
Left(Sample Data,6)

البته ذکر یک نکته هم میتونه مفید باشه , در خصوص اعداد این امر مستثنی هستش به طور نمونه :

کد:
Left(1234567890,6)=123456

منجر به صدور خطا نخواهد شد , در این حالت اکسس به طور خودکار عدد رو به صورت متن در نظر گرفته و خروجی رو به درستی صادر خواهد کرد , به بیانی دیگر استفاده از تابع به صورت فوق هیچ تفاوتی با حالت کاربردی زیر نخواهد داشت :

کد:
Left("1234567890",6)=123456
تصور میکنم مطلب طولانی شد , ترجیح میدم , ادامه مبحث رو در زمانی دیگه داشته باشیم

پس تا اون زمان خدا نگهدار