اليوم دعونا نتحدث عن بعض أساليب كائن Recordset.
1. يقوم الأسلوب AddNew بإنشاء سجلات جديدة يمكنها تحديث كائن Recordset.
Recordset.AddNew FieldList، Values
قائمة الحقول اختيارية. اسم واحد، أو مجموعة من الأسماء، أو الموضع الترتيبي للحقل في السجل الجديد.
القيم اختيارية. مفردة أو مجموعة من القيم لحقل في السجل الجديد. إذا كانت الحقول عبارة عن مصفوفة، فيجب أن تكون القيم أيضًا مصفوفة بنفس عدد الأعضاء، وإلا سيحدث خطأ. يجب أن يتطابق ترتيب أسماء الحقول مع ترتيب قيم الحقول في كل صفيف.
نحن عادة
rs.addnew
rs("xx")=xx
rs("xx")=xx
rs.update
لاحظ أنه في وضع التحديث الفوري (يقوم الموفر بكتابة التغييرات على مصدر البيانات الأساسي فورًا عند استدعاء أسلوب التحديث)، يؤدي استدعاء الأسلوب AddNew بدون معلمات إلى تعيين خاصية EditMode إلى adEditAdd. يقوم الموفر بتخزين أي تغييرات على قيم الحقول محليًا. قم باستدعاء أسلوب التحديث لتمرير السجل الجديد إلى قاعدة البيانات وإعادة تعيين خاصية EditMode إلى adEditNone. إذا تم تمرير معلمات الحقول والقيم، فسيقوم ADO بتمرير السجل الجديد على الفور إلى قاعدة البيانات (دون استدعاء التحديث)، ولا تتغير قيمة خاصية EditMode (adEditNone).
قد تسأل ما الفرق بين استخدام أسلوب AddNew الخاص بـ ADO في ASP واستخدام عبارة "إدراج في..." مباشرةً؟ أي طريقة هي الأفضل؟ الإجابة: تقوم طريقة AddNew الخاصة بـ ADO بتغليف عبارة "إدراج في" فقط، لذلك، عند التشغيل على كمية كبيرة من البيانات، سيؤدي استخدام عبارات SQL مباشرةً إلى تسريع الوصول إلى البيانات بشكل كبير لأنها تقلل من وقت "ترجمة" ADO.
2. طريقة الحذف تحذف السجل الحالي أو مجموعة السجلات.
Recordset.Delete AffectRecords
AffectRecords AffectEnum تحدد قيمة عدد السجلات المتأثرة بأسلوب الحذف. يمكن أن تكون هذه القيمة أحد الثوابت التالية.
AdAffectCurrent الافتراضي. حذف السجل الحالي فقط.
يقوم AdAffectGroup بحذف السجلات التي تتوافق مع إعداد خاصية التصفية الحالي. لاستخدام هذا الخيار، يجب تعيين خاصية التصفية على أحد الثوابت الصالحة المحددة مسبقًا.
يقوم adAffectAll بحذف كافة السجلات.
adAffectAllChapters حذف كافة سجلات المجموعة الفرعية.
سيؤدي استخدام وضع التحديث الفوري إلى الحذف الفوري في قاعدة البيانات، وإلا سيتم وضع علامة على السجل للحذف من ذاكرة التخزين المؤقت وسيتم الحذف الفعلي عند استدعاء أسلوب التحديث.
3. يقوم أسلوب التحديث بحفظ كافة التغييرات التي تم إجراؤها على السجل الحالي لكائن Recordset.
مجموعة السجلات. تحديث الحقول والقيم
الحقول اختيارية. النوع المتغير، الذي يمثل اسمًا واحدًا أو صفيف النوع المتغير، الذي يمثل الاسم وموضع الرقم التسلسلي للحقل (واحد أو أكثر) الذي يحتاج إلى تعديل.
القيم اختيارية. النوع المتغير، الذي يمثل قيمة واحدة؛ أو صفيف النوع المتغير، الذي يمثل قيم الحقل (مفردة أو متعددة) في السجل الجديد.
إذا كنت ترغب في إلغاء أية تغييرات تم إجراؤها على السجل الحالي أو تجاهل السجلات المضافة حديثًا، فيجب عليك استدعاء الأسلوب CancelUpdate.
4. إلغاء طريقة التحديث
Recordset.CancelUpdate
استخدم أسلوب CancelUpdate لإلغاء أي تغييرات على السجل الحالي أو تجاهل السجلات المضافة حديثًا. لا يمكن التراجع عن التغييرات التي تم إجراؤها على السجل الحالي أو السجلات الجديدة بعد استدعاء أسلوب التحديث. إذا تمت إضافة سجل جديد عند استدعاء أسلوب CancelUpdate، فسيصبح السجل الحالي قبل استدعاء AddNew هو السجل الحالي مرة أخرى. إذا لم يتم تغيير السجل الحالي أو تمت إضافة سجل جديد، فإن استدعاء الأسلوب CancelUpdate سيؤدي إلى حدوث خطأ.
5. تقوم طريقة البحث بالبحث في مجموعة السجلات عن السجلات التي تفي بالمعايير المحددة. إذا تم استيفاء المعايير، فسيتم تعيين موضع مجموعة السجلات في السجل الذي تم العثور عليه، وإلا فسيتم تعيين الموضع في نهاية مجموعة السجلات.
البحث عن (المعايير، SkipRows، searchDirection، Start)
المعايير سلسلة تحتوي على عبارات تحدد أسماء الأعمدة وعوامل المقارنة وقيم البحث.
SkipRows قيمة عددية طويلة اختيارية، قيمتها الافتراضية هي صفر، والتي تحدد إزاحة الصف الحالي أو بدء الإشارة المرجعية لبدء البحث.
قيمة searchDirection الاختيارية SearchDirectionEnum التي تحدد ما إذا كان يجب أن يبدأ البحث في الصف الحالي أو الصف الصالح التالي. يمكن أن تكون قيمته adSearchForward أو
adSearchBackward. يتم تحديد ما إذا كان البحث سينتهي في بداية مجموعة السجلات أو نهايتها من خلال قيمة searchDirection.
بداية اختيارية، إشارة مرجعية مختلفة، تستخدم كموضع بداية للبحث.
يمكن أن تكون معايير "عامل المقارنة" ">" (أكبر من)، و"<" (أقل من)، و"= (يساوي)، و">=" (أكبر من أو يساوي)، و"<=" (أقل من) أو يساوي)، " <>"
(لا يساوي) أو "أعجبني" (مطابقة النمط). يمكن أن تكون القيم الموجودة في المعايير عبارة عن سلاسل أو أرقام الفاصلة العائمة أو التواريخ. يتم تحديد قيم السلسلة بعلامات اقتباس مفردة (على سبيل المثال، "state = 'WA'").
يتم تحديد قيم التاريخ بواسطة "#" (رموز رقمية) (على سبيل المثال، "start_date > #7/22/97#").
تجدر الإشارة إلى أن البحث لا يدعم الحقول المتعددة. ولكن يمكن تحقيق ذلك باستخدام المرشحات. "name='abc'"AND"city='sh'" غير مسموح بها
6. تعمل طريقة النقل على نقل موضع السجل الحالي في كائن Recordset
Recordset.Move NumRecords، ابدأ
NumRecords تعبير عدد صحيح طويل مُوقع يحدد عدد السجلات المطلوب نقلها من موضع السجل الحالي.
ابدأ بنوع اختياري أو سلسلة أو متغير يستخدم لحساب الإشارات المرجعية. يمكن أيضًا أن تكون إحدى القيم التالية:
AdBookmark الافتراضي الحالي. البدء من السجل الحالي.
يبدأ AdBookmarkFirst بالسجل الأول.
يبدأ AdBookmarkLast من السجل الأخير.
الأشياء التي يجب ملاحظتها هي:
(1) إذا كانت المعلمة NumRecords أكبر من الصفر، فسيتحرك موضع السجل الحالي للأمام (باتجاه نهاية مجموعة السجلات). إذا كانت قيمة NumRecords أقل من الصفر، فسيتم نقل موضع السجل الحالي إلى الخلف (باتجاه بداية مجموعة السجلات).
(2) سيؤدي استدعاء أسلوب النقل من كائن مجموعة السجلات الفارغ إلى حدوث خطأ.
(3) إذا نقل استدعاء النقل موضع السجل الحالي إلى ما قبل السجل الأول، فسوف يقوم ADO بوضع السجل الحالي قبل السجل الأول لمجموعة السجلات (BOF صحيح). ستؤدي محاولة التحرك للخلف عندما تكون خاصية BOF صحيحة بالفعل إلى حدوث خطأ؛ إذا قام استدعاء النقل بنقل موضع السجل الحالي بعد السجل الخلفي، فإن ADO يضع السجل الحالي بعد السجل الخلفي لمجموعة السجلات (EOF صحيح). ستؤدي محاولة المضي قدمًا عندما تكون سمة EOF صحيحة بالفعل إلى حدوث خطأ.
7. تنتقل أساليب MoveFirst وMoveLast وMoveNext وMovePrevious إلى السجل الأول أو الأخير أو التالي أو السابق في كائن Recordset المحدد وتجعل السجل هو السجل الحالي.
مجموعة السجلات.{MoveFirst |.MoveLast |.MoveNext |.
الأشياء التي يجب ملاحظتها هي:
(1) استخدم أسلوب MoveNext لتحريك السجل الحالي للأمام بمقدار سجل واحد (باتجاه الجزء السفلي من مجموعة السجلات). إذا كان السجل الأخير هو السجل الحالي وتم استدعاء الأسلوب MoveNext، يقوم ADO بتعيين السجل الحالي بعد السجل الخلفي لمجموعة السجلات (EOF صحيح). ستؤدي محاولة المضي قدمًا عندما تكون سمة EOF صحيحة بالفعل إلى حدوث خطأ.
(2) استخدم الأسلوب MovePrevious لتحريك موضع السجل الحالي للخلف بمقدار سجل واحد (باتجاه الجزء العلوي من مجموعة السجلات). يجب أن يدعم كائن Recordset حركة المؤشر للخلف، وإلا فسيؤدي استدعاء الأسلوب إلى إنشاء خطأ. إذا كان السجل الأول هو السجل الحالي وتم استدعاء الأسلوب MovePrevious، يقوم ADO بتعيين السجل الحالي قبل السجل الأول لمجموعة السجلات (BOF صحيح). عندما تكون سمة BOF صحيحة، سيؤدي التحرك للخلف إلى حدوث خطأ.
8. يقوم أسلوب الاستنساخ بإنشاء كائن Recordset مكرر مماثل لكائن Recordset الموجود. اختياريًا، حدد أن النسخة المتماثلة للقراءة فقط.
قم بتعيين rstDuplicate = rstOriginal.Clone
متغير الكائن rstDuplicate الذي يحدد كائن Recordset المكرر الذي يتم إنشاؤه.
يحدد متغير الكائن rstOriginal كائن Recordset المراد نسخه.
استخدم أسلوب Clone لإنشاء نسخ متعددة من كائن Recordset، وهو أمر مفيد إذا كنت تريد الاحتفاظ بالعديد من السجلات الحالية في مجموعة سجلات معينة. يعد استخدام أسلوب Clone أكثر فعالية من إنشاء كائن Recordset جديد وفتحه بنفس التعريف مثل التعريف الأولي.
وهذا يعني
rs.open إكسيك، كون، 1،1
rs2.open إكسيك، كون، 1،1
وينبغي إعادة كتابتها مثل هذا
rs.open إكسيك، كون، 1،1
rs2=rs.clone
وتجدر الإشارة إلى أن:
(1) سيتم تعيين السجل الحالي للنسخة المنشأة حديثًا كالسجل الأول.
(2) لا يؤدي إغلاق مجموعة السجلات الأصلية إلى إغلاق نسختها، ولن يؤدي إغلاق النسخة إلى إغلاق مجموعة السجلات الأصلية أو أي نسخة أخرى.
9. تقوم طريقة الإغلاق بإغلاق الكائن المفتوح وأي كائنات ذات صلة.
كائن. إغلاق
الأشياء التي يجب ملاحظتها هي:
(1) استخدم الأسلوب Close لإغلاق كائن Recordset لتحرير كافة موارد النظام المرتبطة. لا يؤدي إغلاق الكائن إلى حذفه من الذاكرة؛ يمكنك تغيير إعدادات خصائصه وفتحه
مرة أخرى لاحقًا. لإزالة الكائن بالكامل من الذاكرة، قم بتعيين متغير الكائن إلى لا شيء.
(2) إذا كنت تقوم بالتحرير في وضع التحديث الفوري، فإن استدعاء الأسلوب Close سيؤدي إلى حدوث خطأ، ويجب عليك أولاً استدعاء الأسلوب Update أو CancelUpdate.
10. الطريقة المفتوحة، لماذا نقول هذا أخيرًا، نظرًا لأن طرق السمات السابقة غير واضحة، فلن نفهم معلمة CursorType.
Recordset.Open Source، ActiveConnection، CursorType، LockType، Options
يمكن لكائنات مجموعة السجلات الاتصال بكائنات الأوامر من خلال خاصية المصدر. يمكن أن تكون المعلمة المصدر اسم كائن أمر أو أمر SQL أو اسم جدول بيانات محدد أو إجراء مخزن. إذا تم حذف هذه المعلمة، يستخدم النظام الخاصية المصدر لكائن Recordset.
ActiveConnection
الاتصال بكائنات الاتصال من خلال خاصية ActiveConnection. يمكن أن يكون ActiveConnection هنا كائن اتصال أو سلسلة من معلمات السلسلة التي تحتوي على معلومات اتصال
قاعدة البيانات
(ConnectionString).CursorType
تشير المعلمة CursorType للأسلوب Open لكائن Recordset إلى نوع المؤشر الذي ستبدأ به البيانات، بما في ذلك adOpenForwardOnly وadOpenKeyset وadOpenDynamic وad
OpenStatic، والتي تم وصفها على النحو التالي:
---------- ------- ------------------------------------------- -----
وصف
القيمة الثابتة الثابتة-
-------------------------------------------------- ----------
adOpenForwardOnly 0 القيمة الافتراضية، تبدأ المؤشر الذي يمكنه التحرك للأمام فقط (للأمام فقط).
يبدأ adOpenKeyset 1 مؤشر نوع Keyset.
يقوم adOpenDynamic 2 بتشغيل مؤشر النوع الديناميكي.
يقوم adOpenStatic 3 بتشغيل مؤشر من النوع الثابت.
-------------------------------------------------- -----------
ستؤثر أنواع المؤشرات المذكورة أعلاه بشكل مباشر على كافة خصائص وأساليب كائن Recordset. توضح القائمة التالية الاختلافات بينها.
خصائص مجموعة السجلات adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
المطلق غير مدعوم غير مدعوم قابل للقراءة والكتابة
مطلق الموقف غير مدعوم قابل للقراءة والكتابة قابل للقراءة والكتابة
BOF للقراءة فقط للقراءة فقط للقراءة فقط
نوع المؤشر للقراءة والكتابة للقراءة والكتابة للقراءة والكتابة
EOF للقراءة فقط للقراءة -للقراءة فقط
تصفية القراءة والكتابة القراءة والكتابة القراءة والكتابة القراءة والكتابة
LockType القراءة والكتابة القراءة والكتابة القراءة والكتابة القراءة والكتابة
عدد الصفحات غير مدعوم غير مدعوم القراءة فقط
حجم الصفحة القراءة والكتابة القراءة والكتابة القراءة والكتابة القراءة كتابة
عدد السجلات غير مدعوم غير معتمد للقراءة فقط للقراءة فقط
AddNew مدعوم مدعوم معتمد
CancelBatch مدعوم مدعوم مدعوم مدعوم
إلغاء
التحديثمدعوم مدعوم مدعوم مدعوم
مدعوم
نقل غير مدعوم مدعوم المدعومة المدعومة المدعومة
MoveFirst المدعومة المدعومة المدعومة المدعومة المدعومة
MoveLast غير مدعومة المدعومة المدعومة الدعم
MoveNext الدعم الدعم الدعم الدعم الدعم
MovePrevious لا يدعم الدعم الدعم الدعم الدعم
المفتوح الدعم الدعم الدعم
التحديث الدعم الدعم الدعم الدعم
UpdateBatch الدعم الدعم الدعم
------ ---------------------- ---------------------------- ---------
تشير معلمة LockType للأسلوب Open لكائن Recordset إلى نوع القفل. إذا تم حذف هذه المعلمة، فسيستخدم النظام خاصية LockType لكائن Recordset كقيمة افتراضية. تتضمن معلمات LockType adLockReadOnly، وadLockPrssimistic، وadLockOptimistic، وadLockBatchOptimistic، وما إلى ذلك، والتي تم وصفها على النحو التالي:
وصف القيمة الثابتة
--------------------------- ------ --------------------------------
adLockReadOnly 1 القيمة الافتراضية، يبدأ كائن مجموعة السجلات في القراءة - الوضع فقط ولا يمكن تشغيل أساليب AddNew وUpdate وDelete
adLockPrssimistic 2 عندما يتم تحديث مصدر البيانات، سيقوم النظام بقفل إجراءات المستخدمين الآخرين مؤقتًا للحفاظ على تناسق البيانات.
adLockOptimistic 3 عندما يتم تحديث مصدر البيانات، لن يقوم النظام بقفل إجراءات المستخدمين الآخرين، ويمكن للمستخدمين الآخرين إضافة البيانات وحذفها وتعديلها.
adLockBatchOptimistic 4 عندما يتم تحديث مصدر البيانات، يجب على المستخدمين الآخرين تغيير سمة CursorLocation إلى adUdeClientBatch لإضافة البيانات أو حذفها أو تعديلها.
الأشياء التي يجب ملاحظتها هي:
إذا لم يُرجع مصدر البيانات أي سجلات، فسيقوم الموفر بتعيين خصائص BOF وEOF على True ولا يحدد موضع السجل الحالي. إذا كان نوع المؤشر يسمح بذلك، فلا يزال من الممكن إضافة بيانات جديدة إلى كائن Recordset الفارغ.