Bei der Entwicklung von ASP -Websites müssen die Daten der MSSQL -Datenbank auf dem Client gedruckt werden. . Wenn Sie eine große Datenmenge aufrufen müssen, können Sie das Objekt RDS.Dataspace (Remote Data Service) im Client -Skript instanziieren und über die ASP -Website mit einem Remote -Anbieter auf die MSSQL -Datenbank zugreifen (festgelegt auf nur über RDS eingestellt. Standard Handler oder benutzerdefinierte kommerzielle Objekte. Der Code ist wie folgt:
< html > < Kopf > < Meta-Inhalt = Text/HTML; < Titel > Client -Tabellenkalkulationsdruck </Titel > </Kopf > < Body Bgcolor = SkyBlue Topmargin = 5 linksmargin = 20 OncontextMenu = Return Falsch Rightmargin = 0 Bottommargin = 0 > < Div Align = Center >< Mitte > < TABLE BORET = 1 BGCOLOR =#FFE4B5 STYLE = Höhe: 1PX; < tr > < td Align = Middle Bgcolor =#ffffff borderColor =#000080 > < Schriftfarbe =#000080 Größe = 3 > Client -Tabellenkalkulationsdruck </Schriftart > </td > </tr > </Tabelle > </div > < Formularname = myForm > < div ausalign = links > < Eingabetyp = Schaltfläche Wert = Excel Report Name = Report Language = VBScript Onclick = Fun_excel () Style = Höhe: 32px; </div > </Form > </Körper > </html > < script langual = vbscript > sub fun_excel () Dim RDS, RS, DF Dim STRCN, STRSQL, STRRS Dim xlapp, xlbook, xlsheet1 Setzen Sie RDS = CreateObject (RDS.Dataspace) Setzen Sie df = rds.createObject (rdServer.datafactory, http://192.168.0.1) '192.168.0.1 ist die Webserver -IP -Adresse STRCN = Provider = MS Remote; Remote Server = http: //192.168.0.1; Handler = msdfmap.Handler; Data Source = PubsDatabase; STRSQL = getAlljobs Setzen Sie rs = df.query (STRCN, STRSQL) Setzen Sie xlapp = createObject (excel.application) 'Hinweis nicht: Server.CreateObject (excel.application) SET XLBOOK = XLAPP.WORKBOOKS.ADD Setzen Sie xlsheet1 = xlbook.worksheets (1) xlsheet1.cells (1,1) .Value = Job Tabelle 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 tun, während nicht 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 Schleife xlSheet1.Application.visible = true Ende sub </script > |
Sie können auch RDS DataControl instanziieren, ändern Sie einfach den obigen Code:
Setzen Sie RDS = CreateObject (RDS.Dataspace) Setzen Sie df = rds.createObject (rdServer.datafactory, http://192.168.0.1) '192.168.0.1 ist die Webserver -IP -Adresse STRCN = Provider = MS Remote; Remote Server = http: //192.168.0.1; Handler = msdfmap.Handler; Data Source = PubsDatabase; STRSQL = getAlljobs Setzen Sie rs = df.query (STRCN, STRSQL) |
Geändert zu:
Setzen Sie DC = CreateObject (rds.datacontrol) dc.executeoptions = 1 'setze auf synchron aus, was den nächsten Code vereinfachen kann dc.fetchions = 1 Mit DC .Server = http://192.168.0.1 .Handler = msdfmap.handler .Connect = Data Source = PubsDatabase; .Sql = getAlljobs .Refresh Enden mit Setzen Sie RS = DC.Recordset |
Ändern Sie die Datei msdfmap.ini (wenn in Win98, c: /windows/msdfmap.ini; if in Win2000, d: /winn/msdfmap.ini; wenn in Win2000 -Server, d: /winnnts/msdfmap.ini).
[SQL getAlljobs] SQL = Select * aus Jobs [Pubsdatabase anschließen] Access = Readonly Connect = Provider = SQLOLEDB; Data Source = SQL Server; Erstkatalog = Pubs; uid = userId; PWD = Passwort |
Öffnen Sie die Registrierung hkey_local_maachine/system/currentControlSet/dienste/w3svc/parameters/adclaunch, wenn kein rdServer.datafactory vorhanden ist, fügen Sie es bitte hinzu. In diesem Beispiel wird RDS -Standard -Handler auf die Datenbank zugreifen. Bitte beachten Sie, dass auf die Datenbank nicht über RDS -Handler oder benutzerdefinierte kommerzielle Objekte zugegriffen wird, sondern ein Sicherheitsrisiko für die Datenbank darstellt.
Das Folgende ist ein benutzerdefiniertes Geschäftsobjekt in VB mit dem folgenden Code:
'Schreiben activex dll, name: rsget.dll, enthält klassenrsreturn, method return rs Öffentliche Funktionen returnRS (strdb als Variante, STRSQL als Variante) als adodb.recordset 'Gibt ein ADODB -Datensatz zurück. Bei Fehler goto ehgetRecordset Dim CN als neue adodb.Connection Dim Rs als neuer adodb.recordset Wählen Sie Fall Strdb Fall Ydjjspdatabase strdb = ydjjsp Fall PubsDatabase STRDB = Pubs Ende auswählen Wenn Strsql = getAllBuy dann STRSQL = SELECT * von BuyUser Goto Nextstep Ende wenn Wenn Sie links (STRSQL, INSTR (STRSQL, () - 1) = GetPubsbyId dann dann Wenn instr (STRSQL,) < = 0 dann Dim STR als String STR = MID (STRSQL, INSTR (STRSQL, () + 2, INSTR (STRSQL,)) - INST (STRSQL, () - 3) STRSQL = SELECT * Aus Jobs wobei Job_id = '& str &' ' Anders Dim Strstart, String als String Strstart = MID (STRSQL, INSTR (STRSQL, () + 2, INSTR (STRSQL,,) - INST (STRSQL, () - 3) STREND = MID (STRSQL, INSTR (STRSQL,) + 2, INSTR (STRSQL,)) - INSTR (STRSQL,) - 3) strsql = select * aus Jobs wobei Job_id> = '& strstart &' und job_id <= '& Strend &' ' Ende wenn Ende wenn NEXTstep: Dim Strconnect als Zeichenfolge StrConnect = Provider = SQLOLEDB; Server = ddk; uid = ydj; pwd = ydj; cn.open strconnect Rs.CursorLocation = AduEclient Rs.open Strsql, CN, adopta Returnrs = rs festlegen Ausgangsfunktion EhgetRecordset: Err.raise err.number, err.source, err.description Endfunktion |
Kopieren Um eine Webserverkomponente zu sein, und rsget.rsreturn in der Registrierung hkey_local_maachine/system/currentControlSet/dienste/w3svc/parameter/adclaunch hinzu.
Wenn Sie ein benutzerdefiniertes Geschäftsobjekt verwenden, ändern Sie den oben genannten ASP -Dateicode:
Setzen Sie RDS = CreateObject (RDS.Dataspace) Setzen Sie df = rds.createObject (rdServer.datafactory, http://192.168.0.1) '192.168.0.1 ist die Webserver -IP -Adresse STRCN = Provider = MS Remote; Remote Server = http: //192.168.0.1; Handler = msdfmap.Handler; Data Source = PubsDatabase; STRSQL = getAlljobs Setzen Sie rs = df.query (STRCN, STRSQL) |
Wechsel zu:
Setzen Sie RDS = CreateObject (RDS.Dataspace) Setzen Sie df = rds.createObject (rsget.rsreturn, http: //192.168.0.1) Setzen Sie rs = df.returnrs (PubsDatabase, getPubsbyId ('2', '10')) |
Darüber hinaus ist auf der Browserseite die folgende Konfiguration erforderlich:
Öffnen Sie das Bedienfeld -> Internetoptionen -> Sicherheit -> Benutzerdefinierte Ebene -> Initialisieren und Skript für ActiveX -Steuerelemente, die nicht als sicher markiert sind -> aktivieren