کاربرد ADO در برنامه نویسی VBA به همراه مثال عملی
سلام به یکی دیگر از آموزش های سافت پلاس خوش آمدید .موضوع امروز آموزش مان از سری مطالب آموزش اکسس و البته آموزش برنامه نویسی VBA در مورد مفهوم مهم و کاربردی ADO در برنامه نویسی اکسس با هم صحبت کنیم .
هدف من این است که این آموزش را به تخصصی ترین و کامل ترین منبع آموزشی در زمینه کار با ADO در برنامه نویسی اکسس تبدیل کنم .
پس خوشحال می شوم که اگر در این مسیر من را همراهی کرده و اگر نظری در مورد این مطلب دارید حتما با من در میان بگذارید تا به کمک همدیگر این هدف را به سرانجام برسانیم .
منظور از ADO در برنامه نویسی اکسس چیست ؟
ADO یک اصطلاح مخفف است که اشاره به عبارتهای Activex Data Object دارد . در خیلی از منابع از ADO بعنوان یک تکنولوژی اسم می برند .
اما ما می خواهیم ببینیم که کار این ADO چیست و چطور می شود از آن استفاده کرد .
بیایید همه چیز را ساده شروع کرده و ساده هم پیش ببریم . ما اکسس را به عنوان یک نرم افزار مدیریت بانک اطلاعاتی می شناسیم .
یکی از قابلیت هایی که اکسس دارد این است که می تواند با نرم افزار های مختلف ارتباط برقرار کند و یک سری از اطلاعات را به آن نرم افزار ها بدهد و یا اینکه یک سری از اطلاعات را از آنها دریافت کند .
فرض کنید در حالت عادی 100 ردیف از اطلاعات را در داخل نرم افزار اکسس خود دارید . از طرف دیگر هم یک یک فایل کاربردی اکسل دارید .
حالا می خواهید این 100 ردیف اطلاعات را به مجموعه اطلاعات داخل اکسل خودتان اضافه کنید .
در حالت عادی خیلی راحت اکسس را باز کرده اطلاعات را کپی و به داخل نرم افزار اکسل خودتان منتقل می کنید .
اما اگر بخواهید که اکسل خودش این کار را انجام بدهد چه کار باید بکنید .
اینجاست که باید به سراغ برنامه نویسی VBA بروید . اما باز هم یک مشکل وجود دارد . آن هم اینکه زبان برنامه نویسی VBAنمی تواند بطور مستقیم با نرم افزار های مقصد ارتباط برقرار کند .
بلکه برای برقراری این ارتباط احتیاج به یک رابط دارد . این رابط همان ADO است . با من همراه باشید تا بیشتر این قضیه را برایتان باز کنم .
ADO چه کار می کند ؟
اجازه بدهید خیلی ساده صحبت کنم . ADO یک قابلیتی است که به نرم افزار اکسس یا اکسل شما این اجازه را می دهد که با سایر منابع اطلاعاتی ارتباط برقرار کند .
حالا این منابع اطلاعاتی چی هستند ؟
خود این منابع اطلاعاتی می توانند نرم افزار های مختلفی باشند . مثلا یک فایل اکسس دیگر . یا یک فایل اکسلی که کلی اطلاعات در داخل آن وجود دارد . یا حتی یک نرم افزار SQL server .
وقتی که اکسس یا اکسل می خواهد با این نرم افزار ها ارتباط برقرار کند می تواند از ADO کمک بگیرد .
کل اتفاقی که می افتد این است که :
1- اکسس با استفاده از کدهای VBA و البته به کمک ADO یک ارتباط با نرم افزار حاوی اطلاعات خود برقرار می کند . خود ADO یک متد مخصوص برای این کار دارد که به کمک آن با دیگر نرم افزار ها ارتباط برقرار می کند .
در ادامه همین آموزش راجع به این متد قرار است بیشتر با هم صحبت کنیم .
2- حالا ارتباط اکسس با فایل مقصدش برقرار شده است . در این مرحله می تواند از فایل مقصد یک سری درخواست بکند . می پرسید چه درخواست هایی ؟
مثلا می تواند از فایل مقصد بخواهد که یک سری از اطلاعات موجود را به داخل اکسس منتقل کند .
یا اینکه در داخل اطلاعات فایل مقصد جستجو کند و نتیجه اطلاعات را به کاربر خودش در داخل اکسس نشان بدهد .
یا اینکه یک سری تغییرات را در داخل اطلاعات فایل مقصد ایجاد کند مثلا یک سری از اطلاعات را حذف کند ، یا بروز رسانی کند و یا اطلاعات جدیدی را به مجموعه اطلاعات قبلی در فایل مقصد اضافه کند .
اینها همه کارهایی است که اکسس می تواند از طریق ADO انجام بدهد .
بیایید در ادامه کمی بحث را تخصصی تر و البته به طور عملی با هم پیش ببریم .
ADO از چه بخش هایی تشکیل شده است ؟
اینجا می خواهیم ببینیم که ADO از چه قسمتهایی تشکیل شده و هر کدام از آنها چه کار یا کارهایی را می توانند برای ما انجام بدهند .
بطور کلی ADO شامل بخش های مختلفی است اما از بین همه این بخش ها چند تای آنها از بقیه مهمتر هستند که در زیر با آنها آشنا می شویم .
شی connection
همانطور که از اسم آن مشخص است به کمک این شی می توانیم به برقراری ارتباط با بانک های اطلاعاتی بپردازیم .
شی command
با استفاده از این شی می شود یک دستور اس کی یو ال را اجرا کرد . دستور اس کی یو ال همان کار مورد نظر ماست که قرار است در بانک اطلاعاتی مورد نظر اجرا شود .
شی Recordset
مجموعه ای است از رکوردهای بانک اطلاعاتی که بنا بر دستور صادر شده از طرف ما انتخاب شده و در اختیار ما قرار می گیرد .
تا به اینجا با چند تا شی مهم در ADO آشنا شدیم . بعدا با بقیه اشیا در همین مطلب آشنا خواهیم شد
بیایید برای استفاده از ADO یک پروژه عملی تعریف کنیم
فرض کنید که من یک فایل اکسس دارم که مشخصات چند نوع داروی مختلف در داخل آن ثبت شده است .
تصویر زیر این فایل را نمایش می دهد .
اینجا 16 ردیف اطلاعات داریم می خواهیم این اطلاعات را به داخل یک فایل اکسل بفرستیم .
اینجا چند تا نکته وجود دارد گه حتما باید به آنها توجه کنید .
نکته اول اینکه من اسم این دیتابیس را my database تعریف کرده ام.
نکته دوم اینکه اسم جدول مورد نظرمان drugstors نام گذاری شده است . قرار است اطلاعات از داخل اکسس به این جدول منتقل شوند .
ما در ادامه در داخل کدهای خودمان به هر دو تای این اسم ها نیاز داریم .
با در نظر گرفتن این نکته ها برویم به سراغ اصل کار خودمان .
اینجا داریم از نحوه ارسال اطلاعات از اکسس به اکسل صحبت می کنیم . اما در یک مطلب جداگانه ای من راجع به نحوه ارسال اطلاعات از اکسس به ورد هم صحبت کرده ام .
اگر دوست دارید نحوه انجام این کار را یاد بگیرید حتما به شما توصیه می کنم که مطلب چطور با کدهای VBA اطلاعات را از اکسس به ورد بفرستیم را مطالعه کنید .
اول از همه به یک کتابخانه احتیاج داریم
برای شروع کار باید یک کتابخانه را به نرم افزار اکسل معرفی کنیم .
این کتابخانه کلیه متدها و دستوراتی را که قرار است از آنها استفاده کنیم را در خود جمع آوری کرده است و تنها کاری که ما باید انجام بدهیم این است که آنها را در قالب یک کتابخانه به محیط برنامه نویسی خودمان اضافه کنیم .
خوشبختانه برای این کار هم مسیر سختی در پیش نداریم . کافی است چند تا کار ساده زیر را انجام بدهیم .
1- به محیط برنامه نویسی وی بی ای رفته و بر روی منویtools کلیک کنید بعد گزینه نمایش داده شده در تصویر زیر را انتخاب کنید .
بعد از انجام این کار پنجره زیر برای شما نمایش داده خواهد شد . این پنجره لیست کاملی از انواع کتابخانه ها را در اختیار شما قرار می دهد .
نسخه ای که در سیستم من وجود دارد نسخه 6.1 است . اما اگر شما نسخه ای بالاتر از این دارید حتما آخرین نسخه را انتخاب کنید .
با همین یک کار ساده کتابخانه ADO به محیط اکسل اضافه می شود .
حالا کدهای زیر را در داخل یک ماژول وارد کنید .
Sub get_data()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim dbpath As String
Dim ws As Worksheet
Dim strsql As String
Dim i As Integer
Set ws = ThisWorkbook.Sheets("fromaccess")
dbpath = "D:\mydatabase.accdb"
ws.Range("A1:E50").Clear
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = dbpath
.Open
End With
Set rs = New ADODB.Recordset
rs.Open "drugstors", cn, adOpenDynamic, adLockOptimistic
For i = 1 To rs.Fields.Count - 1
ws.Cells(1, i + 1) = rs.Fields(i).Name
Next
ws.Range("A2").CopyFromRecordset rs
End Sub
در ادامه یک توضیحی در مورد این کدها به شما می دهم و بعد در یک ویدئو راجع به نحوه استفاده از این کدها و اینکه چطور از آنها استفاده کنیم توضیح می دهم .
در خطوط شماره 3 تا 13 از این کدها یک سری متغیر را تعریف کرده ایم .
در خط شماره 15 متغیر ws را مقدار دهی کرده ایم . اینجا مقدار این متغیر را مساوی با یک شیت با عنوان FromAccess قرار داده ام . این شیت همان شیتی است که قرار است اطلاعات مورد نظر ما از اکسس وارد این شیت شوند .
متغیر دیگر dbpath است که در خط شماره 17 آدرس محلی که فایل اکسس ما در داخل آن قرار دارد را به برنامه معرفی کرده ام .
در خط شماره 19 یک محدوده از سلول های موجود در شیت FromAccess را به برنامه معرفی و از اکسل خواسته ام که هر اطلاعاتی که در این محدوده از سلول ها وجود دارد را پاک کند .
در خط شماره 21 وارد اصل ماجرا می شویم . از اینجا به بعد در واقع می خواهیم از شی ADO در برنامه نویسی خودمان استفاده کنیم .
ادامه مباحث مربوط به استفاده از این کدها و نحوه عملکرد آنها را می توانید در ویدئوی آموزشی همین بخش مشاهده کنید .
اینجا آموزش مربوط به آشنایی با ADO در برنامه نویسی وی بی ای به اتمام می رسد
چطور بود ؟ این آموزش برایتان مفید بود ؟ توانستید کار با ADO را با استفاده از این مطلب یاد بگیرید یا نه ؟
به نظرتان این مطلب چه کم و کاستی داشت ؟ سوال یا ابهامی در مورد این مطلب دارید ؟ .
خوشحال می شوم هر نظر ؛ سوال یا مطلبی در مورد این آموزش دارید را در قسمت دیدگاهها درج کنید .
در ضمن اگر علاقمند به آموزش و یادگیری برنامه نویسی VBA در اکسل هستید هر زمان که تصمیم به یادگیری گرفتید، می توانید روی کمک من حساب کنید .
در دوره جامع برنامه نویسی VBA در اکسل همه آن چیزی را که برای یادگیری این زبان برنامه نویسی به آن احتیاج دارید را می توانید یکجا داشته باشید .
اگر خواستید نگاهی به این دوره بیندازید کافی است روی تصویر زیر کلیک کنید تا به صفحه مربوط به این دوره منتقل شوید .
در ضمن توی پیج اینستاگرام سایت هم منتظرتان هستم .
مطالب زیر را حتما مطالعه کنید
چطور زبان ورود اطلاعات در اکسس را کنترل کنیم ؟
با رعایت این نکات تبدیل به یک برنامه نویس حرفه ای در اکسل شوید .
۷ نکته مهم در برنامه نویسی VBA که باید آنها را بدانید
ماکرو نویسی در اکسل |ببینید که ماکروها چقدر کاربردی اند.
زبان وی بی ای مرده است
۱۰ کاری که بدون برنامه نویسی VBA قادر به انجامش نبودید .
توی این آموزش کارهایی رو بررسی می کنیم که فقط با استفاده از کدهای وی بی ای می شود آنها را در آفیس انجام داد .
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
این مطلبتون ناقص مونده
بزودی این مطلب تکمیل خواهد شد