เมื่อพัฒนาเว็บไซต์ ASP บางครั้งข้อมูลของฐานข้อมูล MSSQL จะต้องพิมพ์บนไคลเอนต์ . หากคุณต้องการโทรหาข้อมูลจำนวนมากคุณสามารถยกตัวอย่างวัตถุ RDS.Dataspace (บริการข้อมูลระยะไกล) ในสคริปต์ไคลเอนต์และใช้ผู้ให้บริการระยะไกลเพื่อเข้าถึงฐานข้อมูล MSSQL ผ่านเว็บไซต์ ASP (ตั้งค่าเป็น RDS เท่านั้น ตัวจัดการเริ่มต้นหรือวัตถุเชิงพาณิชย์ที่กำหนดเอง รหัสมีดังนี้:
<html> <หัว> <meta content = text/html; <ชื่อเรื่อง> การพิมพ์สเปรดชีตไคลเอ็นต์ </ชื่อ> </หัว> <Body BgColor = SkyBlue topMargin = 5 leftMargin = 20 onContextMenu = return false rightmargin = 0 botommargin = 0>> <div align = ศูนย์ >< กลาง> border Border = 1 bgcolor =#ffe4b5 style = ความสูง: 1px; <tr> <td align = middle bgcolor =#ffffff bordercolor =#000080>> <สีตัวอักษร =#000080 size = 3> การพิมพ์สเปรดชีตไคลเอ็นต์ </ตัวอักษร> </td> </tr> </ตาราง> </div> <ชื่อฟอร์ม = myform> <div align = ซ้าย> <ประเภทอินพุต = ค่าปุ่ม = excel report name = report language = vbscript onclick = fun_excel () style = ความสูง: 32px; </div> </ฟอร์ม> </ร่างกาย> </html> <ภาษาสคริปต์ = vbscript> sub fun_excel () Dim RDS, RS, DF Dim strcn, strsql, strrs Dim Xlapp, XLBook, XLSheet1 ตั้งค่า rds = createObject (rds.dataspace) ตั้งค่า df = rds.createObject (rdsserver.datafactory, http://192.168.0.1) '192.168.0.1 เป็นที่อยู่เว็บเซิร์ฟเวอร์ IP strcn = ผู้ให้บริการ = MS Remote; Remote Server = http: //192.168.0.1; handler = msdfmap.handler; แหล่งข้อมูล = pubsdatabase; strsql = getAllJobs ตั้งค่า rs = df.Query (strcn, strsql) ตั้งค่า xlapp = createObject (excel.application) 'หมายเหตุไม่ได้: server.createObject (excel.application) ตั้งค่า xlbook = xlapp.workbooks.add ตั้งค่า xlsheet1 = xlbook.worksheets (1) xlsheet1.cells (1,1) .Value = ตารางงาน 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 = true สิ้นสุดย่อย </สคริปต์> |
นอกจากนี้คุณยังสามารถสร้างอินสแตนซ์ RDS DataControl เพียงแค่แก้ไขรหัสด้านบน:
ตั้งค่า rds = createObject (rds.dataspace) ตั้งค่า df = rds.createObject (rdsserver.datafactory, http://192.168.0.1) '192.168.0.1 เป็นที่อยู่เว็บเซิร์ฟเวอร์ IP strcn = ผู้ให้บริการ = MS Remote; Remote Server = http: //192.168.0.1; handler = msdfmap.handler; แหล่งข้อมูล = pubsdatabase; strsql = getAllJobs ตั้งค่า rs = df.Query (strcn, strsql) |
แก้ไขเป็น:
ตั้งค่า dc = createObject (rds.datacontrol) dc.executeOptions = 1 'ตั้งค่าเพื่อดำเนินการซิงโครนัสซึ่งสามารถทำให้รหัสถัดไปง่ายขึ้น dc.fetchoptions = 1 กับ DC .Server = http://192.168.0.1 .handler = msdfmap.handler .Connect = แหล่งข้อมูล = pubsdatabase; .SQL = getAllJobs . refresh จบลงด้วย ตั้งค่า rs = dc.recordset |
แก้ไขไฟล์ msdfmap.ini (ถ้าใน win98, c: /windows/msdfmap.ini; ถ้าใน win2000, d: /winnt/msdfmap.ini; ถ้าอยู่ในเซิร์ฟเวอร์ win2000, d: /winnts/msdfmap.ini)
[SQL GetAlljobs] sql = เลือก * จากงาน [เชื่อมต่อ Pubsdatabase] การเข้าถึง = อ่านอย่างเดียว Connect = Provider = SQLOLEDB; แหล่งข้อมูล = SQL Server; แคตตาล็อกเริ่มต้น = ผับ; uid = userId; pwd = รหัสผ่าน |
เปิด Registry HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTOLSET/SERVICES/W3SVC/PARAMETERS/ADCLAUNCH หากไม่มี RDSSERVER.DATAFACTORY โปรดเพิ่ม ตัวอย่างนี้ใช้ตัวจัดการเริ่มต้น RDS เพื่อเข้าถึงฐานข้อมูล โปรดทราบว่าหากฐานข้อมูลไม่ได้รับการเข้าถึงผ่าน RDS Handler หรือวัตถุเชิงพาณิชย์ที่กำหนดเองมันจะมีความเสี่ยงด้านความปลอดภัยต่อฐานข้อมูล
ต่อไปนี้เป็นวัตถุธุรกิจที่กำหนดเองใน VB ด้วยรหัสต่อไปนี้:
'การเขียน Activex dll, ชื่อ: rsget.dll, มีคลาส rsreturn, วิธีการส่งคืน rs ฟังก์ชั่นสาธารณะ returnrs (strdb เป็นตัวแปร, strsql เป็นตัวแปร) เป็น adodb.recordset 'ส่งคืน AdoDB Recordset เกี่ยวกับข้อผิดพลาด goto ehgetRecordset Dim CN เป็น AdoDB.Connection ใหม่ Dim Rs เป็น adodb.recordset ใหม่ เลือกกรณี strdb กรณี ydjjspdatabase strdb = ydjjsp Case Pubsdatabase strdb = ผับ สิ้นสุดเลือก ถ้า strsql = getallbuy แล้ว strsql = เลือก * จากผู้ซื้อ goto nextstep สิ้นสุดถ้า ถ้าเหลือ (strsql, instr (strsql, () - 1) = getPubsById แล้ว ถ้า instr (strsql ,,) <= 0 แล้ว Dim Str เป็นสตริง str = mid (strsql, instr (strsql, () + 2, instr (strsql,)) - instr (strsql, () - 3) strsql = เลือก * จากงานที่ job_id = '& str &' อื่น Dim Strstart, Strend เป็นสตริง strstart = mid (strsql, instr (strsql, () + 2, instr (strsql ,,) - instr (strsql, () - 3) Strend = mid (strsql, instr (strsql ,,) + 2, instr (strsql,)) - instr (strsql ,,) - 3) strsql = เลือก * จากงานที่ job_id> = '& strstart &' และ job_id <= '& Strend &' สิ้นสุดถ้า สิ้นสุดถ้า Nextstep: Dim strconnect เป็นสตริง stronnect = ผู้ให้บริการ = sqloledb; เซิร์ฟเวอร์ = ddk; uid = ydj; pwd = ydj; cn.open strconnect Rs.CursorLocation = aduseclient Rs.Open Strsql, CN, Adopenstatic, Adlockoptimistic, Adcmdtext ตั้งค่า returnrs = rs ฟังก์ชั่นออก 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/พารามิเตอร์/adclaunch
หากคุณใช้วัตถุธุรกิจที่กำหนดเองให้แก้ไขรหัสไฟล์ ASP ด้านบน:
ตั้งค่า rds = createObject (rds.dataspace) ตั้งค่า df = rds.createObject (rdsserver.datafactory, http://192.168.0.1) '192.168.0.1 เป็นที่อยู่เว็บเซิร์ฟเวอร์ IP strcn = ผู้ให้บริการ = MS Remote; Remote Server = http: //192.168.0.1; handler = msdfmap.handler; แหล่งข้อมูล = pubsdatabase; strsql = getAllJobs ตั้งค่า rs = df.Query (strcn, strsql) |
เปลี่ยนเป็น:
ตั้งค่า rds = createObject (rds.dataspace) ตั้งค่า df = rds.createObject (rsget.rsreturn, http: //192.168.0.1) ตั้งค่า rs = df.returnrs (pubsdatabase, getPubsById ('2', '10')) |
นอกจากนี้จำเป็นต้องมีการกำหนดค่าต่อไปนี้ที่ด้านเบราว์เซอร์:
เปิดแผงควบคุม -> ตัวเลือกอินเทอร์เน็ต -> ความปลอดภัย -> ระดับที่กำหนดเอง -> เริ่มต้นและเริ่มต้นและใช้สคริปต์สำหรับการควบคุม ActiveX ที่ไม่ได้ทำเครื่องหมายว่าปลอดภัย -> เปิดใช้งาน