ASP RecordSet Object & ADO : 5 שיעור www.doronamir.com MCSD DORON AMIR אובייקט ה Recordset -      שליפה ואחסון נתונים ממקור מידע . שאילתות שמחזירות נתונים מאוחסנות באמצעות אובייקט ה .Recordset- ה

Download Report

Transcript ASP RecordSet Object & ADO : 5 שיעור www.doronamir.com MCSD DORON AMIR אובייקט ה Recordset -      שליפה ואחסון נתונים ממקור מידע . שאילתות שמחזירות נתונים מאוחסנות באמצעות אובייקט ה .Recordset- ה

Slide 1

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 2

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 3

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 4

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 5

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 6

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 7

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 8

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 9

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 10

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 11

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 12

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 13

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 14

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR


Slide 15

ASP
RecordSet Object & ADO : 5 ‫שיעור‬

www.doronamir.com
MCSD DORON AMIR

‫אובייקט ה‪Recordset -‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬

‫שליפה ואחסון נתונים ממקור מידע‪.‬‬
‫שאילתות שמחזירות נתונים מאוחסנות באמצעות‬
‫אובייקט ה‪.Recordset-‬‬
‫ה‪ Recordset -‬מייצג בזיכרון את הנתונים שנשלפו‬
‫בשאילתה שבוצעה‪.‬‬
‫‪ Recordset‬בנוי כטבלה המכילה שורות ועמודות‪.‬‬
‫שורות ועמודות אלה נקראות ‪ Rows‬ו‪Columns-‬‬
‫בהתאמה או ‪ Records‬ו‪ Fields-‬בהתאמה‪.‬‬

