فروم تخصصی - پشتیبانی CPSD

نسخه‌ی کامل: تابع Left
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
ضمن سلام

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

تابعی که در ابتدا به معرفی اون میپردازم تابع 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
تصور میکنم مطلب طولانی شد , ترجیح میدم , ادامه مبحث رو در زمانی دیگه داشته باشیم

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