ضمن سلام
در این بخش یکی از توابع داخلی اکسس رو به صورت نمونه انتخاب کرده و سعی میشه اقدام به استفاده از اون در قالبهای مختلف کنیم
تابعی که در ابتدا به معرفی اون میپردازم تابع 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(1234567890,6)=123456
منجر به صدور خطا نخواهد شد , در این حالت اکسس به طور خودکار عدد رو به صورت متن در نظر گرفته و خروجی رو به درستی صادر خواهد کرد , به بیانی دیگر استفاده از تابع به صورت فوق هیچ تفاوتی با حالت کاربردی زیر نخواهد داشت :
کد:
Left("1234567890",6)=123456
تصور میکنم مطلب طولانی شد , ترجیح میدم , ادامه مبحث رو در زمانی دیگه داشته باشیم
پس تا اون زمان خدا نگهدار