ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
برای دستکاری ساختار دیتابیس و داده هایش از Visual Basic بایستی از مدل DAO استفاده نمائید.
متُد CurrentDb راهی را برای دسترسی دیتابیس جاری از طریق Visual Basic بدون داشتن اطلاعات نام دیتابیس فراهم می سازد.بعد از تعیین و اشاره یک متغیر به دیتابیس جاری یا فعال می توان به سایر اشیاء و مجموعه ها در سلسله مراتب DAO هم دسترسی پیدا کرد و هم آنها را دستکاری نمود. ( سلسله مراتب DAO در زیر بیان شده و طریقه دسترسی به اشیاء مثل فرم و جدول و کوئری و غیره)
Dim db As Dao.DataBase
Set db=CurrentDb
طریقه دسترسی چیست ؟؟؟؟ در بالا تعریف متغیر به Database و Set کردن آن .... فرض کنید یک کلاس ماژول نوشتید تنها راه دسترسی به آن استفاده از Set است... بعدها با مطالعه بیشتر خواهید فهمید.
فرضا می خواهید به رکوردست دسترسی پیدا کنید و جداول یا کوئری را در آن باز کرده و ویرایش کنید ، می بینید که Recordset در زیرمجموعه یا سلسله مرتبه پائینتری از DataBase قرار دارد ( تصویر بالا ) لذا باید اول به دیتابیس ارتباط بزنیم و بعد رکوردست ، So نمی توان مستقیم بدون تعریف متغیر به database و بدون این Dao که به Access اتَچ است ارتباط بگیریم
Dim db As Dao.Database
Dim rs As Dao.Recordset
Set db=CurrentDb
Set rs=db.OpenRecordset("Select * From ZeroTbl")
Rs.Close
'Set Rs=Nothing
پس تعریف متغیر و نسبت دادن به اشیاء و Set نقش مهمی را ایفا می کنند.در بالا جدول ZeroTbl در یک شئ رکوردست که اجازه اَپند یا ویرایش یا حذف را می دهد باز شده و چون در حافظه موقت ، فضایی را اشغال می کند حتما بعد از دستکاری داده ها باید آن فضا را خالی نمود.... از Add ، Edit و Delete و سپس Rs.Update استفاده می نمایند برای اضافه ، ویرایش و یا حذف رکورد یا ردیف مورد نظر یا ردیف ها !!! در جریان باشید اگر No Current Record برایتان Raise یا شلیک شد دوست من مُصِّر نباش قرار نیست معجزه ای صورت بگیره مشکل از شماست نه اینکه دستتون اَتَک نداره ... نه !!! بلکه شما در حال ویرایش رکوردستی هستی که اصلا رکوردی نداره جانَم )
اگر برای شما مطلب مفید بود خواهشا در نظر سنجی شرکت نُمائید با تشکر و در پناه حق
تیر ۱۴۰۱ ... فقط دلجوئی و اظهار تاسف :
سیدمحمد شاهچراغی استاندار و جمعی از مسئولان استان قم با حضور در شهرک دامشهر، ضمن بررسی موضوع حمله سگهای ولگرد به اهالی این شهرک، با خانوادههای دو کودک جانباخته بر اثر حمله این سگها در هفته اخیر دیدار و از آنان دلجویی کرد.
تیر ۱۴۰۱ :
به گزارش فارس کمپین «برخورد با هتک حرمت امام جعفر صادق (ع) در سالن عروسی در اراک» در سامانه فارس من ثبت شد.
مخاطبان کمپینی با عنوان «برخورد با هتک حرمت امام جعفر صادق (ع) در سالن عروسی غیرمجاز اراک» در سامانه «فارس من» ثبت کردند.
متن کمپین به شرح زیر است:
در زمینهای کشاورزی اراک منطقه کرهرود یک تالار باغ به صورت غیرمجاز ساخته شده است که حکم تخریب آن در سال ۹۳ صادر شد، ولی به دلایل نامعلوم تاکنون اجرا نشد.
در شب شهادت امام جعفرصادق (ع ) در این مکان، مراسم عروسی با سر و صدای زیاد و پخش آهنگهای مبتذل برگزار شد، که باعث ناراحتی قشر مذهبی منطقه شده است.
به گزارش فارس با توجه به جریحهدار شدن احساسات دوستداران اهل بیت(ع)در این منطقه، امضاکنندگان این کمپین خواستار اجرای حکم تخریب این تالار باغ که مرکز فساد در این ناحیه است، هستند.
دختر جوان به نام المیرا در طرح شکایت خود گفت:«برای انجام تست بازیگری به دفتر سینمایی این کارگردان رفته بودم که مورد تعرض او قرار گرفتم و مدتی بعد متوجه شدم که باردار هستم.»
در حالی که نتیجه آزمایش دی ان ای در پزشکی قانونی نشان می داد که پدر فرزند، کارگردان مشهور است؛ این کارگردان به زودی در شعبه 12 دادگاه کیفری یک استان تهران برای دفاع از عنوان اتهامی تجاوز جنسی پای میز محاکمه خواهد رفت.
از شی رکوردست برای دستکاری داده در دیتابیس در سطح رکورد استفاده میشود ( جدول یا کوئری )
چند تا تیپ داره یکیش SnapShot هست که ReadOnly است و قابل Edit نیست و بعدی Dynaset که Read و Write را دارد برای باز کردن رکوردست در دیتابیس جاری از متد OpenRecordset از CurrentDb استفاده میشود فرضا میخواهیم جدول یک را در رکوردست باز کنید
***اول اظهار متغیری بعنوان رکوردست
Dim Rs As DAO.Recordset ( اگر Object Library تیک نخورده باشد از Refrences ارور میدهد ).
***دوم ایجاد آن در بافر
(Set Rs=CurrentDb.OpenRecordset("Table1",dbOpenDynaset
-برای دستکاری دیتا در رکورد : برای دیلیت از Rs.Delete برای اضافه کردن از Rs.Add و برای ویرایش از Rs.Edit استفاده می کنیم و حتما باید بعد از اینها Rs.Update نوشته شود.
-برای رفتن به رکورد اول ، بعدی ، قبلی و آخر به ترتیب از
MoveLast MovePrevious MoveNext MoveFirst استفاده می کنیم بیشتر برای لوپ زدن داخل رکوردست استفاده میشود.
***سوم بعد از اتمام کار بستن رکوردست با Rs.Close و خالی کردن بافر از آن با Nothing
- Rs.Eof مقداری رو میده از نوع Boolean که آیا موقعیت رکورد جاری بعد از رکورد آخر هست یا خیر وقتی به آخرین رکورد برود و زمان رفتن به رکورد بعد از آن که چیزی نیست ارورمیدهد که به انتهای رکوردست رسیده زمان خاتمه به حلقه هم از آن استفاده میشود مثل
Do While Not Rs.Eof
("Debug.Print Rs.Field("FldName
Rs.MoveNext
Loop
-از Rs.Move برای انتقال پوزیشن رکورد جاری در شی رکوردست استفاده میشود که پارامتر اول آن Rows است
-از Rs.AbsolutePosition برای گرفتن شماره رکورد در آن شی رکوردست استفاده می شود.
-از Rs.FindFirst برای پیدا کردن مقدار یا عبارتی در رکوردست استفاد میشود و چک کردنش با پراپرتی بعدی یعنی NoMatch هست مثل
برای عدد Rs.FindFirst "FldName1=" & Me.txtValue
برای تکست "'" & Rs.FindFirst "FldName1='" & Me.txt1
-از Rs.NoMatch برای تطابق داده ی پیدا شده با استفاده از FindFirst استفاده میشود یعنی اگر توسط FindFirst پیدا شد چه عملی انجام دهد
"'" & Rs.FindFirst "FieldName='" & Me.TxtSearch
If Rs.NoMatch=False Then
DO Something '
End If
- از Rs.RecordCount برای شمارش رکورد در رکوردست باز شده استفاده میکنیم البته اول باید به رکورد آخر برویم و بعد رکورداول و بعد رکوردکانت را استفاده کنیم تا درست عمل نماید.
- از Rs.BookMark بعنوان نشانگری که به طور یونیک رکورد جاری را در شی رکوردست مشخص میکند استفاده میشود ... فرضا در ورد بعبارت ساده و قابل فهم ، عباراتی را بعنوان بوک مارک در نظر می گیرید ، زمان استفاده به آن صفحه ای که هست می رود . اینجا هم همینطور است فرضا در فرم رکوردی را اضافه میکنید و با استفاده از FindFirst و NoMatch و برابر قرار دادن BookMark فرم و BookMark رکوردست میتوان به همان رکورد در سابفرم رفت چون دیتای جدید بعد از رکورد آخر می آید
برای ایجاد RowNumber یا LineNo در فرم کانتینیوس نه سینگل هم بوک مارک رکوردست با بوک مارک فرم برابر میشود و از AbsolutePosition باضافه ی یک استفاده میکنیم برای برگشت مقدار تابع فرضا
(Function ROWNUM(FRM AS FORM
اگر کارنت رکورد فرم مخالف رکوردکانت رکوردست بود بوک مارک رکوردست برابر بوک مارک فرم شود
ROWNUM=RS.ABSOLUTEPOSITION+1
END IF
END FUNCTION
درنظر داشته باشید شماره ی رکورد در دیتا شیت اکسس با رکوردست یکی نیست !!!