عند تطوير مواقع ASP ، يجب طباعة بيانات MSSQL في بعض الأحيان. . إذا كنت بحاجة إلى استدعاء كمية كبيرة من البيانات ، فيمكنك إنشاء إنشاء كائن RDS.Dataspace (خدمة البيانات عن بُعد) في البرنامج النصي العميل ، واستخدام مزود عن بُعد للوصول إلى قاعدة بيانات MSSQL من خلال موقع ASP (تعيين ليكون فقط من خلال RDS فقط يمكن للمعالج الافتراضي أو الكائنات التجارية المخصصة الوصول إلى قاعدة البيانات. الرمز كما يلي:
| < HTML > < الرأس > < محتوى meta = text/html ؛ < العنوان > طباعة جدول بيانات العميل </العنوان > </head > < bgcolor body = skyblue topmargin = 5 leftMargin = 20 onContextMenu = return false rightmargin = 0 bottommargin = 0 > < div محاذاة = المركز >< المركز > < الجدول الحدود = 1 bgColor =#ffe4b5 النمط = الارتفاع: 1px ؛ < tr > < td align = middle bgcolor =#ffffff borderColor =#000080 > < Font Color =#000080 Size = 3 > طباعة جدول بيانات العميل </الخط > </td > </tr > </الجدول > </div > < اسم النموذج = myform > < div محاذاة = اليسار > < نوع الإدخال = قيمة الزر = اسم التقرير excel = لغة التقرير = vbscript onClick = fun_excel () نمط = الارتفاع: 32px ؛ </div > </form > </الجسم > </html > < لغة البرنامج النصي = vbscript > sub fun_excel () RDS DIM ، RS ، DF Dim Strcn ، Strsql ، strrs Dim Xlapp ، XLBook ، XLSheet1 تعيين rds = createObject (rds.dataspace) set df = rds.createBject (rdsserver.datafactory ، http://192.168.0.1) '192.168.0.1 هو عنوان IP لخادم الويب STRCN = Provider = MS REMOTE ؛ خادم REMOTE = http: //192.168.0.1 ؛ معالج = msdfmap.handler ؛ مصدر البيانات = pubsdatabase ؛ strsql = getalljobs تعيين rs = df.query (strcn ، strsql) set xlapp = createObject (excel.application) 'ملاحظة لا: server.createObject (excel.application) تعيين xlbook = xlapp.workbooks.add تعيين XLSheet1 = XLBook.Worksheets (1) xlsheet1.cells (1،1). القيمة = جدول الوظائف xlsheet1.range (A1: D1) .merge xlsheet1.cells (2،1) .value = Job_id xlsheet1.cells (2،2) .value = Job_desc xlsheet1.cells (2،3) .value = max_lvl xlsheet1.cells (2،4) .value = min_lvl CNT = 3 افعل بينما لا rs.eof xlsheet1.cells (cnt ، 1) .value = rs (job_id) xlsheet1.cells (cnt ، 2) .value = rs (job_desc) xlsheet1.cells (cnt ، 3) .value = rs (max_lvl) xlsheet1.cells (cnt ، 4) .value = rs (min_lvl) Rs.Movenext cnt = cint (cnt) + 1 حلقة xlsheet1.Application.visible = صحيح نهاية الفرعية </السيناريو > |
يمكنك أيضًا إنشاء مثيل لـ RDS Datacontrol ، فقط قم بتعديل الكود أعلاه:
| تعيين rds = createObject (rds.dataspace) set df = rds.createBject (rdsserver.datafactory ، http://192.168.0.1) '192.168.0.1 هو عنوان IP لخادم الويب STRCN = Provider = MS REMOTE ؛ خادم REMOTE = http: //192.168.0.1 ؛ معالج = msdfmap.handler ؛ مصدر البيانات = pubsdatabase ؛ strsql = getalljobs تعيين rs = df.query (strcn ، strsql) |
تم تعديله إلى:
| تعيين dc = createObject (rds.datacontrol) dc.executeoptions = 1 'تعيين لتنفيذ متزامن ، والتي يمكن أن تبسيط الكود التالي dc.fetchOptions = 1 مع العاصمة .server = http://192.168.0.1 .handler = msdfmap.handler .connect = مصدر البيانات = pubSdatabase ؛ .sql = getalljobs .ينعش تنتهي تعيين rs = dc.recordset |
قم بتعديل الملف msdfmap.ini (إذا كان في Win98 ، c: /windows/msdfmap.ini ؛ إذا في win2000 ، d: /winnt/msdfmap.ini ؛ إذا في خادم Win2000 ، d: /winnts/msdfmap.ini).
| [SQL getalljobs] SQL = حدد * من الوظائف [Connect PubSdatabase] الوصول = readonly connect = provider = sqloledb ؛ data source = sql server ؛ catalog الأولي = pubs ؛ uid = userId ؛ pwd = كلمة المرور |
افتح التسجيل hkey_local_machine/system/currentControlset/services/w3svc/parameters/adclaunch إذا لم يكن هناك rdsserver.datafactory ، يرجى إضافته. يستخدم هذا المثال معالج RDS الافتراضي للوصول إلى قاعدة البيانات. يرجى ملاحظة أنه إذا لم يتم الوصول إلى قاعدة البيانات من خلال معالج RDS أو الكائنات التجارية المخصصة ، فستشكل مخاطر أمان على قاعدة البيانات.
فيما يلي كائن عمل مخصص في VB ، مع الكود التالي:
| 'كتابة ActiveX DLL ، الاسم: rsget.dll ، يحتوي على فئة rsreturn ، طريقة إرجاع RS عائدات الوظائف العامة (StrDB كمتغير ، STRSQL كمتغير) مثل ADODB.RecordSet إرجاع مجموعة سجل ADODB. على خطأ goto ehgetRecordset قاتمة CN كـ ADODB.CONNECTION جديد DIM RS كـ ADODB.RecordSet جديد حدد Case Strdb حالة ydjjspdatabase strdb = ydjjsp CASE PUBSDATABASE Strdb = الحانات نهاية الاختيار إذا strsql = getallbuy ثم strsql = حدد * من buyuser Goto NextStep إنهاء إذا إذا تركت (strsql ، instr (strsql ، () - 1) = getPubsbyid ثم إذا Dim Str كسلسلة str = mid (strsql ، instr (strsql ، () + 2 ، instr (strsql ،)) - instr (strsql ، () - 3) strsql = SELECT * من الوظائف حيث JOB_ID = '& str &' آخر قاتمة ستارستارت ، ستريند كسلسلة strstart = mid (strsql ، instr (strsql ، () + 2 ، instr (strsql ،،) - instr (strsql ، () - 3) strend = mid (strsql ، instr (strsql ،،) + 2 ، instr (strsql ،)) - instr (strsql ،،) - 3) strsql = select * from froms where job_id> = '& strstart &' and job_id <= '& strend &' إنهاء إذا إنهاء إذا NextStep: قاتمة strconnect كسلسلة strConnect = Provider = sqloledb ؛ server = ddk ؛ uid = ydj ؛ pwd = ydj ؛ Cn.Open strconnect Rs.CursorLocation = aduseclient Rs.Open Strsql ، CN ، AdopeenStatic ، Adlockoptimistic ، ADCMDText تعيين returnrs = روبية وظيفة الخروج ehgetRecordset: err.raise err.number ، err.source ، err.description وظيفة نهاية |
نسخ rsget.dll إلى c:/windows أو d:/winnt ، ابدأ/تشغيل ، أدخل regsvr32.exe c: /windows/rsget.dll أو regsvr32.exe d: /winnt/rsget.dll لتكون مكون خادم ويب ، وأضف rsget.rsreturn في التسجيل hkey_local_machine/system/currentControlset/services/w3svc/parameters/adclaunch.
إذا كنت تستخدم كائن عمل مخصص ، فقم بتعديل رمز ملف ASP أعلاه:
| تعيين rds = createObject (rds.dataspace) set df = rds.createBject (rdsserver.datafactory ، http://192.168.0.1) '192.168.0.1 هو عنوان IP لخادم الويب STRCN = Provider = MS REMOTE ؛ خادم REMOTE = http: //192.168.0.1 ؛ معالج = msdfmap.handler ؛ مصدر البيانات = pubsdatabase ؛ strsql = getalljobs تعيين rs = df.query (strcn ، strsql) |
التغيير إلى:
| تعيين rds = createObject (rds.dataspace) set df = rds.createBject (rsget.rsreturn ، http: //192.168.0.1) set rs = df.returnrs (pubsdatabase ، getPubsbyid ('2' ، '10')) |
بالإضافة إلى ذلك ، فإن التكوين التالي مطلوب على جانب المتصفح:
فتح لوحة التحكم -> خيارات الإنترنت -> الأمان -> مستوى مخصص -> تهيئة وبين البرنامج النصي لتشغيل عناصر تحكم ActiveX التي لا يتم تمييزها على أنها آمنة -> تنشيط