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

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

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

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

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

لوپ زدن در فیلدهای جدول



RecordSet.Fields Property ( DAO )



کالکشن یا مجموعه Fields را باز می گرداند که ارائه کننده یا حاوی اشیاء Field ذخیره شده برای شئ مشخص شده است.فقط خواندنی ( ReadOnly )



For Each Fld in Rs.Fields

Debug.Print Fld.Name

'Or your code

Next










لوپ در رکوردهای جدول و تغییرمحتویات فیلدها



در لوپ زیر محتویات فیلدهایی که از نوع عددی نیستند به حروف بزرگ تبدیل می شوند با تابع Ucase . نکته که چندین بار تکرار کردم وقتی Edit استفاده می کنید و رکوردست خالیه چون رکوردی داخلش نیست خطای No Current Record میزنه بنابراین تعجب نکنید و اصرار به ادامه کار نداشته باشید 


UCase ("Tech on the Net")
Result: "TECH ON THE NET"

Result: "ALPHABET"
UCase ("Alphabet")



With rst
Do While Not .EOF
.Edit
For Each fld in .Fields
If Not IsNumeric(fld) then fld = UCase(fld)
Next fld
.Update
.Movenext
Loop
.Close
End With





کنکور تیرماه ۱۴۰۲ : 

برترین‌ها: یکی از کاربرانی که امروز در نوبت دوم کنکور سراسری شرکت کرده بود، درباره برخورد بد مراقبان کنکور نوشته: یکی از عجیب ترین اتفاقای کنکور امروز این بود که تو حوزه نمیذاشتن کسی اب معدنی یا شکلات با خودش ببره و از هرکی میگرفتن مینداختنش سطل اشغال.... در جواب دختری که پرسید بردن اب معدنی یا شکلاتی که خودمون اوردیم چه اشکالی داره گفتن که ممکنه توش انرژی زا باشه... مثلا کسی انرژی زا بخوره کل سوالای کنکورو میتونه جواب بده؟














لوپ در جدول با بازشدن رکوردست در اکسس



If Not rs.BOF And Not rs.EOF Then
        rs.MoveFirst
        While (Not rs.EOF)
            Debug.Print rs.Fields("Employee Name")
            rs.MoveNext
        Wend
    End If
    rs.Close
    Set rs = Nothing













نمایش رکوردهای انتخاب شده ی فرم در MsgBox یا جعبه پیام ویندوزی



استفاده از آبجکت RecordSetClone و لوپ در رکوردست 


در لینک زیر داکیومنت را مطالعه نمائید و در آخر مثالی در پیمایش در رکوردها داده شده 


office/vba/api/access.form.recordsetclone


تهیه یک کپی از رکوردهای فرم هایی که تحت جدول یا کوئری هستند و باز کردن در رکوردست برای پیمایش و دستکاری داده ( Manipulate ) یا پیدا کردن ( Find ) داده  خاص در آن 


.Bof

.Eof

.FindFirst

.NotMatch

.Edit Or .Add 

.Update


اگر از Edit برای ویرایش داده فیلدی استفاده کنید اگر رکوردست خالی  باشد  با ارور No Current Record  مواجه خواهید شد در نتیجه باید از روش Add استفاده بنمائید.



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


از صفر شروع میشه یا 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