شما به عنوان برنامه نویس همیشه دستور نمی دهید، بلکه علاوه بر اینکه دستور می دهید، مقادیری را برای نگهداری نتایج دستورات تعریف می کنید تا برای نگهداری نتایج دستورات به شما کمک کنند، و گاهی نیز نتایج را با هم مقایسه می کنید و بعد تصمیم می گیرید که چه دستوری بدهید.
پس این کارها را انجام می دهید:
- تعریف مقادیر
- مقایسه مقادیر
- دستور دادن
نقطه قوت شما نیز در همین دستور دادن است و بخش عمده فعالیت شما بر اساس دستوراتی است که صادر می کنید.
(بعضی اوقات حس می کنید دستوراتی که صادر می کنید در توان زیرمجموعه شما- که وظیفه انجام دستورات شما دارند- نیست، در چنین شرایطی مجبور هستید برون سپاری کنید: برون سپاری معادل با استفاده از dllها است- وقتی از dll ها استفاده می کنید دقیقا همان کاری را می کنید که تاکنون میکردید یعنی هر سه کار بالا را باز هم انجام خواهید داد.)
ابتدا به دستورات خواهیم پرداخت، قبل از صدور دستورات باید دستورات را دسته بندی کنید- هر دسته بندی را یک رویه(دستورالعمل) می نامیم.
یک عبارت در ویژوال بیسیک یک دستورالعمل کامل است. این می تواند حاوی کلمات کلیدی، عملگرها، متغیرها، ثابت ها و عبارات باشد. شما از دستورات اعلان برای نامگذاری و تعریف رویه ها، متغیرها، آرایه ها و ثابت ها استفاده می کنید. هنگامی که یک رویه، متغیر یا ثابت را اعلام می کنید، بسته به اینکه اعلان را در کجا قرار می دهید و از چه کلمات کلیدی برای اعلام آن استفاده می کنید، محدوده آن را نیز مشخص می کنید. دستورهای انتساب یک مقدار یا عبارت را به یک متغیر یا ثابت اختصاص می دهند. عبارات تکلیف همیشه دارای علامت مساوی (=) هستند.
رویه Sub مجموعه ای از دستورات ویژوال بیسیک است که توسط دستورات Sub و End Sub محصور شده است که اقداماتی را انجام می دهد اما مقداری را بر نمی گرداند.
رویه Function مجموعه ای از دستورات ویژوال بیسیک است که توسط دستورات Function و End Function محصور شده است. یک رویه Function مشابه رویه Sub است، اما یک تابع همچنین می تواند مقداری را برگرداند.
برای فراخوانی یک رویه Sub از رویه دیگر، نام رویه را تایپ کرده و مقادیری را برای هر آرگومان مورد نیاز وارد کنید. دستور Call الزامی نیست، اما اگر از آن استفاده می کنید، باید هر آرگومان را در پرانتز قرار دهید.
هنگامی که یک روش Sub یا Function را فراخوانی میکنید، میتوانید آرگومانها را بهصورت موقعیتی، به ترتیبی که در تعریف رویه ظاهر میشوند، ارائه دهید، یا میتوانید آرگومانها را بدون در نظر گرفتن موقعیت، با نام ارائه کنید.
استفاده از پرانتز در کد: رویههای فرعی، عبارات داخلی و برخی متدها مقداری را بر نمیگردانند، بنابراین آرگومانها در پرانتز قرار نمیگیرند.
اعلان متغیرها
هنگام اعلان متغیرها، معمولاً از دستور Dim استفاده می کنید. یک عبارت اعلامیه را می توان در یک رویه قرار داد تا یک متغیر در سطح رویه ایجاد کند. یا ممکن است در بالای یک ماژول، در بخش Declarations قرار داده شود تا یک متغیر در سطح ماژول ایجاد شود.
طول عمر متغیرها
مدت زمانی که یک متغیر مقدار خود را حفظ می کند به عنوان طول عمر آن شناخته می شود. مقدار یک متغیر ممکن است در طول عمر خود تغییر کند، اما مقداری مقدار را حفظ می کند. وقتی متغیری دامنه را از دست می دهد، دیگر مقداری ندارد.
انواع داده ها
نوع داده مشخصه یک متغیر است که تعیین می کند چه نوع داده ای می تواند نگه دارد. انواع داده ها شامل موارد موجود در جدول زیر و همچنین انواع تعریف شده توسط کاربر و انواع خاصی از اشیاء است.
اعلان ثابت ها
کد شما ممکن است حاوی مقادیر ثابتی باشد که مکرراً رخ میدهند، یا ممکن است به اعداد خاصی بستگی داشته باشد که به خاطر سپردن آنها دشوار است و معنای واضحی ندارند. با استفاده از ثابت ها می توانید خواندن و نگهداری کد خود را آسان تر کنید. ثابت یک نام معنی دار است که جای عدد یا رشته ای را می گیرد که تغییر نمی کند. شما نمی توانید یک ثابت را تغییر دهید یا یک مقدار جدید به آن اختصاص دهید، همانطور که می توانید یک متغیر.
استفاده از عبارات If...Then...Else
می توانید از دستور If...Then...Else برای اجرای یک دستور خاص یا بلوکی از دستورات بسته به مقدار یک شرط استفاده کنید. عبارات If...Then...Else را می توان در سطوح مختلفی که شما نیاز دارید تو در تو قرار داد.
استفاده از عبارت Select Case
هنگام مقایسه یک عبارت با چندین مقدار مختلف، از عبارت Select Case به عنوان جایگزینی برای استفاده از ElseIf در عبارات If...Then...Else استفاده کنید. در حالی که عبارات If...Then...Else می توانند یک عبارت متفاوت را برای هر عبارت ElseIf ارزیابی کنند، دستور Select Case یک عبارت را فقط یک بار در بالای ساختار کنترل ارزیابی می کند.
حلقه
با استفاده از عبارات شرطی و عبارات حلقه (که ساختارهای کنترل نیز نامیده می شوند)، می توانید کد ویژوال بیسیک بنویسید که تصمیم می گیرد و اقدامات را تکرار می کند.
دستورات Do...Loop
می توانید از دستورات Do...Loop برای اجرای یک بلوک از دستورات به تعداد نامحدود استفاده کنید. عبارات یا زمانی که یک شرط True است یا تا زمانی که یک شرط True شود، تکرار می شوند.
عبارات For...Next
می توانید از عبارات For...Next برای تکرار یک بلوک از عبارات به تعداد مشخص استفاده کنید. برای حلقه ها از یک متغیر شمارنده استفاده کنید که مقدار آن با هر تکرار حلقه کم یا زیاد می شود.
اشیا، روش ها، ویژگی ها و رویدادها
یک شی نشان دهنده یک عنصر از یک برنامه کاربردی است، مانند یک کاربرگ، یک سلول، یک نمودار، یک fo
رویه یا Procedure مجموعه ای از کدهای مرتبط با هم است که درون یک ماژول در محیط VBE نوشته شده و عمل خاصی را انجام میدهند. دو نوع رویه (Procedure) در VBA وجود دارد:
(Subroutines) زیرروالها یا Subroutineها: مجموعه ای از کدهای VBA است که درون یک ماژول نوشته شده و در زمان اجرا توسط کاربر یا فراخوانی توسط زیرروال دیگر، عمل خاصی را انجام میدهد. زیرروال ها همیشه با کلمه کلیدی Sub همراه با نام ماکرو یا زیرروال شروع شده و با عبارت Sub End پایان مییابند. نکته 1 : درج کلمه کلیدی Private قبل از نام یک زیرروال باعث میشود که فراخوانی زیرروال مورد نظر فقط در ماژول جاری امکانپذیر باشد و زیرروالی که با کلمه کلیدی Private اعلان میشود را دیگر نمی توانید در لیست ماکروهای تعریف شده مشاهده کرده و مورد استفاده قرار دهید. نکته 2 : برای اجرای آزمایشی زیرروالهای بدون آرگومان, میتوانید بعد از کلیک درون زیرروال, دکمه F5 را فشار دهید و یا از منوی Run دستور Sub Run را انتخاب کنید. در زیر روال ها یا تابع ها دستوراتی تایپ می شود و انتظار می رود هنگام اجرای روتین(sub) یا تابع(function)، دستورات صادر شده اجرا شوند. دستورات VBA را می توان به دو دسته تقسیم کرد:
|
|
دستورات دسته اول(1) دستورات یا عملگرهای عمومی Visual Basic: اینگونه دستورات، در همه برنامه هایی که از دستور زبان VB استفاده می کنند کاربرد دارد. مانند دستور MsgBox و یا دستور InputBox. دستورات دسته، دوم(2) دستورات یا عملگرهای اختصاصی Visual Basic fo Access: اینگونه دستورات در سایر برنامهها مانند VB و یا Excel و Word و ... بی معنی هستند، یا به صورت اتفاقی مشترکا در آن برنامهها کارایی مشابه دارند، اما جزء دستورات اختصاصی VBA در Access به شمار میآیند. |
به دلیل اینکه در حال بررسی نرم افزار Access هسیتم ابتدا دستورات دسته دوم را بررسی خواهیم کرد، بررسی دستورات دسته اول را در همین صفحه خواهید یافت.
دستورات یا عملگرهای اختصاصی Visual Basic fo Access:
هر کدام از دستورات دارای پارامترها و شرایط اجرای منحصر به خود هستند، پس از یک نگاه کلی به همه دستورات به جزئیات آنها خواهیم پرداخت.
دسترسی به شی | AccessObject | |
دسترسی به ویژگی شی | AccessObjectProperty | |
دسترسی به ویژگی های شی | AccessObjectProperties | |
داده اضافی | AdditionalData | |
همه نمودارهای پایگاه داده | AllDatabaseDiagrams | |
همه فرم ها | AllForms | |
همه توابع | AllFunctions | |
همه ماکروها | AllMacros | |
همه ماژول ها | AllModules | |
همه پرس و جوها | AllQueries | |
همه گزارش ها | AllReports | |
همه رویه های ذخیره شده | AllStoredProcedures | |
همه جداول | AllTables | |
همه نماها | AllViews | |
کاربرد | Application | |
پیوست | Attachment | |
تصحیح خودکار | AutoCorrect | |
قاب شی محدود شده | BoundObjectFrame | |
چارت سازمانی | Chart | |
محور نمودار | ChartAxis | |
سری نمودار | ChartSeries | |
مقادیر نمودار | ChartValues | |
کادر را علامت بزنید | CheckBox | |
داده های کد | CodeData | |
پروژه کد | CodeProject | |
جعبه ترکیبی | ComboBox | |
دکمه فرمان | CommandButton | |
کنترل | Control | |
کنترل ها | Controls | |
داده های جاری | CurrentData | |
پروژه فعلی | CurrentProject | |
کنترل سفارشی | CustomControl | |
اطلاعات وابستگی | DependencyInfo | |
اشیاء وابستگی | DependencyObjects | |
فرمان را انجام دهید | DoCmd | |
کنترل مرورگر لبه | EdgeBrowserControl | |
سلول خالی | EmptyCell | |
وجود، موجودیت | Entity | |
موجودیت ها | Entities | |
فرم | Form | |
شرط قالب | FormatCondition | |
شرایط قالب | FormatConditions | |
تشکیل می دهد | Forms | |
سطح گروه | GroupLevel | |
هایپر لینک | Hyperlink | |
تصویر | Image | |
مشخصه ورود و صدور | ImportExportSpecification | |
مشخصات ورود و صدور | ImportExportSpecifications | |
برچسب | Label | |
خط | Line | |
کادر فهرست | ListBox | |
خطای ماکرو | MacroError | |
مدول | Module | |
ماژول ها | Modules | |
دکمه ناوبری | NavigationButton | |
کنترل ناوبری | NavigationControl | |
قاب شی | ObjectFrame | |
عمل | Operation | |
عملیات | Operations | |
دکمه گزینه | OptionButton | |
گروه گزینه | OptionGroup | |
صفحه | Page | |
صفحات | Pages | |
صفحه شکستن | PageBreak | |
چاپگر | Printer | |
چاپگرها | Printers | |
خواص | Properties | |
مستطیل | Rectangle | |
ارجاع | Reference | |
منابع | References | |
گزارش | Report | |
گزارش ها | Reports | |
متغیر بازگشتی | ReturnVar | |
متغیرهای بازگشتی | ReturnVars | |
صفحه نمایش | Screen | |
بخش | Section | |
منبع مشترک | SharedResource | |
منابع مشترک | SharedResources | |
برچسب هوشمند | SmartTag | |
اقدام تگ هوشمند | SmartTagAction | |
اقدامات برچسب هوشمند | SmartTagActions | |
ویژگی تگ هوشمند | SmartTagProperty | |
ویژگی های برچسب هوشمند | SmartTagProperties | |
برچسب های هوشمند | SmartTags | |
فرم فرعی | SubForm | |
کنترل برگه | TabControl | |
متغیر دما | TempVar | |
متغیرهای دما | TempVars | |
جعبه متن | TextBox | |
دکمه جابجایی | ToggleButton | |
کنترل مرورگر وب | WebBrowserControl | |
سرویس وب | WebService | |
خدمات وب | WebServices | |
پارامتر WS | WSParameter | |
پارامترهای WS | WSParameters | |
شمارش ها | Enumerations |
در بین دستورات بالا دستوری وجود دارد(DOCMD) که از دامنه وسیعی استفاده می کند این دستور وقتی به زیردستور SQL می رسد بسیار وسیعتر می شود، این دستور وظیفه برقراری ارتباط با موتور SQL را دارد و یک رشته را به برای آن ارسال می کند و نتیجه اجرای این عملیات را برای VBA باز می گرداند، اما در واقع شما با یک موتور قوی روبرو هستید که به عبارتی اصول کار Access نیز بر روی این موتور بنا نهاده شده است. لذا درباره دستور DOCMD.RunSQL باید به صورت ویژه توضیح داده شود، که در این صفحه به صورت اختصاصی به آن خواهیم پرداخت.
دستورات یا عملگرهای عمومی Visual Basic:
بررسی اجمالی | Overview | |
آرایه | Array | |
دسترسی به یک شیء با نام شیء | CallByName | |
انتخاب | Choose | |
فرمان | Command | |
توابع تبدیل |
Conversion |
|
ایجاد شی | CreateObject | |
مسیر(دایرکتوری) جاری | CurDir | |
تاریخ | Date | |
افزودن تاریخ | DateAdd | |
تفاوت تاریخ | DateDiff | |
قسمت تاریخ | DatePart | |
سریال تاریخ | DateSerial | |
مقدار تاریخ | DateValue | |
روز | Day | |
DDB | DDB | |
دایرکتوری | Dir | |
انجام یک رویداد به صورت درخواست | DoEvents | |
دسترسی به متغییرهای محیط ویندوز | Environ | |
به انتهای فایل رسیده ایم؟ | EOF | |
خطایی رخ داده؟ | Error | |
ویژگی فایل | FileAttr | |
تاریخ و زمان ایجاد فایل | FileDateTime | |
طول فایل | FileLen | |
فیلتر کردن | Filter | |
فرمت پول | FormatCurrency | |
فرمت تاریخ زمان | FormatDateTime | |
شماره قالب | FormatNumber | |
فرمت درصد | FormatPercent | |
آزاد کردن فایل | FreeFile | |
FV | ||
دریافت همه تنظیمات | GetAllSettings | |
دریافت ویژگی ها | GetAttr | |
دریافت شی | GetObject | |
دریافت تنظیمات | GetSetting | |
ساعت | Hour | |
اگر کوتاه | IIf | |
وضعیت IME | IMEStatus | |
ورودی | Input | |
جعبه ورودی | InputBox | |
بررسی وجود رشته ای در رشتهای دیگر | InStr | |
InStrRev | ||
IPmt | ||
IRR | ||
آرایه است؟ | IsArray | |
تاریخ است؟ | IsDate | |
خالی است؟ | IsEmpty | |
آیا خطا است؟ | IsError | |
مفقود شده است؟ | IsMissing | |
نول(Null) است؟ | IsNull | |
عدد است؟ | IsNumeric | |
آیا شیء است؟ | IsObject | |
پیوستن | Join | |
طول محدود | LBound | |
مورد طول | LCase | |
ترک کرد | Left | |
طول | Len | |
محل | Loc | |
طول فایل | LOF | |
برش فواصل خالی، از چپ، از راست راست | LTrim, RTrim, and Trim | |
شناسه Mac | MacID | |
اسکریپت MAC | MacScript | |
توابع ریاضی |
||
اواسط یک رشته | Mid | |
دقیقه | Minute | |
MIRR | ||
ماه | Month | |
نام ماه | MonthName | |
جعبه پیام | MsgBox | |
اکنون | Now | |
NPer | ||
NPV | ||
تقسیم بندی | Partition | |
بعد | Pmt | |
PPmt | ||
PV | ||
رنگ QB | QBColor | |
نرخ | Rate | |
جایگزین کردن | Replace | |
ساخت یک رنگ با سه رنگ اصلی | RGB | |
درست | Right | |
گردکردن عدد | Round | |
دومین | Second | |
جستجو کردن | Seek | |
پوسته | Shell | |
SLN | ||
فاصله ها | Space | |
Spc | ||
شکاف | Split | |
مقایسه رشته ها | StrComp | |
تبدیل رشته | StrConv | |
رشته | String | |
معکوس رشته | StrReverse | |
تعویض | Switch | |
SYD | ||
Tab | ||
زمان | Time | |
تایمر | Timer | |
سریال زمانی | TimeSerial | |
ارزش زمانی | TimeValue | |
اسم را تایپ کن | TypeName | |
کران بالا | UBound | |
حروف بزرگ | UCase | |
نوع متغیر | VarType | |
روز هفته | Weekday | |
نام روز هفته | WeekdayName | |
سال | Year |
عملگرها
عملگرها و توابع از جمله ابزارهای VBA برای انجام محاسبات می باشند.
عملگرهای VBA دارای تقدم هایی نسبت به هم می باشند که برای ایجاد تغییر در این تقدم ها می توانید از پرانتز استفاده کنید.
عملگرهای حسابی
عملگر ^ : توان
عملگر - : منفی
عملگر * : ضرب
عملگر / : تقسیم
عملگر \ : خارج قسمت تقسیم صحیح
عملگر Mod : باقیمانده تقسیم صحیح
عملگر - : تفریق
عملگر + : جمع
عملگر & : الحاق دو رشته متنی به هم
عملگرهای مقایسهای
عملگر =
عملگر <
عملگر >
عملگر =<
عملگر =>
عملگر <>
عملگر Like
این عملگر دو رشتهء متنی را بر طبق شرایط تعریف شده با یکدیگر مقایسه میکند.
در تعریف نوع مقایسه میتوانید از کارکترهای جایگزین زیر استفاده کنید:
کارکتر مفهوم
؟ یک کارکتر
* چند کارکتر
# یک رقم از 0 تا 9
charlist یک کارکتر از لست کاراکترها
عملگرهای منطقی
عملگر And
عملگر Or
عملگر Not
عملگر Xor
عملگر Eqv
عملگر Imp