שימוש ב-GetRows

‏ • 15 בספטמבר, 2002



השיטה GetRows של אובייקט הרקורדסט משמשת להעתקת תוכנו של רקורדסט לתוך מערך דו-מימדי.
כאשר הרקורדסט מכיל הרבה רשומות, או שהמניפולציות על הרשומות כבודות מאוד, שימוש ב-GetRows מייעל מאוד את העבודה.
מעבר על רשומות הנמצאות בתאך מערך, הוא הרבה יותר מהיר מאשר מעבר על רקורדסט.

הגדרת השיטה



1
2
3  


variable= rs.GetRows([Rows],[Start],[Fields])


כל הפרמטרים הם אופציונאליים.

  • Rows – מספר השורות (רשומות) שיועתקו למערך. אם הוא לא מצויין, יועתקו כל הרשומות.
  • Start – מאיזו רשומה הרקורדסט תתחיל ההעתקה. ברירת המחדל היא מתחילת הרקורדסט.
  • Fields – משתנה המייצג את שם השדה או מספרו הסידורי, או מערך של שמות שדות או מספרים סידוריים. אם נשלח פרמטר זה, רק השדות המצויינים בו יועתקו למערך.

אופן השימוש

ראשית, נגדיר אובייקט חיבור ואובייקט רקורדסט



1
2
3
4
5
6  

<%
Dim conn, rs, arr, i
Set conn=Server.CreateObject("ADODB.Connection")
Set rs=Server.CreateObject("ADODB.Recordset")
%>


נפתח את החיבור לבסיס הנתונים



1
2
3
4  

<%
conn.Open "myDSN"
%>


נריץ את השאילתה כדי למלא את הרקורדסט



1
2
3
4  

<%
rs.Open "SELECT fld1, fld2, fld3 FROM tbl",conn
%>


נשתמש ב-GetRows כדי להעתיק את הנתונים למערך



1
2
3
4  

<%
arr = rs.GetRows
%>


נסגור את הרקורדסט ואת אובייקט החיבור. מכאן והלאה אין לנו בהם שום צורך, וסגירתם מייעלת את העבודה.



1
2
3
4
5
6
7  

<%
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
%>


נעבור על המערך ונדפיס את הנתונים



1
2
3
4
5
6
7
8  

<%
For i=0 to UBound(arr,2)
    Response.Write "First Column = " & arr(0,i) & "<br>"
    Response.Write "Second Column = " & arr(1,i) & "<br>"
    Response.Write "Third Column = " & arr(2,i) & "<br>"
Next
%>


לחיצה על
הקישור הזה
ייפתח דף בעל שתי מסגרות. בשתיהן מתבצעת הצגה של חלק מהקישורים בבסיס הנתונים של WebMaster.
הקוד במסגרת הימנית עובד בשיטה הרגילה של מעבר על רקורדסט, והשמאלית בשיטת GetRows.
עם סיום טעינת כל אחד מהעמודים, יוצג הזמן שלקח לעמוד להטען.

הקוד במלואו



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29  

<%
'variables declaration
Dim conn, rs, arr, i
Set conn =Server.CreateObject("ADODB.Connection")

Set rs =Server.CreateObject("ADODB.Recordset")

'opening the connection
conn.Open "myDSN"
'retrieving records
rs.Open "SELECT fld1, fld2, fld3 FROM tbl",conn
'insert data into the array
arr = rs.GetRows

'clean up
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing

'Now loop through the array
'(much faster than looping through a recordset)
'and display the contents of the array
For i=0 to UBound(arr,2)
    Response.Write "First Column = " & arr(0,i) & "<br>"
    Response.Write "Second Column = " & arr(1,i) & "<br>"
    Response.Write "Third Column = " & arr(2,i) & "<br>"
Next
%>


בהצלחה!

תגיות: , ,

תגובות בפייסבוק