کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

کار با رکوردست


لینکhttps://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-object-dao


از شی رکوردست برای دستکاری داده در دیتابیس در سطح رکورد استفاده میشود ( جدول یا کوئری ) 


چند تا تیپ داره یکیش 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

درنظر داشته باشید شماره ی رکورد در دیتا شیت اکسس با رکوردست یکی نیست !!! 

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد