تحليل getrows واستخدام getstring لكائنات مجموعة السجلات في asp. يمكن للأصدقاء الذين يحتاجون إليها الرجوع إلى طريقة GetRows.
نسخ سجلات متعددة لكائن Recordset إلى صفيف.
قواعد اللغة
انسخ رمز الكود كما يلي:
المصفوفة = Recordset.GetRows (الصفوف، البداية، الحقول)
قيمة الإرجاع
إرجاع مصفوفة ثنائية الأبعاد.
المعلمة
الصفوف تعبير طويل اختياري يحدد عدد السجلات المطلوب استرجاعها. القيمة الافتراضية هي adGetRowsRest (-1).
بدء اختياري، سلسلة أو طويلة، يحسب الإشارة المرجعية للسجل في بداية عملية GetRows. يمكن أيضًا استخدام قيم BookmarkEnum التالية.
وصف ثابت
يبدأ AdBookmarkCurrent بالسجل الحالي.
يبدأ AdBookmarkFirst بالسجل الأول.
يبدأ AdBookmarkLast من السجل الأخير.
الحقول اختيارية، من النوع المتغير، تمثل اسم حقل واحد، أو موضع تسلسلي، أو مجموعة من أسماء الحقول، أو رقم موضع تسلسلي. يقوم ADO بإرجاع البيانات من هذه الحقول فقط.
يوضح
استخدم أسلوب GetRows لنسخ السجلات من مجموعة السجلات إلى صفيف ثنائي الأبعاد. يحدد الحرف الأول الحقل، بينما يحدد الحرف الثاني رقم السجل. سيتم ضبط متغير الصفيف تلقائيًا على الحجم الصحيح عندما تقوم طريقة GetRows بإرجاع البيانات.
إذا لم تقم بتحديد قيمة لمعلمة الصفوف، فسيقوم الأسلوب GetRows تلقائيًا باسترداد كافة السجلات في كائن Recordset. إذا تم طلب سجلات أكثر من المتوفرة، تقوم GetRows بإرجاع عدد السجلات المتوفرة فقط.
إذا كان كائن Recordset يدعم الإشارات المرجعية، فيمكنك تحديد السجل الذي سيبدأ منه أسلوب GetRows في استرداد البيانات عن طريق تمرير قيمة خاصية الإشارة المرجعية للسجل.
لتحديد الحقول التي يتم إرجاعها بواسطة استدعاء GetRows، يمكنك تمرير اسم/رقم حقل واحد أو صفيف من أسماء/أرقام الحقول في معلمة الحقول.
بعد استدعاء GetRows، يصبح السجل غير المقروء التالي هو السجل الحالي، أو إذا لم يكن هناك المزيد من السجلات، يتم تعيين خاصية EOF إلى True.
طريقة GetString
عند الاستعلام عن قاعدة البيانات لعرض الجداول، غالبًا ما نستخدم Do while()...Loop أو For...Next الحلقة لعرض الجداول، لذلك عندما نريد الاستعلام عن كمية كبيرة من البيانات، سيكون الأمر أبطأ حتمًا. في هذا الوقت، يمكننا استخدام طريقة GetString () التي يوفرها كائن مجموعة السجلات (يجب ترقية ADO إلى 2.0).
قواعد اللغة
انسخ رمز الكود كما يلي:
Str=objRecordset.GetString(format,n,coldel,rowdel,nullexpr)
وصف المعلمة:
objRecordset: كائن مجموعة السجلات المفتوحة؛
التنسيق: اختياري، وعادةً ما يأخذ القيمة الافتراضية (القيمة الافتراضية هي 2)
n: اختياري، عدد السجلات المراد عرضها، والقيمة الافتراضية هي عرض الكل
كولدل: اختياري، محدد العمود
Rowdel: اختياري، محدد الصف
nullexpr: اختياري، يتم استخدام هذه المعلمة لملء الحقول الفارغة!
باستخدام أسلوب GetString، يمكننا استخدام Response.Write واحد فقط لعرض كافة المخرجات، وهو يشبه حلقة DO... LOOP التي يمكنها تحديد ما إذا كانت مجموعة السجلات هي EOF.
باستخدام هذه الطريقة، يمكنك إخراج السلاسل تلقائيًا في حلقة، دون الحاجة إلى المرور عبر حلقات while أو for طالما تم إنشاء كائن RS ويتم تنفيذ العمليات المقابلة، سواء كانت تقوم بإرجاع سجل واحد أو أكثر، أو حتى فارغة السجلات، getstring العمل كالمعتاد.
لإنشاء جدول HTML من نتائج مجموعة السجلات، نحتاج فقط إلى الاهتمام بثلاثة من المعلمات الخمسة لـ GetString: Coldel (رمز HTML الذي يفصل أعمدة مجموعة السجلات)، وrowdel (رمز HTML الذي يفصل بين صفوف مجموعة السجلات) مجموعة السجلات)، وnullexpr (رمز HTML الذي يجب إنشاؤه عندما يكون السجل الحالي فارغًا).
انسخ رمز الكود كما يلي:
<حدود الجدول=1>
<TR><TD>
<% = Response.Write rs.GetString( , , </TD><TD>, </TD></TR><TR>, ) %>
</الجدول>
نتيجة HTML المكتوبة بهذه الطريقة هي كما يلي:
انسخ رمز الكود كما يلي:
<حدود الجدول=1>
<TR>
<TD>صف 1، قيمة الحقل 1 </TD>
<TD>صف 1، قيمة الحقل 2</TD>
</TR>
<TR>
<TD>صف 2، قيمة الحقل 1 </TD>
<TD>صف 2، قيمة الحقل 2 </TD>
</TR>
</الجدول>
يوجد خطأ هنا، فلننظر إلى إنشاء القائمة المنسدلة:
انسخ رمز الكود كما يلي:
<%
تعيين RS = conn.Execute (حدد القيمة، النص من تحديد خيارات الجدول أو ترتيب حسب النص)
optSuffix = </OPTION> & vbNewLine
valPrefix = <قيمة الخيار='
valSuffix = '>
opts = RS.GetString( , , valSuffix, optSuffix & valPrefix, --error-- )
'السطر التالي هو المفتاح لذلك!
opts = Left( opts, Len(opts)-Len(valPrefix))
الاستجابة.اكتب <اختر...> وvbNewLine
الاستجابة.اكتب valPrefix & opts
الاستجابة.اكتب </حدد>
%>
إذا كنت تريد إنشاء جدول صحيح وحل الخطأ، فما عليك سوى القيام بذلك:
انسخ رمز الكود كما يلي:
<%
تعيين RS = conn.Execute (اختر * من الجدول)
tdSuffix = </TD> & vbNewLine & <TD>
trPrefix = <TR> & vbNewLine & <TD>
trSuffix = </TD> & vbNewLine & </TR> & vbNewLine & <TR> & vbNewLine
opts = RS.GetString( , , tdSuffix, trSuffix & trPrefix, --error-- )
'السطر التالي هو المفتاح لذلك!
opts = Left( opts, Len(opts)-Len(trPrefix))
Response.Write <TABLE Border=1 CellPadding=5> & vbNewLine
الاستجابة.اكتب trPrefix ويختار
الاستجابة.اكتب </TABLE> وvbNewLine
%>
دعونا نقدم نهجا مختلفا تماما:
انسخ رمز الكود كما يلي:
<%
SQL = حدد '<OPTION Value='''،value،'''>'،text،'</OPTION>' من الجدول أو ترتيب حسب النص
تعيين RS = conn.Execute(SQL)
Response.Write <Select> & vbNewLine & RS.GetString(,,,vbNewLine) & </Select>
%>
هل سبق لك استخدامه؟ . .
هل رأيت ذلك؟ يمكن إرجاع النتائج مباشرة من الاستعلام.
بالذهاب خطوة أخرى إلى الأمام، يمكنك القيام بذلك:
انسخ رمز الكود كما يلي:
<%
SQL = حدد '<OPTION Value=''' & value & '''>' & text & '</OPTION>' من الجدول أو الترتيب حسب النص
تعيين RS = conn.Execute(SQL)
Response.Write <Select> & vbNewLine & RS.GetString(,,,vbNewLine) & </Select>
%>
هنا مثال كامل:
إخراج البرنامج النصي:
711855 الأربعاء 23 23/03/2005 1:33:37 ص
711856 الأربعاء 23 23/03/2005 01:23:00 ص
711857 الأربعاء 23 23/03/2005 1:26:34 ص
711858 الأربعاء 23 23/03/2005 01:33:53 ص
711859 الأربعاء 23 23/03/2005 1:30:36 ص
رمز ASP الكامل هو كما يلي:
انسخ رمز الكود كما يلي:
<%
'الثوابت المختارة من adovbs.inc:
كونست adClipString = 2
' أعلن عن متغيراتنا... دائمًا ممارسة جيدة!
خافت cnnGetString اتصال ADO
خافت rstGetString 'مجموعة سجلات ADO
Dim strDBPath ' المسار إلى ملف Access DB (*.mdb).
سلسلة Dim strDBData التي نقوم بتفريغ جميع البيانات فيها
Dim strDBDataTable ' السلسلة التي نقوم بتفريغ جميع البيانات فيها
'فقط هذه المرة نبني طاولة
MapPath إلى المسار الفعلي لملف mdb الخاص بنا.
strDBPath = Server.MapPath(db_scratch.mdb)
"إنشاء اتصال باستخدام OLE DB."
تعيين cnnGetString = Server.CreateObject(ADODB.Connection)
"هذا السطر مخصص لقاعدة بيانات Access النموذجية:
'cnnGetString.Open Provider=Microsoft.Jet.OLEDB.4.0;مصدر البيانات= & strDBPath & ;
"نحن في الواقع نستخدم SQL Server لذا نستخدم هذا السطر بدلاً من ذلك.
قم بالتعليق على هذا السطر وإلغاء التعليق على Access الموجود أعلاه
العب مع البرنامج النصي على الخادم الخاص بك.
cnnGetString.Open Provider=SQLOLEDB;مصدر البيانات=10.2.1.214;
& الكتالوج الأولي=العينات;معرف المستخدم=العينات;كلمة المرور=كلمة المرور;
& مهلة الاتصال = 15؛ مكتبة الشبكة = dbmssocn؛
'قم بتنفيذ استعلام بسيط باستخدام كائن الاتصال.
قم بتخزين مجموعة السجلات الناتجة في المتغير الخاص بنا.
تعيين rstGetString = cnnGetString.Execute(اختر * من البداية)
'الآن هذا هو المكان الذي يصبح فيه الأمر مثيرًا للاهتمام... عادةً ما نفعل ذلك
"حلقة من نوع ما حتى وصلنا إلى السجل الأخير في
"في مجموعة السجلات هذه المرة سنحصل على كافة البيانات
"في ضربة واحدة وتفريغها في سلسلة حتى نتمكن من ذلك
' قطع الاتصال بقاعدة البيانات في أسرع وقت ممكن.
strDBData = rstGetString.GetString()
'بما أنني أفعل هذا مرتين للتوضيح... فقد قمت بإعادة تحديد موضعه
في بداية RS قبل المكالمة الثانية.
rstGetString.MoveFirst
"هذه المرة أطلب إعادة كل شيء بتنسيق جدول HTML:
strDBDataTable = rstGetString.GetString(adClipString, -1, _
&</td><td>, </td></tr> & vbCrLf & <tr><td>, )
'بسبب رغبتي التي لا تشبع في الحصول على HTML أنيق، فأنا في الواقع
"قم باقتطاع السلسلة بعد ذلك، كما ترى، فإن GetString لديه فقط
'معلمة لما يدور بين الصفوف وليس منفصلاً
'واحد لما يجب وضعه بعد الصف الأخير بسبب
' الطريقة التي يتم بها إنشاء جداول HTML، وهذا يترك لنا إضافة
' <tr><td> بعد السجل الأخير يضع GetString
'المحدد بالكامل في النهاية لأنه لا يحتوي على أي شيء
' آخر لوضعه هناك وفي العديد من المواقف يعمل هذا بشكل جيد.
' مع HTML يكون الأمر غريبًا بعض الشيء بالنسبة لمعظم المطورين
"أغلق الصف وأكمل طريقك، لكنني لم أستطع أن أحمل نفسي على ذلك"
اترك الصف الإضافي... خاصة أنه سيكون له
'عدد مختلف من الخلايا عن جميع الخلايا الأخرى.
ماذا يمكنني أن أقول... هذه الأشياء تزعجني ;)
strDBDataTable = Left(strDBDataTable, Len(strDBDataTable) - Len(<tr><td>))
بعض الملاحظات حول .GetString:
"تأخذ الطريقة في الواقع ما يصل إلى 5 وسيطات اختيارية:
1. StringFormat - التنسيق الذي سيتم إرجاع الملف به
نص مجموعة السجلات adClipString هو النص الوحيد
"قيمة صالحة.
2. NumRows - عدد الصفوف التي سيتم إرجاعها
' إلى -1 للإشارة إلى كافة الصفوف.
'3. ColumnDelimiter - النص المطلوب وضعه بين الأعمدة.
'الإعدادات الافتراضية لحرف علامة التبويب
4. RowDelimiter - النص الذي سيتم وضعه بين الصفوف
'الافتراضيات إلى حرف العودة
'5. NullExpr - التعبير الذي سيتم استخدامه إذا كانت القيمة NULL
تم إرجاعها إلى سلسلة فارغة.
'أغلق مجموعة السجلات والاتصال وتخلص من الكائنات.
لاحظ أنني قادر على القيام بذلك حتى قبل أن نقلق عليه
' عرض أي من البيانات!
rstGetString.Close
تعيين rstGetString = لا شيء
cnnGetString.Close
تعيين cnnGetString = لا شيء
"اعرض جدول البيانات الذي لا أحتاج إلى القيام به حقًا
أي تنسيق منذ أن قام استدعاء GetString بكل شيء تقريبًا
بالنسبة لنا فيما يتعلق ببناء نص الجدول.
Response.Write <table border=1> & vbCrLf
الاستجابة.اكتب <tr><td>
الاستجابة.اكتب strDBDataTable
Response.Write </table> & vbCrLf
لمعلوماتك: إليك تنسيق الإخراج الذي تحصل عليه إذا كان بإمكانك الحصول على GetString
"بدون أي معلمات:
Response.اكتب vbCrLf & <p>إليك النسخة غير المنسقة:</p> & vbCrLf
الاستجابة.اكتب <pre> وvbCrLf
Response.Write strDBDataResponse.Write </pre> & vbCrLf
'هذا كل شيء يا رفاق!
%>