مفهوم رکوردست در برنامه نویسی VBA
به یکی دیگر از آموزش های سافت پلاس خوش آمدید .
امروز می خواهیم در مورد رکوردست با همدیگر صحبت کنیم .
اگر از کاربران حرفه ای نرم افزار اکسس باشید که قاعدتا باید با برنامه نویسی در محیط این برنامه هم آشنایی داشته باشید .
همان زبان برنامه نویسی VBA که از آن می توان در محیط نرم افزارهای خانواده آفیس از جمله همین اکسس استفاده کرد .
کار اصلی زبان برنامه نویسی VBA این است که با از استفاده از دستورات و کدهای متعددی که در محیط مربوط به این برنامه درج می کنیم به مدیریت اشیای موجود در اکسس می پردازیم .
برای مدیریت کردن این اشیا زبان برنامه نویسی VBA امکانات و قابلیت های متعددی را در اختیار ما قرار می دهد .
یکی از این قابلیت ها و امکانات چیزی است که ما از ان تحت عنوان Recordset یا همان رکوردست ها نام می بریم و می شناسیم .
امروز می خواهیم بطور اختصاصی در خصوص این قابلیت ها صحبت بکنیم .
مواردی که در این زیمنه مورد بررسی قرار می دهیم شامل موارد زیر است .
۱- منظور از رکوردست ؟
۲- چگونه یک رکوردست را ایجاد کنیم ؟
۳- مثال هایی کاربردی در استفاده از رکوردست ها در محیط برنامه نویسی اکسس داشته باشیم ؟
پس با من تا پایان این مطلب همراه باشید .
مفهوم رکورد ست در زبان برنامه نویسی VBA چیست ؟
رکوردست هم یکی از دهها و صدها اشیا و دستورات موجود در زبان برنامه نویسی VBA است .
کار آن چیست ؟
رکوردست شامل مجموعه ای است از اطلاعات موجود در یک یا چند جدول که ما تعیین می کنیم .
یا به عبارتی می توان گفت که رکوردست را می توان بصورت مجموعه ای از اطلاعات در نظر گرفت که ما می توانیم این اطلاعات را ویرایش کنیم حذف کنیم و یا بروز رسانی کنیم اما در عین حال خود این اطلاعات که تحت عنوان رکوردست می شناسیم برای ما قابل دیدن نیستند .
پس برای چه کسی قابل دیدن هستند ؟
در پاسخ باید گفت که اطلاعات یک رکوردست فقط توسط برنامه ما قابل مشاهده هستند و ما فقط از طریق برنامه و کدهایی که می نویسیم می توانیم در این اطلاعات دخل و تصرف کنیم .
مطمئنم که درک این مفاهیم که ما اطلاعات را نمی بینیم ولی آنها را ویرایش می کنیم خیلی می تواند سوال برانگیز باشد .
اینکه چرا ما نمی توانیم این اطلاعات را ببینیم ؟
اینکه وقتی که چیزی را نمی توانیم مشاهده کنیم ویرایش می کنیم ؟
اصلا از همه اینها گذشته این رکوردست به چه دردی قرار است بخورد ؟
و سوالاتی از این دست که برای هر کسی که برای اولین بار با این مفهوم برخورد می کند در ذهنش مطرح می شود .
درست مثل خود من که در اوایل کار که با بحث رکوردست ها آشنا شدم تا مدتی گیج و گنگ بودم و شروع به تحقیق و مطالعه در خصوص رکوردست ها کردم .
و نتیجه و ماحصل ان همه تحقیق و مطالعه کتابها و سایتهای مختلف شد همان چند خطی که در بالا برای شما درج کردم .
اینکه ما رکوردست ها را نمی بینیم ولی می توانیم آنها را ویرایش کنیم .
حالا اینکه اصلا چرا باید این کار را بکنیم ؟
چرا ما باید و یا نمی توانیم این رکوردست ها را ببینیم ؟
وقتی که چیزی را نمی بینیم به چه دردمان می خورد ؟
و چندین و چند سوال دیگر که هیچ جایی یا اصلا پاسخی به آنها نداده بودند یا اینکه قضیه ای را که برای من پیچیده تر بود را پیچیده تر از قبل می کردند .
اما من امروز می خواهم خیلی ساده این قضیه رکورد ست ها را برای شما توضیح دهم و به تمامی سوالاتی که در بالا مطرح کردم و شاید سوالاتی باشد که به ذهن شما هم خطور کرده باشد را پاسخ بدهم .
حتما شما هم مثل من در برنامه نویسی VBA انقدر پیشرفت کرده اید و اکنون رسیده اید به پشت دروازه بسته ای که بر سر در آن نوشته بشده رکوردست.
من خیلی دنبال راهی گشتم تا از این دروازه عبور کنم .
اما امروز می خواهم دست شما را بگیرم تا به راحتی از این در وارد شوید و با دنیای رکوردست ها آشنا شوید .
معنی رکوردست در زبان برنامه نویسی VBA به زبان ساده
قدرت در سادگی است .
بیاییم خیلی ساده با هم صحبت کنیم .
بخش زیادی از مفهوم کلمه رکوردست در بطن و معنی خود این کلمه نهفته است .
رکوردست یعنی مجموعه ای از رکوردها .
اجازه بدهید با استفاده از یک مثال عینی موضوع را بهتر بیان کنم .
جدول اطلاعات زیر را در نظر بگیرید .
این جدول حاوی اطلاعات مربوط به کتابها به همراه نام نویسنده ها و دیگر مواردی است که مشاهده می کنید .
حالا ما با استفاده از رکورد ست می توانیم تمام یا بخشی از این اطلاعات را سوا کرده و بطور موقت در حافظه کامپیوتر خود قرار دهیم .
اینکه چگونه می توانیم این کار بکنیم و چه کاربردی می تواند برای ما داشته باشد را در ادامه با هم بررسی خواهیم کرد .
فقط تا به اینجای کار همین قدر بدانید که ما وقتی صحبت از رکوردست می کنیم در واقع اشاره به تمام یا بخشی از اطلاعاتی می کنیم که از یک منبع – که خود این منبع می تواند یک جدول و یا یک کوئری باشد – را با استفاده از روش هایی که به آنها اشاره میکنیم جدا کرده و در حافظه کامپیوتر خود قرار دهیم تا از آنها برای کارهای خاصی که باز هم در ادامه به آنها خواهیم پرداخت استفاده کنیم .
پس در ادامه ما باید دو کار انجام دهیم :
۱- اول اینکه چگونه یک رکوردست را ایجاد کنیم ؟
۲- چگونه از رکوردست ایجاد شده استفاده کنیم ؟
اول به سراغ پرسش نخست برویم.
پیش از این بررسی کردیم : آشنایی با مفهوم شی در برنامه نویسی VBA .
چگونه یک Recordset را ایجاد کنیم ؟
برای ایجاد یک رکورد ست باید چند تا چیز را بدانیم .
اول اینکه خود رکوردست یک شی است که در کتابخانه DAO که مخفف واژگان Database Access Object است قرار دارد .
پس در قدم اول باید این کتابخانه را به محیط کاری اکسس خود اضافه کنیم تا بتوانیم از شی رکوردست موجود در آن استفاده کنیم .
البته در اکسس کتابخانه مجزای دیگری هم وجود دارد که از آن تحت عنوان ADO نام می برند که مخفف واژگان AxtiveX Data Object است .
این کتابخانه هم عینا دارای یک شی به نام رکوردست است .
اما ما اینجا بیشتر در خصوص کتابخانه DAO و رکوردست موجود در آن با همدیگر صحبت می کنیم .
هر چند که در اینجا نمی خواهیم خیلی تخصصی در خصوص این دو کتابخانه و اشیای موجود در آنها و اینکه هر کدام چه قابلیت هایی دارند با همدیگر صحبت کنیم اما بطور خیلی خلاصه و اجمالی به دو مورد از نکات مربوط به کار با این کتابخانه ها اشاره می کنم و بعد بحث اصلی خود را پی می گیریم
کتابخانه DAO بیشتر در مواردی استفاده می شود که بخواهیم ما با اطلاعات موجود در خود نرم افزار اکسس کار کنیم .
اما اگر بخواهیم از داخل اکسس با سایر بانک های اطلاعاتی ارتباط برقرار کنیم بیشتر از ADO استفاده می کینم که خود بحث مفصلی خواهد بود .
تکنولوژی DAO از سابقه بیشتری نسبت به ADO برخوردار است .
سرعت پردازش و کار با DAO اندکی بیشتر از ADO می باشد .
خوب حالا به موضوع اصلی بحث خود برگردیم .
گفتیم که شی رکوردست در کتابخانه ای تحت عنوان DAO قرار دارد .
برای استفاده از این شی باید اول این کتابخانه را به محیط VBA خود اضافه کنیم .
برای این کار مراحل زیر را دنبال کنید .
اول نرم افزار اکسس خود را باز کرده با استفاده از کلیدهای ALT +F11 به محیط برنامه نویسی VBA بروید .
در داخل این محیط منوی Tools را باز نموده و بر روی گزینه References کلیک کنید .
با این کار پنجره زیر برای شما باز خواهد شد .
در این پنجره و در کادر available Reference می توانید لیستی از انواع کتابخانه اشیای موجود را مشاهده کنید .
حالا کاری که باید بکنید این است که در این لیست به سمت پایین حرکت کنید تا به گزینه ای تحت عنوان Microsoft DAO 3.6 Object Library برسید .
این همان کتابخانه مورد نظر ما می باشد .
برای اضافه شدن این کتابخانه به محیط اکسس خود کافی است تیک مربوط به این گزینه را بزنید و بر روی دکمه OK کلیک کنید .
به همین راحتی شما توانستید کتابخانه موسوم به DAO را به محیط کار خود اضافه کنید .
حالا می توانید از اعضا و اشیای موجود در این کتابخانه استفاده کنید .
اما شی مورد نظر ما در اینجا شی رکوردست موجود در این کتابخانه است .
پس در قدم بعد باید به سراغ کار با این شی در محیط برنامه نویسی خود برویم .
ما کتابخانه مربوط به شی DAO را به محیط کار خود اضافه کردیم .
حالا باید شی رکوردست موجود در این کتابخانه را فراخوانی کنیم .
ایجاد و فراخوانی شی رکوردست
ما برای اینکه بتوانیم یک شی رکوردست را ایجاد کنیم نیاز به دو چیز داریم .
اول اینکه نیاز به معرفی منبعی داریم که قرار است از روی آن یک رکوردست ایجاد کنیم .
برای این کار می توانیم از کدی شبیه کد زیر استفاده کنیم .
Dim db as DAO.database
در اینجا ما یک شی ایجاد کردیم و نام آن را بنا به خواست خود db گذاشتیم که همان مخفف کلمه database است .
و نوع آن را نیز از نوع دیتابیس موجود در کتابخانه DAO قرار دادیم .
در محله بعد باید شی رکوردست خود را به برنامه معرفی کنیم و بگوییم که این شی رکوردست مربوط به کدام کتابخانه است یعنی مربوط به کتابخانه DAO است یا مربوط به کتابخانه ADO.
برای این کار هم می توانیم از کدی شبیه کد زیر استفاده کنیم .
dim rs as DAO.recordset
در اینجا هم ما شی رکوردست را با نام اختیاری rs که همان مخفف کلمه recordset است را ایجاد کرده و نوع آن را از نوع شی recordset موجود در کتابخانه DAO قرار دادیم .
پس تا به اینجا ما دو کار کردیم :
۱- تعریف شی db از نوع دیتابیس .
۲- تعریف شی rs از نوع رکوردست .
اما تا به اینجا ما فقط این دو شی را تعریف کرده ایم ولی آنها را ایجاد نکرده ایم .
این دقیقا مثل این است که شما بعنوان مثال برای کسی تعریف می کنید که می خواهید یک میز از جنس چوب برای خود درست کنید .
اما تا زمانی که دست به کار نشوید و این میز را ایجاد نکنید همه چیز در حد تعریف باقی می ماند .
اینجا هم قضیه از همین قرار است .
ما دو شی db و rs را تعریف کرده ایم و گفته ایم که جنس آنها از نوع دیتابیس و رکوردست است .
اما هنوز خود آنها را ایجاد نکرده ایم .
خوب برای ایجاد اشیای مورد نظر چه باید بکنیم ؟
ایجاد شی رکوردست در محیط VBA
خوب ما شی db را تعریف کردیم برای ایجاد و ساختن آن باید به آن مقدار دهی کنیم .
برای ین کار هم از کدهای زیر می توان استفاده کرد .
set db=currentdb
این کد چه مفهومی دارد ؟
ما در این کد با استفاده از کلمه کلیدی set به برنامه خود می گوییم که شی db را که قبلا تعریف کردیم را برابر با دیتابیس جاری قرار دهد .
دیتابیس جاری هم که اشاره به همان برنامه ای دارد که در حال حاضر در داخل آن داریم کد نویسی می کنیم .
البته این کار را به روش های دیگری هم می شود انجام داد .
مثلا برای همین نمونه بالا فرض کنید که فایل اکسسی که در حال کار کردن بر روی آن هستیم را تحت عنوان mydatabase نام گذاری کرده ایم .
خوب حالا می توانیم به جای کد قبلی از کد زیر هم استفاده کنیم .
("set db=opendatabase("mydatabase
در اینجا هیچ کدام از کدها با هم فرقی ندارند .
اما یک سوال !
اگر ما در یک فایل اکسس کار می کنیم و بخواهیم از اطلاعات موجود در فایل اکسس دیگری استفاده کنیم آن وقت فکر می کنید چگونه باید این منبع را تنظیم و معرفی کرد ؟
خوب حالا ما دیتابیس هدفی را که می خواهیم با آن کار کنیم را به برنامه معرفی کردیم .
حالا فرض کنید که این دیتابیس ما دارای ۱۰ جدول مختلف و همچنین دارای ۵ کوئری می باشد .
چه جوری باید تعیین کنیم که اولا می خواهیم با کدام یک از این ۱۰ جدول کار کنیم و به اطلاعات آن دسترسی پیدا کنیم .
در ثانی از بین اطلاعات جدولی که انتخاب کردیم به کدام رکوردها می خواهیم دسترسی داشته باشیم .
اگر دقت کنید در اینجا ما با یک سلسه مراتب مواجهیم .
مطلب مرتبط : کار با خاصیت Timer در محیط برنامه نویسی VBA در اکسس
خوب در مرحله بعد باید برویم به سراغ اینکه برای برنامه تعیین کنیم که می خواهیم با کدام یک از جداول و یا کدام یک از کوئری ها می خواهیم کار کنیم و از بین اطلاعات موجود در این جدول ها یا کوئری ها می خواهیم به کدام یک دسترسی داشته باشیم .
آیا هدف مان این است که به همه اطلاعات موجود در یک جدول یا کوئری دست پیدا کنیم یا تنها می خواهیم به بخشی از آن ها دسترسی داشته باشیم .
برای دسترسی به این اهداف باید به سراغ ایجاد شی رکوردست برویم .
همان رکوردستی در مرحله قبل و تحت عنوان rs تعریف کردیم .
برای ایجاد و ساختن رکوردست مربوطه می توانیم از کدی شبیه کد زیر استفاده کنیم .
("set rs=db.openrecordset("tblbooks
ما در این کد به برنامه گفته ایم که رکوردهای موجود در جدول “tblbooks ” را که در بانک اطلاعاتی جاری ما قرار دارد را در قالب یک رکوردست تحت عنوان rs درآورد .
این کد تنها یکی از حالت هایی است که ما می توانیم با استفاده از آن به ایجاد رکوردست بپردازیم .
بعنوان مثال کد زیر هم می تواند یک روش دیگر را برای ایجاد این رکورد ست را برای ما بیان کند .
Dim db As DAO.Database Dim rs As DAO.Recordset Dim strsql As String "strsql = "select * from tblbooks (Set rs = CurrentDb.OpenRecordset(strsql
l ما در اینجا از یک عبارت SQL برای ایجاد رکوردست مورد نظر خود استفاده کردیم .
هر دو این روش ها یک خروجی برای ما خواهد داشت .
یعنی رکوردهای موجود در جدول مورد نظر ما در داخل شی رکوردست ما قرار می گیرد .
حالا این اطلاعات در کجا باید قرار بگیرد .
این اطلاعات در حافظه کامپیوتر ما قرار می گیرد و ما نمی توانیم این رکوردست را مشاهده کنیم .
خوب وقتی که ما این اطلاعات را نمی توانیم ببینیم پس به چه درد ما می خورند و چگونه ما می توانیم از آنها استفاده کنیم .
این مطلب را به تدریج تکمیل خواهد شد ……. باز هم به ما سر بزنید
به جمع ما در ایستاگرام بپیوندید. .
مطالب زیر را حتما مطالعه کنید
ساخت برچسب در اکسس💥چطور آنها را ایجاد و مدیریت کنیم ؟
ریبون ها در اکسس💥از مخفی کردن تا مدیریت کردن آنها
چطوری متن ها و تصاویر را بصورت متحرک در اکسس نمایش بدهیم ؟
فرمت دهی نوشته ها در اکسس | کاربرد + مثالها
۵ ویژگی در فرم های اکسس که کمتر از آنها خبر داشتید .
باز کردن گزارش اکسس برای یک رکورد مشخص + نمونه فایل
6 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
ممنون میشم این بحث را تکمیل کنید در مورد ado هم مطلب بذارید
ممنون
سلام بزودی ادامه این مبحث تکمیل می شود
بحث نصفه کاره رها شده حیف!!!!!!!!!!!!!!!!!!!!!!!
سلام
مطالب سایت به ترتیب در حال بروزرسانی است انشالله بزودی این مطلب هم کاملتر خواهد شد
با سلام و احترام بسیار فصیح و روان ولی ای کاش جامع هم می بود و بحث به سر انجام می رسید.
سلام ممنون از همراهی شما
مبحث رکورد ست در برنامه نویسی واقعا گسترده است ولی حتما این مطلب بروز رسانی شده و مطالب جدید به ان اضافه میشود