ASP 웹 사이트를 개발할 때는 MSSQL 데이터베이스의 데이터가 클라이언트에 인쇄되어야합니다 . 많은 양의 데이터를 호출 해야하는 경우 클라이언트 스크립트에서 RDS.Dataspace (원격 데이터 서비스) 객체를 인스턴스화하고 원격 공급자를 사용하여 ASP 웹 사이트를 통해 MSSQL 데이터베이스에 액세스 할 수 있습니다 (RDS를 통해서만 설정하십시오. 기본 핸들러 또는 사용자 정의 상용 개체는 데이터베이스에 액세스 할 수 있습니다. 데이터베이스의 보안을 보장 할 수 있습니다. 코드는 다음과 같습니다.
HTML t < 머리 > Meta content = text/html; TITLE TITLE spread 클라이언트 스프레드 시트 인쇄 </제목 > </헤드 > body bgcolor = skyblue topmargin = 5 leftmargin = 20 oncontextMenu = return false rightmargin = 0 bottommargin = 0 > div div elign = center >< center > 테이블 테두리 = 1 bgcolor =#ffe4b5 스타일 = 높이 : 1px; < tr > < td elign = 중간 bgcolor =#ffffff bordercolor =#000080 > font font color =#000080 크기 = 3 > 클라이언트 스프레드 시트 인쇄 </글꼴 ont </td d </tr > </테이블 > </div > < 양식 이름 = myform > div div elign = 왼쪽 > 입력 유형 = 버튼 값 = Excel 보고서 이름 = vbscript onclick = fun_excel () 스타일 = 높이 : 32px; </div > </양식 > </바디 > </html > script 언어 = vbscript > sub fun_excel () Dim Rds, Rs, Df dim 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은 웹 서버 IP 주소입니다. strcn = ms remote; 원격 서버 = http : //192.168.0.1; handler = msdfmap.handler; data source = pubsdatabase; strsql = getAllJobs set 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) .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 종료 서브 </스크립트 ipt |
RDS Datacontrol을 인스턴스화하고 위의 코드를 수정할 수도 있습니다.
set rds = createobject (rds.dataspace) set df = rds.createobject (rdsserver.datafactory, http://192.168.0.1) '192.168.0.1은 웹 서버 IP 주소입니다. strcn = ms remote; 원격 서버 = http : //192.168.0.1; handler = msdfmap.handler; data source = pubsdatabase; strsql = getAllJobs set rs = df.query (strcn, strsql) |
수정 :
set dc = createobject (rds.datacontrol) DC.ExecuteOptions = 1 '동기식으로 실행되도록 설정하여 다음 코드를 단순화 할 수 있습니다. dc.fetchoptions = 1 DC와 함께 .server = http://192.168.0.1 .HANDLER = MSDFMAP.HANDLER .connect = data source = 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 = 작업에서 선택 *을 선택하십시오 [PubSdatabase 연결] Access = Readonly connect = pruasider = sqloledb; data source = sql server; 초기 카탈로그 = pubs; uid = userid; pwd = password |
레지스트리 hkey_local_machine/system/currentcontrolset/services/w3svc/parameters/adclaunch rdsserver.datafactory가없는 경우 추가하십시오. 이 예제는 RDS 기본 핸들러를 사용하여 데이터베이스에 액세스하지 않으면 레지스트리 hkey_local_machine/microsoft/datafactory/handlerinfo set handlerRequired = 1 to HandlerRequired = 0입니다. 데이터베이스가 RDS 핸들러 또는 사용자 정의 상용 개체를 통해 액세스하지 않으면 데이터베이스에 대한 보안 위험이 있습니다. 따라서 데이터베이스는 RDS 핸들러 또는 사용자 정의 상용 개체를 통해서만 액세스 할 수 있습니다.
다음은 VB의 사용자 정의 비즈니스 객체이며 다음 코드입니다.
'ActiveX DLL 작성, 이름 : rsget.dll, 클래스 rsreturn, method return rs public function returnrs (변형으로 strdb, 변형으로 strsql) adodb.recordset으로 'ADODB 레코드 세트를 반환합니다. 오류가 발생합니다 새로운 adodb.connection으로 Dim CN 새로운 adodb.recordset으로 dim rs Case Strdb를 선택하십시오 ydjjspdatabase 사례 strdb = ydjjsp 사례 pubsdatabase strdb = pubs 종료 선택 strsql = getAllBuy라면 strsql = buyuser에서 선택 *을 선택하십시오 Goto Nextstep 끝 If 왼쪽 (strsql, instrs (strsql, () -1) = getPubsById 악기 (strsql ,,) < = 0이면 문자열로 Dim Str str = mid (strsql, instr (strsql, () + 2, instr (strsql,)) - inst (strsql, () -3) strsql = select * job_id = '& str &'에서 작업에서 또 다른 Dim Strstart, Strend로 Strend strstart = mid (strsql, instr (strsql, () + 2, instr (strsql ,,) - Instr (strsql, () -3) strend = mid (strsql, instr (strsql ,,) + 2, inst (strsql,)) - inst (strsql ,,) -3) strsql = select * job_id> = '& strstart &'및 job_id <= '& strend &' 끝 If 끝 If Nextstep : strconnect는 문자열로 희미합니다 strconnect = provider = sqloledb; server = ddk; uid = ydj; pwd = ydj = & strdb &; CN. OPEN STRCONNECT rs.cursorlocation = 신학생 Rs. -Open strsql, CN, 채택, Adlockoptimistic, adcmdtext returnrs = rs를 설정합니다 종료 기능 ehgetRecordset : err.raise err.number, err.source, err.description 엔드 기능 |
rsget.dll을 c :/wind 웹 서버 구성 요소가 되려면 hkey_local_machine/system/currentcontrolset/services/w3svc/parameters/adclaunch에 rsget.rsreturn을 추가하십시오.
사용자 정의 비즈니스 객체를 사용하는 경우 위의 ASP 파일 코드를 수정하십시오.
set rds = createobject (rds.dataspace) set df = rds.createobject (rdsserver.datafactory, http://192.168.0.1) '192.168.0.1은 웹 서버 IP 주소입니다. strcn = ms remote; 원격 서버 = http : //192.168.0.1; handler = msdfmap.handler; data source = pubsdatabase; strsql = getAllJobs set rs = df.query (strcn, strsql) |
변경 :
set rds = createobject (rds.dataspace) set df = rds.createobject (rsget.rsreturn, http : //192.168.0.1) set rs = df.returnrs (pubsdatabase, getpubsbyid ( '2', '10')) |
또한 브라우저 측에서 다음 구성이 필요합니다.
오픈 제어판 -> 인터넷 옵션 -> 보안 -> 사용자 정의 레벨 -> 안전한 것으로 표시되지 않은 ActiveX 컨트롤을 실행하는 초기화 및 스크립트 -> 활성화