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

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

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

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

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

Recordset.AbsoluePosition



Sets or returns the relative record number of a Recordset object's current record.


شماره رکورد مرتبط با  رکورد جاری شئ رکورد ست را بر میگرداند و Zero Based است یعنی از صفر شروع میشود چون در فرم کانتینیوس نمی توان ردیف ترتیبی گذاشت برخلاف آبجکت گزارش در نتیجه برای شماره دادن به رکوردها از AbsolutePosition استفاده می نمایند البته با استفاده از BookMark که می بایست BookMark فرم و رکوردست منطبق بشوند و بعد کار اضافه کردن را انجام داد.



یادآوری میشود : 


مقدار ویژگی AbsolutePosition از صفر شروع میشود تا رکورد کانت منهای یک ، اگر مقدار این پراپرتی مساوی یا  بالاتر از رکوردهای پرشده باشد خطا میدهد با بررسی پراپرتی RecordCount می توانید تعداد رکوردهای پرشده در شئ رکوردست را تعیین بنمائید. حداکثر تنظیم مجاز پراپرتی AbsolutePosition مقدار پراپرتی RecordCount منهای یک است.



Recordset.Bookmark property (DAO)

زمان ساختن یا باز کردن شئ رکوردست هرکدام از رکوردها یک بوک مارک یونیک یا واحدی را دارد و میتوان بوک مارک را برای رکورد جاری با تخصیص دادن مقدار این پراپرتی به متغیری ذخیره کرد.برای بازگشت سریع به آن رکورد در هر زمان بعد از ارکن به رکورد دیگری ،  پراپرتی بوک مارک شئ رکوردست به مقدار متغیر تنظیم میشود .

اگر این پراپرتی به مقدار رکورد حذفی تنظیم شود خطا یی حادث میگردد.


مقدار پراپرتی BookMark مشابه record number نیست اشتباه نشود.


Form.Bookmark property (Access)


می توان پراپرتی BookMark را با فرم هایی برای تنظیم بوک مارکی که بصورت یونیک رکورد خاصی را در جدول یا کوئری  تحت فرم مشخص میکند بکار برد.


بوک مارک ها با رکوردهایی که نشان می دهند ذخیره نمی شوند ، فقط در حالی که فرم باز است معتبر هستند. آنها هر بار که یک فرم Bound شده  باز می شود ، توسط Microsoft Access دوباره ایجاد می شوند.


پس زمانیکه فرم کانتینیوس که به جدول یا کوئری متصل است  یا با عبارت SQL دیتا می گیرد  باز میشود رکوردها دارای بوک مارک یونیک  و واحدی هستند یا در رکورد ست هر بار که تنظیم میشود بوک مارک جدیدی به ِآن تخصیص داده خواهد شد . اگر رکوردی حذف شود و به بوک مارک مقداری تخصیص داده شود ( در همان زمان حذف )  خطا ایجاد میشود.


TEXTBOX CONTROLNAME :

ROWTEXT

IN CONTROLSOURCE  PROPERTY : 

=FORMROWNUMBER(ME)

'EOF  POSITION AFTER LAST RECORD


DIM FRM AS FORM

DIM RS AS DAO.RECORDSET

SET FRM=ME.RECORDSETCLONE

RS.MOVELAST : RS MOVEFIRST

'ON ERTOR RESUME NEXT

IF NOT (RS.BOF OR RS.EOF) THEN

RS.BOOKMARK=FRM.BOOKMARK

FORMROWNUMBER=RS ABSOLUEPOSITION+1

END IF 

SET RS=NOTHING


I HOPE  TO WRITE THE CODE CORRECTLY 



VARBOOKMARK  IS  A VARIABLE 

VARBOOKMARK AS VARIANT

RS.MOVELAST

VARBOOKMARK=RS.BOOKMARK

DEBUG.PRINT  ISEMPTY(VARBOOKMARK)



SN: DCount("*","TableName","[ID]<=" & [ID])
















تعیین شماره رکورد در رکوردست


از صفر شروع میشه یا Zero-Based پس برای اینکه نشان دهد  رکورد اول است باید عدد یک را به آن پراپرتی اضافه نمود 


هنگامی که یک یا چند رکورد پیش از آن حذف می شود ، وضعیت یک رکورد تغییر می کند. همچنین هیچ تضمینی وجود ندارد که یک رکورد دارای موقعیت مطلق یکسانی باشد


مثال زیر از خاصیت AbsolutePosition برای رهگیری ( دنبال کردن ) پیشرفت لوپ که تمام رکوردهای رکوردست را میشمرد استفاده می نماید 


برگرفته شده از سایت آفیس 


()Sub AbsolutePositionX

Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim strMessage As String


("Set dbsNorthwind=OpenDatabase("Northwind.mdb

.AbsolutePosition only works with dynasets or snapshots'


Set 
(rstEmployees=dbsNorthwind.OpenRecordset("Employees",dbOpenSnapshot

With rstEmployees
 Populate Recordset'

MoveLast.
MoveFirst.

 Enumerate Recordset'

Do While Not .EOF 

 Display current record information. Add 1 to AbsolutePosition value'
. because it is zero-based"

strMessage = "Employee: " & !LastName & vbCr & "(record " & (.AbsolutePosition + 1) & _ " of " & .RecordCount & ")"

If MsgBox(strMessage,vbOKCancel)=vbCancel Then Exit Do 

MoveNext 
Loop. 
Close.
End With 
dbsNorthwind.Close 
End Sub