ش | ی | د | س | چ | پ | ج |
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 |
از شی رکوردست برای دستکاری داده در دیتابیس در سطح رکورد استفاده میشود ( جدول یا کوئری )
چند تا تیپ داره یکیش 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
درنظر داشته باشید شماره ی رکورد در دیتا شیت اکسس با رکوردست یکی نیست !!!