Saat mengembangkan situs web ASP, kadang -kadang data basis data MSSQL perlu dicetak pada klien. . Jika Anda perlu menghubungi sejumlah besar data, Anda dapat membuat instantiasi objek RDS.DataSpace (Remote Data Service) dalam skrip klien, dan menggunakan penyedia jarak jauh untuk mengakses database MSSQL melalui situs web ASP (diatur hanya melalui RDS Objek Default Handler atau Kustom Komersial. Kodenya adalah sebagai berikut:
| < html > < kepala > < Meta Content = Teks/HTML; < Judul > Pencetakan spreadsheet klien </judul > </head > < body bgcolor = skyblue topmargin = 5 leftmargin = 20 oncontextMenu = return false rightmargin = 0 bottommargin = 0 > < Div Align = Center >< Center > < Batas tabel = 1 bgcolor =#ffe4b5 style = tinggi: 1px; < tr > < td align = bgcolor tengah =#ffffff bordercolor =#000080 > < Warna font =#000080 ukuran = 3 > Pencetakan spreadsheet klien </font > </td > </tr > </Tabel > </Div > < Form Name = MyForm > < Div Align = kiri > < Jenis Input = Tombol Nilai = Nama Laporan Excel = Bahasa Laporan = VBScript OnClick = Fun_Excel () Style = Tinggi: 32px; </Div > </bentuk > </tubuh > </html > < Bahasa skrip = VBScript > sub fun_excel () Red rds, rs, df redup strcn, strsql, strrs Dim Xlapp, XLBook, XLSheet1 Set RDS = CreateObject (RDS.DATASPACE) Set DF = RDS.CreateObject (RDSServer.DataFactory, http://192.168.0.1) '192.168.0.1 adalah alamat IP server web Web Alamat IP Server Web strcn = penyedia = ms jarak jauh; server jarak jauh = http: //192.168.0.1; handler = msdfmap.handler; sumber data = pubsdatabase; strsql = getAllJobs Set RS = df.query (strcn, strsql) Setel xlapp = createObject (excel.application) 'note not: server.createObject (excel.application) Setel xlbook = xlapp.workbooks.add Setel xlsheet1 = xlbook.worksheets (1) xlsheet1.cells (1,1) .value = tabel pekerjaan 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 lakukan sementara tidak 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 lingkaran xlsheet1.application.visible = true akhir sub </skrip > |
Anda juga dapat instantiate RDS DataControl, cukup ubah kode di atas:
| Set RDS = CreateObject (RDS.DATASPACE) Set DF = RDS.CreateObject (RDSServer.DataFactory, http://192.168.0.1) '192.168.0.1 adalah alamat IP server web Web Alamat IP Server Web strcn = penyedia = ms jarak jauh; server jarak jauh = http: //192.168.0.1; handler = msdfmap.handler; sumber data = pubsdatabase; strsql = getAllJobs Set RS = df.query (strcn, strsql) |
Dimodifikasi menjadi:
| Set DC = CreateObject (RDS.DataControl) dc.executeOptions = 1 'diatur untuk mengeksekusi secara serempak, yang dapat menyederhanakan kode berikutnya dc.fetchoptions = 1 Dengan DC .Server = http://192.168.0.1 .Handler = msdfmap.handler .Connect = sumber data = pubsdatabase; .Sql = getAllJobs .Menyegarkan Berakhir dengan Atur RS = DC.Recordset |
Ubah file msdfmap.ini (jika di Win98, c: /windows/msdfmap.ini; jika di Win2000, d: /winnt/msdfmap.ini; jika dalam server Win2000, d: /winnts/msdfmap.ini).
| [sql getalljobs] SQL = Pilih * dari Jobs [Connect PubsDatabase] Access = readonly Connect = penyedia = sqloledb; sumber data = server sql; katalog awal = pubs; uid = userid; pwd = kata sandi |
Buka registri hkey_local_machine/system/currentControlset/services/w3svc/parameter/adclaunch jika tidak ada rdsserver.datafactory, harap tambahkan. Contoh ini menggunakan RDS Default Handler untuk mengakses database. Harap dicatat bahwa jika database tidak diakses melalui RDS Handler atau objek komersial khusus, itu akan menimbulkan risiko keamanan ke database.
Berikut ini adalah objek bisnis khusus di VB, dengan kode berikut:
| 'Menulis Activex Dll, Nama: rsget.dll, berisi kelas rsreturn, metode return rs Returnrs fungsi publik (strdb sebagai varian, strsql sebagai varian) sebagai adodb.recordset 'Mengembalikan rekaman ADODB. Pada kesalahan goto ehgetrecordset Redup cn sebagai adodb.connection baru Redup sebagai adodb.recordset baru Pilih case strdb Kasus ydjjspdatabase strdb = ydjjsp Pubsdatabase kasus strdb = pub Akhiri Pilih Jika strsql = getAllbuy maka strsql = pilih * dari buyuser Goto nextstep Akhiri jika Jika kiri (strsql, instr (strsql, () - 1) = getPubsbyId kemudian If instr (strsql ,,) < = 0 lalu Redup str as string str = mid (strsql, instr instr (strsql, () + 2, instr (strsql,)) - instr (strsql, () - 3) strsql = pilih * dari pekerjaan di mana job_id = '& str &' Kalau tidak Redup strstart, berjalan sebagai string strStart = mid (strsql, instr (strsql, () + 2, instr (strsql,) - instruct (strsql, () - 3) strend = mid (strsql, instr (strsql,) + 2, instr (strsql,)) - instr (strsql,) - 3) strsql = pilih * dari pekerjaan di mana job_id> = '& strstart &' dan job_id <= '& strend &' Akhiri jika Akhiri jika NextStep: Redup strconnect sebagai string strconnect = penyedia = sqloledb; server = ddk; uid = ydj; pwd = ydj; database = & strdb &; cn.open strconnect rs.cursorlocation = aduseclient rs.open strsql, cn, adoptatic, adlockoptimistic, adcmdtext Atur returnrs = rs Fungsi keluar EhgetRecordset: Err.raise err.number, err.source, err.description Fungsi akhir |
Salin rsget.dll ke c:/windows atau d:/winnt, start/run, masukkan regsvr32.exe c: /windows/rsget.dll atau regsvr32.exe d: /winnt/rsget.dll, tekan tombol OK untuk mendaftar Untuk menjadi komponen server web, dan menambahkan rsget.rsreturn di registri hkey_local_machine/system/currentControlset/services/w3svc/parameter/adclaunch.
Jika Anda menggunakan objek bisnis khusus, modifikasi kode file ASP di atas:
| Set RDS = CreateObject (RDS.DATASPACE) Set DF = RDS.CreateObject (RDSServer.DataFactory, http://192.168.0.1) '192.168.0.1 adalah alamat IP server web Web Alamat IP Server Web strcn = penyedia = ms jarak jauh; server jarak jauh = http: //192.168.0.1; handler = msdfmap.handler; sumber data = pubsdatabase; strsql = getAllJobs Set RS = df.query (strcn, strsql) |
Ubah ke:
| Set RDS = CreateObject (RDS.DATASPACE) Setel df = rds.createObject (rsget.rsreturn, http: //192.168.0.1) Set RS = df.Returnrs (pubsdatabase, getPubsbyId ('2', '10')) |
Selain itu, konfigurasi berikut diperlukan di sisi browser:
Panel Kontrol Buka -> Opsi Internet -> Keamanan -> Level Kustom -> Inisialisasi dan Skrip Berjalan untuk Kontrol ActiveX yang tidak ditandai sebagai aman -> Aktifkan