برنامهنویسی ماکرو VBA در Microsoft Access 2010 — مجموعهٔ کامل
جلد کتاب Microsoft Access 2010 VBA Macro Programming
Microsoft Access 2010 — برنامهنویسی ماکرو با VBA
نویسنده: Richard Shepherd
دربارهٔ نویسنده
Richard Shepherd سالهای زیادی برای بانکها و شرکتهای بزرگ بریتانیا پایگاههای دادهٔ Access را برای حل مسائل مشخص ساخته است؛ از جمله National Grid plc در توزیع برق، Hertz Car Leasing، NatWest plc در بانکداری خرد، Schroders plc در مدیریت سرمایه، BNP Paribas در بانکداری سرمایهگذاری، Lloyds TSB plc در بانکداری شرکتی، The Royal Bank of Scotland plc در بانکداری سرمایهگذاری و British National Health Service.
او Databaseهای پیشرفتهای برای بودجهبندی، برنامهریزی کسبوکار، گزارش معاملات و گزارش سود و زیان توسعه داده است. او حسابدار واجد شرایط Association of Chartered Certified Accountants و Fellow این انجمن است و کتابهای Excel VBA Macro Programming و Excel 2007 VBA Macro Programming را نیز برای McGraw-Hill Professional نوشته است. در منبع، آدرس تماس نویسنده tollside@yahoo.com ذکر شده است.
دربارهٔ ویراستار فنی
Allen G. Taylor با ۳۰ سال سابقه در صنعت کامپیوتر، نویسندهٔ ۲۷ کتاب از جمله SQL for Dummies، Database Development for Dummies و Crystal Reports 2008 for Dummies معرفی شده است. او توسعهٔ Database را از طریق یک مؤسسهٔ آموزش آنلاین تدریس میکند و در سطح بینالمللی دربارهٔ نجوم، تاریخ، نوآوری و کارآفرینی سخنرانی دارد. نشانیهای اینترنتی ذکرشده در منبع به صورت متن غیرقابل کلیک: www.moontube.wordpress.com و www.DatabaseCentral.Info؛ ایمیل: allen.taylor@ieee.org.
صفحهٔ عنوان
Microsoft Access 2010 VBA Macro Programming — Richard Shepherd. شهرهای ناشر در منبع: New York، Chicago، San Francisco، Lisbon، London، Madrid، Mexico City، Milan، New Delhi، San Juan، Seoul، Singapore، Sydney و Toronto.
حقنشر و شرایط استفادهٔ نسخهٔ اصلی
Copyright © 2011 by The McGraw-Hill Companies. کلیهٔ حقوق محفوظ است. منبع اعلام میکند جز در موارد مجاز طبق قانون Copyright ایالات متحده 1976، هیچ بخشی از اثر بدون اجازهٔ کتبی ناشر نباید تکثیر، توزیع یا در سامانهٔ بازیابی ذخیره شود.
- ISBN نسخهٔ eBook:
978-0-07-173858-3 - MHID:
0-07-173858-4 - ISBN نسخهٔ چاپی:
978-0-07-173857-6 - MHID نسخهٔ چاپی:
0-07-173857-6
تمام علائم تجاری متعلق به صاحبانشان هستند. ناشر توضیح میدهد نامهای تجاری را به شیوهٔ Editorial و برای منفعت صاحب علامت به کار برده و قصد نقض حقوق علامت تجاری ندارد. همچنین اطلاعات کتاب از منابعی گرفته شده که قابل اعتماد دانسته شدهاند، ولی McGraw-Hill صحت، کفایت یا کاملبودن آنها را تضمین نمیکند و مسئول خطا، حذف یا نتایج استفاده از اطلاعات نیست.
شرایط استفاده: اثر دارای Copyright است و McGraw-Hill و Licensorهای آن حقوق را محفوظ میدارند. جز حقوقی که قانون اجازه میدهد و حق نگهداری/بازیابی یک نسخه، Decompile، Disassemble، Reverse Engineer، Reproduce، Modify، ساخت Derivative Work، انتقال، توزیع، انتشار، فروش یا Sublicense کل یا بخشی از اثر بدون رضایت پیشین McGraw-Hill ممنوع اعلام شده است. استفادهٔ شخصی و غیرتجاری طبق شروط منبع مجاز دانسته شده و عدم رعایت شروط میتواند حق استفاده را خاتمه دهد.
اثر «AS IS» عرضه شده است. ناشر و Licensorها دربارهٔ Accuracy، Adequacy، Completeness، نتایج حاصل از استفاده، Merchantability یا Fitness for a Particular Purpose ضمانت صریح یا ضمنی نمیدهند و تضمین نمیکنند Functionهای اثر نیاز کاربر را برآورده کنند یا بدون وقفه و خطا کار کنند. مسئولیت خسارتهای مستقیم یا غیرمستقیم طبق متن اصلی محدود و سلب شده است.
تقدیم: «به همسرم Elaine و پسرم Alexander.»
صفحات ۷، ۲۱، ۲۳ و ۲۷ نسخهٔ اصلی عمداً خالی هستند.
فهرست اجمالی و فهرست مطالب
کتاب در چهار بخش سازماندهی شده است: بخش اول «برنامهنویسی در Access VBA»، بخش دوم «مدلهای شیء»، بخش سوم «تکنیکهای پیشرفته در Access VBA» و بخش چهارم «Access VBA در عمل».
- فصل 1 — مبانی (صفحهٔ 3)
- فصل 2 — متغیرها، آرایهها، ثابتها و انواع داده (صفحهٔ 13)
- فصل 3 — ماژولها، توابع و Subroutineها (صفحهٔ 27)
- فصل 4 — مبانی برنامهنویسی: تصمیمگیری و حلقهها (صفحهٔ 35)
- فصل 5 — رشتهها، توابع و Message Boxها (صفحهٔ 45)
- فصل 6 — عملگرها (صفحهٔ 71)
- فصل 7 — اشکالزدایی (صفحهٔ 81)
- فصل 8 — خطاها و تابع Error (صفحهٔ 91)
- فصل 9 — فرمها و گزارشها (صفحهٔ 97)
- فصل 10 — Common Dialog Control (صفحهٔ 123)
- فصل 11 — کار با Ribbon (صفحهٔ 129)
- فصل 12 — SQL Queryها (صفحهٔ 149)
- فصل 13 — Table Macroها (صفحهٔ 165)
- فصل 14 — مدلهای شیء Access (صفحهٔ 175)
- فصل 15 — اشیای اصلی (صفحهٔ 193)
- فصل 16 — شیء DoCmd (صفحهٔ 213)
- فصل 17 — تعامل Access با سایر برنامههای Office (صفحهٔ 221)
- فصل 18 — Chartها و Graphها (صفحهٔ 231)
- فصل 19 — کار با پایگاههای دادهٔ خارجی (صفحهٔ 239)
- فصل 20 — API Callها (صفحهٔ 253)
- فصل 21 — Class Moduleها (صفحهٔ 265)
- فصل 22 — Animation (صفحهٔ 273)
- فصل 23 — بهدستآوردن Login ID (صفحهٔ 279)
- فصل 24 — ایمنسازی پایگاهداده (صفحهٔ 283)
- فصل 25 — ایجاد Audit Trail روی Tableها (صفحهٔ 289)
- فصل 26 — ایجاد و ویرایش Queryها در VBA (صفحهٔ 293)
- فصل 27 — Search and Replace در Queryها (صفحهٔ 297)
- فصل 28 — استفاده از تابع DateAdd (صفحهٔ 301)
- فصل 29 — پایش آمار Tableها (صفحهٔ 305)
- فصل 30 — کار با Text Fileهای بزرگ (صفحهٔ 307)
- فصل 31 — ایجاد و تغییر ساختار Tableها (صفحهٔ 313)
- فصل 32 — ایجاد Inventory از Objectها (صفحهٔ 317)
- فصل 33 — دستکاری رنگ Chart (صفحهٔ 321)
- فصل 34 — Drill Down روی Chartها (صفحهٔ 325)
- فصل 35 — استفاده از Excel برای خروجی (صفحهٔ 329)
- فصل 36 — استفاده از FTP در VBA (صفحهٔ 337)
- فصل 37 — آنچه هنگام رسیدن به سقف ۲GB رخ میدهد (صفحهٔ 343)
- فصل 38 — ساخت Menu Structure با Ribbon (صفحهٔ 345)
- فصل 39 — تعاملیکردن Controlهای Form (صفحهٔ 349)
- فصل 40 — تنظیم سطوح امنیت User (صفحهٔ 355)
پس از فصل ۴۰، ضمیمهٔ «کدهای کاراکتر ASCII» از صفحهٔ ۳۵۹ و سپس Index از صفحهٔ ۳۶۵ آغاز میشود.
سپاسگزاری
نویسنده از تمام افراد McGraw-Hill که در شکلگیری کتاب نقش داشتهاند تشکر میکند. بهطور ویژه از Joya Anthony و Vipra Fauzdar که Project را مدیریت کرده و حجم زیاد Emailهای آن را پیگیری کردهاند، و نیز Wendy Rinaldi—که از نویسنده خواست این کتاب را بنویسد—Allen Taylor و Melinda Lyttle برای کمکهایشان نام میبرد. در پایان نیز از Elaine و Alexander بابت حمایتشان از Project تشکر میکند.
مقدمه
برنامهنویسی Macro برای Database طی حدود ۱۵ سال تغییر زیادی کرده و از Access Basic Macro به VBA رسیده است. تغییر مهم دیگر با Office 95 رخ داد؛ Macroها به Moduleهای VBA در محیطی جداگانه منتقل شدند که از طریق Visual Basic Editor قابل دسترسی است. سیستم قدیمی سادهتر بود: Code در Design Window ویژه وارد میشد. زبان قدرت قابلتوجهی داشت اما Structured و Object-oriented نبود، تعداد Commandها محدود بود و انجام بعضی کارها به ابتکار زیادی نیاز داشت. مزیت اصلی آن، یادگیری نسبتاً آسان بود و بسیاری از Programmerها کار خود را با Database Macro آغاز کردند.
Code قدیمی اگر توسط کسی غیر از Author اصلی بررسی میشد، ممکن بود چند روز زمان ببرد تا عملکرد آن روشن شود. شرکتها گاهی پس از خروج نویسندهٔ یک Macro پیچیده مجبور میشدند آن را از ابتدا بازنویسی کنند، چون تحلیل رفتار آن زمان زیادی میگرفت.
Microsoft زبان Visual Basic for Applications (VBA) را معرفی کرد: زبانی Robustتر و Intuitiveتر با طراحی Object-oriented که شباهت زیادی به Visual Basic دارد. یادگیری VBA درک مناسبی از شیوهٔ کار VB نیز میدهد. برای کسانی که به Macro Language قدیمی عادت کردهاند، VBA نیازمند بازنگری کامل در روش نوشتن و ساختاربندی Code است. در OOP با Objectها سروکار داریم: Database، Table، Query، Printer و Screen همگی Object هستند و Property، Event و Method دارند. این موضوع در فصل ۱۴ با جزئیات بیشتری دنبال میشود.
VBA نوشتن Macroها را Structured و Object-oriented میکند. اگر این نخستین تجربهٔ برنامهنویسی Macro در Access باشد، ممکن است Conceptها حتی آسانتر باشند چون دانش سیستم قدیمی باعث تداخل ذهنی نمیشود. VBA میان برنامههای Office مشترک است؛ بنابراین بخش زیادی از مطالب برای Word، Excel و حتی Visual Basic نیز سودمند است.
VBA از Macro Language متنی قبلی قدرتمندتر است و Access را فراتر از Menu Structure گسترش میدهد. میتوان تحت کنترل Software با برنامههای دیگر Microsoft Office تعامل کرد؛ برای مثال با Outlook Object Model فهرست Addressها را با Code به Database منتقل کرد، حتی اگر Outlook در آن لحظه اجرا نشده باشد و فقط نصب باشد. برعکس، Object Modelِ Access نیز از برنامههای دیگر قابل Manipulate است؛ مثلاً میتوان از Access فایل Excel ساخت بدون اینکه Excel روی Screen نمایش داده شود.
نمونهٔ مطرحشده این است که Export سادهٔ یک Table به Excel آسان است، اما اگر Data از چند Table، Formatting عددی و Audit Trail دربارهٔ نحوهٔ محاسبهٔ رقمها لازم باشد، VBA این کنترل را فراهم میکند. Objectها در Hierarchy قرار دارند و میتوان Event، Method و Property آنها را برای Program به کار گرفت.
هدفهای کتاب
هدف نخست کتاب توضیح نحوهٔ کار VBA در Access و مبانی Object-oriented Programming است. جزئیات زبان، Keywordها و Functionهای مشخص توضیح داده میشوند و سپس مثالهای عملی برای ساخت Subroutine و Function ارائه میشود. Source Code کامل Exampleها در کتاب آمده است.
کتاب فقط Operationهای موجود در Menu را توضیح نمیدهد، بلکه کارهایی خارج از Menu Structure را نیز نشان میدهد؛ مانند ساخت Ribbon Menu Structure اختصاصی در فصل ۱۱ و کنترل نحوهٔ پرشدن Spreadsheet Excel از Access در فصل ۳۵.
مثالهای تکمیلشده و آزمودهشده، همراه با توضیح مرحلهبهمرحله و Screenshotهای فراوان ارائه میشوند تا Reader نتیجهٔ Code را ببیند، نحوهٔ کار آن را بررسی و مطابق نیاز خود Modify کند. کتاب فرض میکند Reader از منظر Database شناخت کاری مناسبی از Access دارد اما تجربهٔ زیادی در نوشتن Macro ندارد. در پایان مثالها باید بتواند از VBA برای حل مسئله استفاده کند؛ محدودیت اصلی، به تعبیر نویسنده، تخیل است. ایمیل نویسنده در منبع: tollside@yahoo.com.
بخش اول — برنامهنویسی در Access VBA
در این بخش نحوهٔ کار Visual Basic for Applications در Access 2010 آموزش داده میشود. نسخهٔ 2010 ویژگیهای VBA جدیدی دارد و کتاب نشان میدهد چگونه Code با ویژگیهای جدید و کلاسیک Access تعامل کند. قواعد Coding، نوشتن Code، Debug کردن Errorهای اجتنابناپذیر و ساخت GUI برای اجرای آسان Code توسط User بررسی میشوند. این Mechanics تا حد زیادی به برنامههای دیگری مانند Excel و Word منتقلشدنی هستند.
فصلهای نهایی کتاب Exampleهایی دارند که نشان میدهند چگونه VBA برای مشکلات عملی Access بهکار گرفته میشود. نویسنده یادگیری با Example، آزمایش، فهم و سپس Modify کردن را یکی از بهترین روشها میداند. فرض میشود Reader از قبل درک پایهای از ساخت Database با Table و Query دارد؛ هدف این کتاب آموزش Design کامل Database نیست، بلکه استفاده از VBA درون Database است.
Access در سازمانها برای RAD (Rapid Application Development) بسیار استفاده میشود. مزیت آن این است که Prototype را میتوان بسیار سریع—گاهی در یک روز—ساخت و به User نشان داد و سپس Iterationهای متعدد انجام داد. این روش شاید نامنظم باشد، اما در Organizationهای سریعالتغییر، Application باید زود آماده شود و گاهی تا زمان اتمام Specification رسمی، نیازها منسوخ شدهاند.
بعضی Organizationها بهدلیل توسعهٔ مستندنشده، Support کردن Access Application را دشوار میدانند؛ با این حال Access مشکلات را سریع حل میکند. مزیت مهم Access نسبت به بعضی برنامههای Office، Multiuser بودن است: چند نفر میتوانند همزمان از Application استفاده کنند. همین ویژگی موضوعات Security، Audit Trail و Maintenance را نیز ایجاد میکند؛ برای تغییر Structure یا VBA Code معمولاً Exclusive Access لازم است.
نویسنده در پایان ابراز امیدواری میکند Reader با این کتاب قدرت گستردهٔ Access VBA و کاربرد آن در محیط کار را یاد بگیرد.