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

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

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

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

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

تعیین و مشخص کردن بالاترین Row در Multiselection



You can use the SelTop property to specify or determine which row (record) is topmost in the current selection rectangle in a table, query, or form datasheet, or which selected record is topmost in a continuous 

form




با استفاده از خاصیت SelTop می توان بالاترین ردیف ( رکورد جاری ) را در یک مجموعه انتخابی مشخص کرد.این خاصیت عددی بین 1 و شماره رکوردها در Datasheet یا continuous form را بر می گرداند. 


پراپرتی های SelTop و SelLeft موقعیت گوشه چپ بالایی مستطیل انتخابی را مشخص میکند.


پراپرتی های SelHeight و SelWidth موقعیت گوشه سمت راست پایینی مستطیل انتخابی را مشخص میکند.


بیشتر زمانی استفاده میشود که بخواهند چند ردیف را انتخاب کنند و  یک Query روی آنها اجرا نمایند.


The SelHeight property returns a Long Integer value between 0 and the number of records in the datasheet or continuous form. The setting of this property specifies or returns the number of selected rows in the selection rectangle or the number of selected records in the continuous form.


پراپرتی SelHeight یک عدد صحیح از نوع لانگ بین صفر و تعداد رکوردها در فرم دیتاشیت یا کانتینیوس را برمی گرداند.تنظیم این خاصیت تعداد ردیف های انتخاب شده در مستطیل انتخابی یا تعداد رکوردهاب انتخاب شده در فرم کانتینیوس را برمی گرداند

RECORDSET.MOVE : 


موقعیت نشانگر رکورد جاری را انتقال می دهد


تلاش به انتقال به یک نقطه قبل از اولین رکورد به انتقال به رکورد قبل از اولین رکورد منجر میشود که BOF است .تلاش به انتقال به قبل از آخرین رکورد باعث میشود نشانگر رکورد به رکورد بعد از آخرین رکورد انتقال یابد که EOF است. در غیر از این مورد اگر متد MOVE برای انتقال به قبل از BOF  یا  EOF استفاده شود ارور ایجاد می کند.تست کنید در فرم Bound شده یعنی در پراپرتی  رکورد سورس نام جدولی باشد.

Private Sub cmd1_click()

Dim rs as Dao.Recordset

Set rs=me.recordset

Rs.MoveLast

Res.MoveNext

End Sub


مثال از SelTop و SelHeight : 

اگر از بالا به پائین ردیف سوم و چهارم را انتخاب کنید SelTop را 3 و SelHeight را 2 دریافت می کنیم اما اگر از پائین به بالا انتخاب کنید  عدد SelTop 4  و SelHeight همان 2 است

زمانیکه روی یک باتن کلیک کنید انتخاب از بین میرود و SelHeight هم صفر میشود پس اگر بخواهید آنرا داشته باشید باید ذخیره کنید می توانید در رویداد EXIT سابفرم آنرا در متغیری ذخیره کنید . فرضا Selh=Me.SelHeight .... اگر اینکار را انجام ندهید انتخاب Clear می شود و SelTop به رکورد انتخاب شده جاری که رکورد پائین است  تنظیم میشود ( زمانیکه انتخاب پائین به بالا باشد ) 

یادداشت : SelTop. و SelHeight. در یک فرم کانتینیوس کاربرد دارد در حالت Form View زمانیکه با Record Selector رکوردی را انتخاب می کنید.


دیتاشیتی که فوکس گرفته  ... تعداد ردیف های انتخاب شده با  SelHeight ... تعداد ستون های انتخاب شده با SelWidth .... بالاترین ردیف در مجموعه انتخاب شده با استفاده از SelTop و بستگی دارد که از بالا به پائین یا از پائین به بالا انتخاب می کنید. ( توضیحات ذیل )


' Datasheet that has the focus
Set frm = Screen.ActiveDatasheet
' Number of rows selected.
lngNumRows = frm.SelHeight

' Number of columns selected.
lngNumColumns = frm.SelWidth

' Topmost row selected.
lngTopRow = frm.SelTop

دو عمل زیر در Recordset ، اولی رفتن به اولین رکورد و دومی انتقال نشانگر رکورد به اولین رکورد انتخاب شده 

Rs.MoveFirst
' Move to the first selected record.
 Rs.Move mlngSelTop - 1
        '


Me.sfrmSomeSubForm.Form.SelWidth = CurrentDB.TableDefs(Me.sfrmSomeSubForm.Form.RecordSource).Fields.Count






گرفتن مقادیر انتخاب شده در سل ها ی دیتاشیت


با SelTop میشود مشخص کرد که کدام Row در بالاترین  مستطیل انتخابی در جدول ، کوئری ، دیتاشیت یا کانتینوس ف رم وجود دارد ( منظور اگر چند سل را انتخاب کرده باشید شماره ی مستطیل اول را بیان میکند بصورت  Long ) اگر کالمن انتخاب شود پراپرتی مربوطه را نمی توانید تغییر دهید.

درتصویر پائین رکوردها انتخاب شده میتوان با Me.SelHeight  تعداد انتخاب شده ها را گرفت توسط ایونت  MouseUpو ذخیره در متغیر عمومی و بعد برای نمایش مقادیر انتخاب شده

۱-ایجاد رکوردست با RecordSetClone

۲-رفتن به رکورد اول 

۳-تغییر موقعیت در رکوردست با پراپرتی Move که Rows آن SelTop میشود.

۴-ایجاد حلقه از یک تا جائی که به Sel برسد یا ممکنه حتی Sel-1 در این حلقه میتوان از پراپرتی Fields اون رکوردست استفاده کرد تا با MsgBox مقداراون فیلد را برگرداند .  

این روش ها درست است : فرضا اگر FLD1 کالمن اول رکوردست باشد منظور در جدول یا کوئری و از صفر شروع میشود.


("MsgBox RS.FIELDS("FLD1

( MsgBox RS(0

MsgBox RS!FLD1



با استفاده از پراپرتی های  SelHeight و SelWidth فرم هم می توان سایز واقعی مستطیل انتخابی در دیتاشیت را مشخص نمود.

بعبارتی گوشه ی راست پائینی مستطیل انتخابی را تعیین میکند

SelTop و SelLeft هم گوشه ی بالائی چپ مستطیل انتخاب شده میتواند چند مستطیل باشد