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

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

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

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

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

بازیابی ردیف ها در رکوردست


متد GetRows برای کپی از یک رکوردست استفاده میشود.این متد یک آرایه دوبعدی را باز می گرداند. اولی نمایانگر فیلدیاستون و دومی شماره ردیف است.برای مثال intField فیلد و intRecord شماره ردیف را نمایش می دهد.


Zero-Base هستند یعنی 0 در جای خود معرف ستون یا ردیف صفر است 


avarRecords(intField, intRecord)


برای گرفتن مقدار فیلد اول در ردیف دوم :


field1 = avarRecords(0,1)


برای گرفتن مقدار فیلد دوم در ردیف اول : 


field2 = avarRecords(1,0)


اگر برای آرایه از تایپ Variant استفاده شود Ubound نیز استفاده کنید و +۱ را





Dim varEmployees As Variant
varEmployees = rstEmployees.GetRows(rstEmployees.RecordCount)
تعداد ردیف های بازیابی شده
Debug.Print "Number of Rows Retrieved: " & UBound(varEmployees, 2) + 1
تعداد فیلد ( ستون های بازیابی شده )
Debug.Print "Number of Fields Retrieved: " & UBound(varEmployees, 1) + 1


چاپ در پنجره Immediate window ( محتوای  ستون ۳ و ردیف ۴)
Debug.Print "Field 3 - Row 5: " & varEmployees(2, 4)
چاپ در پنجره Immediate window ( محتوای ستون ۱ و ردیف ۲)
Debug.Print "Field 1 - Row 2: " & varEmployees(0, 1) 



لوپ در بین هر ردیف :

'Loop thru each Row
For intRowNum = 0 To UBound(varEmployees, 2) 
لوپ در بین هر ستون : 
'Loop thru each Column       
For intColNum = 0 To UBound(varEmployees, 1)   
Debug.Print varEmployees(intColNum, intRowNum),  Next
Debug.Print vbCrLf
Next









  1. Number of Rows Retrieved: 9
  2.  
  3. Number of Fields Retrieved: 5
  4.  
  5. Field 3 - Row 5: 908 W. Capital Way
  6. Field 1 - Row 2: Callahan
  7.  
  8. Last Name     First Name    Address                     City          Region
  9. ---------------------------------------------------------------------------------------------
  10. Buchanan      Steven        14 Garrett Hill             London        Null          
  11.  
  12. Callahan      Laura         4726 - 11th Ave. N.E.       Seattle       WA            
  13.  
  14. Davolio       Nancy         507 - 20th Ave. E., Apt. 2A Seattle       WA            
  15.  
  16. Dodsworth     Anne          7 Houndstooth Rd.           London        Null          
  17.  
  18. Fuller        Andrew        908 W. Capital Way          Tacoma        WA            
  19.  
  20. King          Robert        Edgeham Hollow, Winchester Way            London        Null          
  21.  
  22. Leverling     Janet         722 Moss Bay Blvd.          Kirkland      WA            
  23.  
  24. Peacock       Margaret      4110 Old Redmond Rd.        Redmond       WA            
  25.  
  26. Suyama        Michael       Coventry House, Miner Rd.   London        Null   



CopyFromRecordset : 


محتویات یک شئ ADO یا DAO Recordset را روی یک کاربرگ کپی می کند و از گوشه سمت چپ بالای محدوده مشخص شده آغاز می گردد . اگر شئ رکوردست حاوی فیلدهایی با اشیاء OLE در آنها باشد این روش با شکست مواجه خواهد شد.


For iCols = 0 to rs.Fields.Count - 1 
 ws.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name 
Next 
ws.Range(ws.Cells(1, 1), _ 
 ws.Cells(1, rs.Fields.Count)).Font.Bold = True 
ws.Range("A2").CopyFromRecordset rs























متد Recordset.GetRows



این متد چندین رکورد از یک رکوردست را بازیابی میکند

-شامل سه آرگومان است :

 Rows

Start

Fields

-در آرایه دوبعدی


بعلت اینکه متد GetRows همیشه تمام فیلدها در شئ رکوردست را برمی گرداند لذا می توانید کوئری ایجاد کنید تا فیلدهای مورد نیاز شما را باز گرداند.



arrEmployees=rstEmployees.GetRows(intRows)


داده ها در آرایه ای با نام arrEmployees ذخیره می شود ( دو بعدی )  البته بصورت موقت و بعد شما می توانید از طریق Loop مقادیر را چاپ کنید با توجه به اینکه آرایه دو بعدیست می توان x را برای ستون ها و y را برای ردیف ها در نظر گرفت مثل محور x و y در محور مختصات.


For x=0 To intRows-1

   For y=0 To 2

       Debug.Print arrEmployees(y,x) & " " ;

Next

Debug.Print vbrclf

Next