Recordset
‫ מתבצעת עבורנו באופן אוטומטי‬Recordset-‫ יצירת ה‬
.‫כתוצאה משאילתה שמחזירה נתונים‬
SQL ‫ משפט‬,‫ שאילתה זו יכולה להיות שם טבלה‬
‫ במסד‬Stored Procedure ‫) או שם של‬Select(
.‫הנתונים‬
‫ כאשר נרצה להשתמש בנתונים שחוזרים מהשאילתה‬
:Set-‫ נשתמש במשפט ה‬Recordset ‫ליצירת‬

Set objRdst = objCon.Execute )“operation”(
Set objRdst = objCon.Execute )“Customers”(

: ‫שליפת טבלה‬

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.Open “ordersdsn”
SQL ‫משפט‬
Set objRdst = objCon.Execute )“SELECT FirstName, LastName, ID,
Amount FROM Customers”(

CreateObject RecordSet
‫ גם באופן ישיר ללא שימוש‬Recordset-‫ ניתן לייצר את ה‬
.‫ מפורש‬Connection ‫באובייקט‬
.‫ באופן אוטומטי‬Connection ‫ ייצר‬ADO ‫ במקרה זה‬
.Recordset-‫ של אובייקט ה‬Open-‫ נשתמש בפעולת ה‬
-‫ את האובייקט נייצר באופן מפורש ע"י פעולת ה‬
:CreateObject
Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

Source, ActiveConnection,
CursorType, LockType, Options
Source
.Stored Procedure ‫ שם טבלה או‬,SQL ‫ משפט‬:‫מייצג שאילתה‬
ActiveConnection
.Connection ‫מייצג אובייקט מסוג‬
CutsorType
‫ ישתמש בו לשליפת הנתונים ואחסונם‬ADO-‫ ש‬Cursor -‫מציין את סוג ה‬
.‫בזיכרון‬
LockType
.‫מציין את הנעילה שתבוצע מול מקור המידע‬
Options
)Stored Procedure ,‫ שם טבלה‬,SQL ‫מציין את סוג השאילתה (משפט‬









Set objRdst = Server.CreateObject )“ADODB.Recordset”(
ObjRdst.Open Source, ActiveConnection, CursorType, LockType, Options

‫‪Options‬‬
‫‪ ‬ציון פרמטר ה‪ Options-‬משמש לשיפור ביצועים‬
‫תיאור‬

‫ערך‬

‫סוג שליפה שאינו ידוע מראש‬

‫‪( – adCmdUnknown 0‬ברירת מחדל)‬

‫פקודה כתובה למקור המידע‪.‬‬
‫ברוב המקרים כאשר אנחנו עובדים מול מסד נתונים‪,‬‬
‫משמעו משפט ‪.SQL‬‬

‫‪– adCmdText 1‬‬

‫שליפת טבלה שלמה‬

‫‪– adCmdTable 2‬‬

‫‪ Stored Procedure‬או שאילתה מוכנה במסד הנתונים‬

‫‪– adCmdStoredProc 4‬‬

‫‪LockType‬‬
‫‪ ‬פרמטר ה‪ LockType-‬מגדיר את סוג הנעילה שביצע ‪ADO‬‬
‫מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי נעילה שכאלה‪:‬‬
‫תיאור נעילה (למול משתמש אחר)‬

‫סוג נעילה‬

‫קריאה בלבד ללא יכולת עדכון נתונים‪.‬‬

‫‪AdLockReadOnly - 1‬‬

‫פסימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬מייד עם תחילת‬
‫עדכונם‪.‬‬

‫‪– adLockPessimistic 2‬‬

‫אופטימיסטי‪.‬‬
‫נעילה של ‪ Record‬אחרי ‪ Record‬רק לאחר‬
‫שנפעיל את פעולת ה‪ Update-‬על ה‪-‬‬
‫‪.Recordset‬‬

‫‪– adLockOptimistic 3‬‬

‫אצווה אופטימסטית‬
‫משמש במצבי ביצוע אצווה‪.‬‬

‫‪– adLockBatchOptimistic 4‬‬

‫‪CutsorType‬‬
‫‪ ‬פרמטר ה‪ CutsorType -‬מאפשר לנו לקבוע באיזה סמן‬
‫שליפה ישתמש ‪ ADO‬מול מקור המידע‪.‬‬
‫‪ ‬קיימים ארבעה סוגי סמנים‪:‬‬
‫פירוט תכונות‬

‫ערך פרמטר‬

‫סוג ‪Cursor‬‬

‫‪Dynamic Cursor‬‬

‫מאפשר עדכון מלא‪ ,‬תנועה קדימה ולאחור בטבלה‪,‬‬
‫כל העדכונים שמבוצעים במקביל ע"י‬
‫משתמשים אחרים חשופים בזמן אמת‪.‬‬

‫‪AdOpenDynamic‬‬

‫זהה ל‪ Dynamic-‬אלא שאינו חושף שינויים‬
‫ועדכונים שנעשים ע"י משתמשים אחרים בזמן‬
‫אמת‪.‬‬

‫‪AdOpenKeyset‬‬

‫‪Keyset Cursor‬‬

‫אינו מאפשר עדכון נתונים‪ .‬יעיל בעיקר לקריאת‬
‫מצב‪ .‬מאפשר תנועה קדימה ולאחור בטבלה‪,‬‬
‫אינו חושף שינויים שנעשים ע"י משתמשים‬
‫אחרים‬

‫‪AdOpenStatic‬‬

‫‪Static Cursor‬‬

‫זהה ל‪ Static -‬אך אינו מאפשר תנועה אחורה‬
‫בטבלה‪ .‬מספק את זמן התגובה הטוב ביותר‬
‫לקריאה‪.‬‬

‫ברירת מחדל‬
‫‪adOpenForwardOnly‬‬

‫‪Forward-Only‬‬

‫דוגמא מסכמת‬

:Customers-‫ ושולפת ממנו את טבלת ה‬Orders ‫ התוכנית פותחת מסד נתונים שנקרא‬.
Set objRdst = Server.CreateObject ("ADODB.Recordset")
ObjRdst.Open “Select * From Customers”, “ordersdsn”, adOpenForwardOnly,
AdLockReadOnly,adCmdTable
objRdst.Close
Set objRdst = Nothing

‫שימוש ב‪Recordset -‬‬
‫‪ ‬אנו יכולים לבצע מגוון של פעולות על הנתונים‬
‫‪ ‬אובייקט ה‪ Recordset-‬הוא ייצוג בזיכרון של‬
‫הנתונים שנשלפו‪.‬‬
‫‪ ‬הנתונים מופיעים בצורת טבלה‪.‬‬
‫‪ ‬אנו יכולים לנווט קדימה ואחורה בטבלת המידע‪,‬‬
‫לעדכן ולהוסיף ערכים‪ ,‬למחוק שורות ועוד מספר‬
‫רב של פעולות כגון אלה‪.‬‬

‫פעולת ‪Move‬‬
‫‪ ‬פעולת ‪ - Move‬תנועה באובייקט ה‪.Recordset-‬‬
‫‪ ‬על מנת לנוע בתוך טבלת המידע נשתמש בפעולת ה‪-‬‬
‫‪.Move‬‬
‫‪ Move ‬יקבל פרמטר מספרי בודד שמגדיר את מספר‬
‫הצעדים אליו יוזז סמן ה‪.Recordset-‬‬
‫‪ ‬נשים לב כי המיקום הנו יחסי למיקום האחרון של הסמן‪:‬‬
‫‪objRdst.Move 20‬‬
‫חשוב לזכור כי אופי התזוזה שניתן לבצע‪ ,‬תלוי בסוג השליפה שביצענו‪.‬‬
‫‪Cursor‬מסוג‬
‫לא נוכל לזוז אחורה (להציב ערך מספרי שלילי )‪Forward-Only (adOpenForwardOnly‬‬
‫‪MoveFirst, MoveLast, MoveNext, MovePrevious‬‬

‫‪AbsolutePosition‬‬
‫‪ ‬מידע על מיקומנו הנוכחי ‪AbsolutePosition -‬‬
‫‪ ‬כאשר נרצה לדעת מה מיקומנו הנוכחי ביחס לתחילת‬
‫הטבלה‬
‫‪ ‬המספר שיוחזר יהיה מספר שלם שיציין את מיקומו‬
‫הנוכחי של הסמן ביחס ל‪ Record-‬הראשון בטבלת‬
‫המידע‪:‬‬

‫‪lngX = objRdst.AbsolutePosition‬‬

‫משמעות‬

‫ערך (‪ +‬שם קבוע)‬

‫הטבלה ריקה‪.‬‬

‫‪adPosUnkown : -1‬‬

‫גלישה בתחילת הטבלה‪.‬‬

‫‪adPosBOF : -2‬‬

‫גלישה בסוף הטבלה‪.‬‬

‫‪adPosEOF : -3‬‬

EOF-‫ ו‬BOF-‫שימוש ב‬
)Beginning of File( BOF 
.)End of File( EOF 
blnFlag = objRdst.EOF
blnFlag = objRdst.BOF

‫דוגמא מסכמת – תנועה בטבלה‬
.‫התוכנית הבאה תדגים כיצד ניתן לבצע תנועה מתחילת טבלת המידע ועד סופה‬

1.
2.
3.

Set objCon = Server.CreateObject ("ADODB.Connection")
ObjCon.open "ordersdsn”
Set objRdst = objCon.Execute )“Customers”(
ObjRdst.MoveFirst

4.
5.
6.

Do Until objRdst.EOF
ObjRdst.MoveNext
Loop

ASP
RecordSet Object & ADO : 5‫שיעור‬

www.doronamir.com
MCSD DORON AMIR