وظيفة تنفيذ البرنامج: عرض ترحيل البيانات في جدولي بيانات
مؤخرًا، واجهت متطلبًا نادرًا نسبيًا، وأتساءل عما إذا كنت قد واجهته أيضًا، لذلك أود مشاركته معك
: جزأين من البيانات من مواقع مختلفة يتم تعريف الجدولين الموجودين في قاعدة البيانات على أنهما قاعدتي بيانات DB1 وDB2، ويجب عرض بيانات هذين الجدولين في الجزء العلوي والسفلي من الصفحة على التوالي، ويجب أن يكون نفس رقم الترحيل سيتم استخدامها، مثل الجزء الأول من البيانات، إذا لم يكن ذلك كافيًا، فسيتم ملء الجزء الثاني من البيانات بـ
'/*code*/
<%
Set objConn1=Server.CreateObject("ADODB.Recordset")
تعيين objConn2=Server.CreateObject("ADODB.Recordset")
objConn1.Open "مزود = SQLOLEDB؛ مصدر البيانات = مضيف محلي؛ UID = sa؛ PWD = 123؛ قاعدة البيانات = DB1"
objConn2.Open "PROVIDER=SQLOLEDB;DATA SOURCE=localhost;UID=sa;PWD=123;DATABASE=DB2"
Page=CLng(Request.QueryString("Page"))
إذا كانت الصفحة = "" إذن
الصفحة=1
نهاية إذا
StrSQL1 = "اختر * من ترتيب الجدول 1 حسب وصف المعرف"
StrSQL2="اختر * من ترتيب Table2 حسب المعرف desc"
Record_count1=Clng(objConn1.execute(StrSQL1)(0)) 'الحصول على عدد السجلات في الجدول الأول
Record_count2=Clng(objConn2.execute(StrSQL2)(0))'احصل على عدد السجلات في الجدول الثاني
Record_count=record_count1+record_count2 'احصل على عدد السجلات في الجدولين وإذا
سجل_count>0 ثم
page_size1=5 'العدد الافتراضي للأجزاء المعروضة من البيانات في الجدول الأول لكل صفحة
page_size2=5 'رقم العرض الافتراضي للبيانات الجزئية في الجدول الثاني لكل صفحة
page_count1=CInt(record_count1/page_size1)
إذا (record_count1 Mod page_size1)<(page_size1/2) ثم page_count1=page_count1+1 'احصل على رقم صفحة الجزء الأول من البيانات
page_count2=CInt(record_count2/page_size2)
إذا (record_count2 Mod page_size2)<(page_size2/2) ثم page_count2=page_count2+1'احصل على رقم صفحة الجزء الثاني من البيانات
إذا Cint(page_count2)=cint(page) ثم 'افترض أن الجزء الثاني من البيانات يجب أن تكون أقل، هنا حدد ما إذا كانت الصفحة الحالية هي الصفحة الأخيرة التي تحتوي على بيانات أقل
thepageRecordcount=record_count2-(page-1)*5 'عدد البيانات المعروضة في الصفحة الأخيرة من الجزء الثاني من البيانات
page_size1=10-cint(thepageRecordcount) 'عدد العناصر المعروضة في الصفحة الأخيرة من الجزء الثاني من الجزء الأول من البيانات'
page_size1=cint(thepageRecordcount) 'احصل على عدد العناصر المعروضة في الجزء الأول من هذه الصفحة
elseif cint(page)>cint(page_count2) ثم "بعد ذلك، سيكون الجزء الأول من البيانات هو
page_size1=10"
page_size2=0
نهاية إذا
page_count=CInt(record_count/(page_size1+page_size2) 'عدد الصفحات في كلا الفئتين معًا
إذا (record_count Mod (page_size1+page_size2))<((page_size1+page_size2)/2) ثم page_count=page_count+1
إذا كانت الصفحة < 1 ثم
الصفحة=1
نهاية إذا
إذا كانت الصفحة> page_count ثم
الصفحة = page_count
نهاية إذا
خافت Pagefrom، Pageto
صفحة من = صفحة-10
Pageto=page+10
إذا كانت Pagefrom<1 إذن
الصفحة من = 1
نهاية إذا
إذا Pageto>record_count ثم
Pageto=page_count
نهاية إذا
نهاية إذا
إذا كانت الصفحة <=1 ثم "عرض الاستعلام في الصفحة الأولى".
StrSQL1="اختر الجزء العلوي "&page_size1&" * من الجدول1 "
StrSQL1=StrSQL1&"الترتيب حسب المعرف"
StrSQl2="اختر الجزء العلوي "&page_size1&" * من الجدول2 "
StrSQL2=StrSQL2&"الترتيب حسب المعرف"
آخر "عرض الاستعلام في الصفحة N
StrSQL1 = "حدد الجزء العلوي "&(Page-1)*page_size1&" المعرف من الجدول1 "
StrSQL1=StrSQL1&"الترتيب حسب وصف المعرف"
StrSQL1="حدد المعرف الأول الأول من ("&StrSQL1&") DERIVEDTBL الترتيب حسب المعرف "
'الاستجابة. الكتابة (SQL)
معرف =Trim(objConn1.execute(StrSQL1)(0))
StrSQL1="اختر الجزء العلوي "&page_size1&" * من الجدول 1"
StrSQL1=StrSQL1&" حيث المعرف<'"&id&"'"
StrSQL1=StrSQL1&"الترتيب حسب وصف المعرف"
StrSQL2 = "حدد أعلى "&(صفحة-1)*page_size2&" معرف من الجدول2 "
StrSQL2=StrSQL2&"الترتيب حسب وصف المعرف"
StrSQL2="حدد المعرف الأول من ("&StrSQL2&") DERIVEDTBL الترتيب حسب المعرف "
id =Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="اختر الجزء العلوي "&page_size2&" * من Table2 "
StrSQL2=StrSQL2&" حيث المعرف<'"&id &"'"
StrSQL2=StrSQL2&"ترتيب حسب المعرف"
End If
%>
<%
إذا سجل_العدد>0 ثم
%>
<%
تعيين Rs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
لـ n = 1 إلى page_size1
إذا كان rs1.Eof ثم قم بالخروج لـ
%>
<!--الجزء الأول من حلقات المحتوى المعروضة-->
<%
rs1.MoveNext
إذا كان rs1.EOF ثم قم بالخروج لـ
التالي
rs1.إغلاق
تعيين rs1=لا شيء
%>
<%
تعيين Rs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2,objconn2
لـ n = 1 إلى page_size2
إذا rs2.Eof ثم قم بالخروج ل
%>
<!--الجزء الثاني من حلقات المحتوى المعروضة-->
<%
rs2.MoveNext
إذا كان rs2.EOF ثم قم بالخروج لـ
التالي
rs2.إغلاق
تعيين rs2 = لا شيء
%>
<!--رقم صفحة النتيجة->
<%if page<>"1" ثم%><a href=?page=<%=Cint(page-1)%>>الصفحة السابقة</a> <%end if%>
<% 'استخدم حلقة for لكتابة اتصال رقم الصفحة
بالنسبة إلى i=Pagefrom إلى Pageto
إذا كنت = 0 ثم
أنا = 1
النهاية إذا
كنت <>Cint(page) إذن
strurl="<a href=?page="&i&"><font color=#000000>"&i&"</font></a>"
آخر
strurl="<b><font color=#ce0031>"&i&"</font></b>"
نهاية إذا
استجابة. اكتب strurl
الرد.اكتب " "
التالي
%>
<%if page_count =1 أو (page_count-Cint(page))=0 إذن
استجابة.اكتب("")
آخر
Response.اكتب "<a href=?page="&Cint(page+1)&">الصفحة التالية</a>"
نهاية إذا
%>
<!--رقم صفحة النتيجة-->
'/*نهاية الكود*/
مستواي محدود، البرنامج صعب، قد تكون هناك عيوب~أتمنى أن تنتقدوني وتصححوني~